diff options
author | Philipp Maier <pmaier@sysmocom.de> | 2017-05-29 18:09:25 +0200 |
---|---|---|
committer | Philipp Maier <pmaier@sysmocom.de> | 2017-05-29 18:18:31 +0200 |
commit | 3f97e4b1fcdc788345ab7740bd4fb8a3d73f5526 (patch) | |
tree | ed9ad93cb69810eda98b48316e2c92cf4fb7b14b | |
parent | 538475259cb7c86225c2e1f582ef5f64c69d20ca (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.c | 9 |
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) { |