From 3f97e4b1fcdc788345ab7740bd4fb8a3d73f5526 Mon Sep 17 00:00:00 2001 From: Philipp Maier Date: Mon, 29 May 2017 18:09:25 +0200 Subject: 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 --- src/osmo-bts-sysmo/l1_if.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src/osmo-bts-sysmo') 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) { -- cgit v1.2.3