aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhilipp Maier <pmaier@sysmocom.de>2017-05-29 18:09:25 +0200
committerPhilipp Maier <pmaier@sysmocom.de>2017-05-29 18:18:31 +0200
commit3f97e4b1fcdc788345ab7740bd4fb8a3d73f5526 (patch)
treeed9ad93cb69810eda98b48316e2c92cf4fb7b14b
parent538475259cb7c86225c2e1f582ef5f64c69d20ca (diff)
osmo-bts-sysmo: Include frame number in MEAS IND
l1_if.c does not generate struct osmo_phsap_prim l1sap properly. The (logical) frame number is not included in this struct. This renders the logic that processes the reported measurements non functional, since the logic (see measurement.c) is no longer able to detect the end of the measurement period. This commit fixes the problem by adding the missing frame number to the l1sap structure. Change-Id: I2bab40c30d727395eb3096026810917407419cd7
-rw-r--r--src/osmo-bts-sysmo/l1_if.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/osmo-bts-sysmo/l1_if.c b/src/osmo-bts-sysmo/l1_if.c
index ea7fc93b..8820f083 100644
--- a/src/osmo-bts-sysmo/l1_if.c
+++ b/src/osmo-bts-sysmo/l1_if.c
@@ -897,7 +897,7 @@ static void dump_meas_res(int ll, GsmL1_MeasParam_t *m)
}
static int process_meas_res(struct gsm_bts_trx *trx, uint8_t chan_nr,
- GsmL1_MeasParam_t *m)
+ uint32_t fn, GsmL1_MeasParam_t *m)
{
struct osmo_phsap_prim l1sap;
memset(&l1sap, 0, sizeof(l1sap));
@@ -909,6 +909,11 @@ static int process_meas_res(struct gsm_bts_trx *trx, uint8_t chan_nr,
l1sap.u.info.u.meas_ind.ber10k = (unsigned int) (m->fBer * 100);
l1sap.u.info.u.meas_ind.inv_rssi = (uint8_t) (m->fRssi * -1);
+ /* The MEAS IND data structure expects a logical frame number. On the
+ * physical radio link, the uplink is delayed by 3 timeslots, we need
+ * to compensate for that delay. */
+ l1sap.u.info.u.meas_ind.fn = fn + 3;
+
/* l1sap wants to take msgb ownership. However, as there is no
* msg, it will msgb_free(l1sap.oph.msg == NULL) */
return l1sap_up(trx, &l1sap);
@@ -936,7 +941,7 @@ static int handle_ph_data_ind(struct femtol1_hdl *fl1, GsmL1_PhDataInd_t *data_i
fn = data_ind->u32Fn;
link_id = (data_ind->sapi == GsmL1_Sapi_Sacch) ? LID_SACCH : LID_DEDIC;
- process_meas_res(trx, chan_nr, &data_ind->measParam);
+ process_meas_res(trx, chan_nr, fn, &data_ind->measParam);
if (data_ind->measParam.fLinkQuality < btsb->min_qual_norm
&& data_ind->msgUnitParam.u8Size != 0) {