aboutsummaryrefslogtreecommitdiffstats
path: root/src/common/rsl.c
diff options
context:
space:
mode:
authorVadim Yanitskiy <vyanitskiy@sysmocom.de>2021-10-07 18:32:23 +0600
committerfixeria <vyanitskiy@sysmocom.de>2021-10-08 10:48:51 +0000
commite73516ed00fb3ba34de3dc363c885125585e3381 (patch)
treebee237218de8693a0c76fe85b6f11b2fe38b7af3 /src/common/rsl.c
parent7726d2332713023a1e7b58bd5837e20160b029df (diff)
rsl_tx_rf_res(): separate interference AVG / band calculation
It's cleaner from the architectural point of view to have the interference measurements processed in a separate function. Change-Id: I3981608e01a50585359cad673c38c8a305027d30 Related: SYS#5313
Diffstat (limited to 'src/common/rsl.c')
-rw-r--r--src/common/rsl.c20
1 files changed, 8 insertions, 12 deletions
diff --git a/src/common/rsl.c b/src/common/rsl.c
index 229a2afc..e4531aa1 100644
--- a/src/common/rsl.c
+++ b/src/common/rsl.c
@@ -440,29 +440,25 @@ int rsl_tx_rf_res(struct gsm_bts_trx *trx)
uint8_t *len = msgb_tl_put(nmsg, RSL_IE_RESOURCE_INFO);
for (tn = 0; tn < ARRAY_SIZE(trx->ts); tn++) {
- struct gsm_bts_trx_ts *ts = &trx->ts[tn];
+ const struct gsm_bts_trx_ts *ts = &trx->ts[tn];
for (ln = 0; ln < ARRAY_SIZE(ts->lchan); ln++) {
- struct gsm_lchan *lchan = &ts->lchan[ln];
+ const struct gsm_lchan *lchan = &ts->lchan[ln];
+
+ /* No average interference value => no band */
+ if (lchan->meas.interf_meas_avg_dbm == 0)
+ continue;
/* We're not interested in active lchans */
- if (lchan->state == LCHAN_S_ACTIVE) {
- /* Avoid potential buffer overflow */
- lchan->meas.interf_meas_num = 0;
+ if (lchan->state == LCHAN_S_ACTIVE)
continue;
- }
/* Only for GSM_LCHAN_{SDCCH,TCH_F,TCH_H} */
if (!lchan_is_dcch(lchan))
continue;
- /* Average all collected samples */
- int band = gsm_lchan_interf_meas_calc_band(lchan);
- if (band < 0)
- continue;
-
msgb_v_put(nmsg, gsm_lchan2chan_nr_rsl(lchan));
- msgb_v_put(nmsg, (band & 0x07) << 5);
+ msgb_v_put(nmsg, (lchan->meas.interf_band & 0x07) << 5);
}
}