aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gprs_rlcmac.h2
-rw-r--r--src/gprs_rlcmac_meas.cpp5
-rw-r--r--src/pdch.cpp21
3 files changed, 15 insertions, 13 deletions
diff --git a/src/gprs_rlcmac.h b/src/gprs_rlcmac.h
index 6587c400..3d5ea996 100644
--- a/src/gprs_rlcmac.h
+++ b/src/gprs_rlcmac.h
@@ -75,7 +75,7 @@ int gprs_rlcmac_received_lost(struct gprs_rlcmac_dl_tbf *tbf, uint16_t received,
int gprs_rlcmac_lost_rep(struct gprs_rlcmac_dl_tbf *tbf);
-int gprs_rlcmac_meas_rep(Packet_Measurement_Report_t *pmr);
+int gprs_rlcmac_meas_rep(GprsMs *ms, Packet_Measurement_Report_t *pmr);
int gprs_rlcmac_rssi(struct gprs_rlcmac_tbf *tbf, int8_t rssi);
diff --git a/src/gprs_rlcmac_meas.cpp b/src/gprs_rlcmac_meas.cpp
index e4df559e..b9a324fb 100644
--- a/src/gprs_rlcmac_meas.cpp
+++ b/src/gprs_rlcmac_meas.cpp
@@ -37,14 +37,13 @@ extern "C" {
/* TODO: trigger the measurement report from the pollcontroller and use it for flow control */
/* received Measurement Report */
-int gprs_rlcmac_meas_rep(Packet_Measurement_Report_t *pmr)
+int gprs_rlcmac_meas_rep(GprsMs *ms, Packet_Measurement_Report_t *pmr)
{
NC_Measurement_Report_t *ncr;
NC_Measurements_t *nc;
int i;
- LOGP(DRLCMACMEAS, LOGL_INFO, "Measurement Report of TLLI=0x%08x:",
- pmr->TLLI);
+ LOGPMS(ms, DRLCMACMEAS, LOGL_INFO, "Rx Measurement Report:");
switch (pmr->UnionType) {
case 0:
diff --git a/src/pdch.cpp b/src/pdch.cpp
index fbbeddc5..7986373f 100644
--- a/src/pdch.cpp
+++ b/src/pdch.cpp
@@ -663,18 +663,21 @@ void gprs_rlcmac_pdch::rcv_resource_request(Packet_Resource_Request_t *request,
void gprs_rlcmac_pdch::rcv_measurement_report(Packet_Measurement_Report_t *report, uint32_t fn)
{
- struct gprs_rlcmac_sba *sba = bts()->sba()->find(this, fn);
- if (sba) {
- GprsMs *ms = bts()->ms_store().get_ms(report->TLLI);
- if (!ms)
- LOGP(DRLCMAC, LOGL_NOTICE, "MS send measurement "
- "but TLLI 0x%08x is unknown\n", report->TLLI);
- else
- ms->set_ta(sba->ta);
+ struct gprs_rlcmac_sba *sba;
+ GprsMs *ms;
+ ms = bts()->ms_by_tlli(report->TLLI);
+ if (!ms) {
+ LOGP(DRLCMAC, LOGL_NOTICE, "MS send measurement "
+ "but TLLI 0x%08x is unknown\n", report->TLLI);
+ ms = bts()->ms_alloc(0, 0);
+ ms->set_tlli(report->TLLI);
+ }
+ if ((sba = bts()->sba()->find(this, fn))) {
+ ms->set_ta(sba->ta);
bts()->sba()->free_sba(sba);
}
- gprs_rlcmac_meas_rep(report);
+ gprs_rlcmac_meas_rep(ms, report);
}
/* Received Uplink RLC control block. */