gsm_lchan_interf_meas_calc_avg(): adapt to the order of boundaries

The order of interference level boundaries is not clearly defined by
3GPP, so we should support both ascending and descending variants.

Change-Id: I88d841d8d835bde8392c7b606b28c9070b7adc6e
Related: SYS#5313
This commit is contained in:
Neels Hofmeyr 2021-11-12 03:04:35 +03:00 committed by Vadim Yanitskiy
parent efc0d5bf57
commit f422873087
1 changed files with 12 additions and 3 deletions

View File

@ -468,9 +468,18 @@ void gsm_lchan_interf_meas_calc_avg(struct gsm_lchan *lchan)
* boundaries (0, X1, ... X5). It's not clear how to handle values
* exceeding the outer boundaries (0 or X5), because bands 0 and 6 do
* not exist (sigh). Let's map such values to closest bands 1 and 5. */
for (b = 1; b < ARRAY_SIZE(bts->interference.boundary) - 1; b++) {
if (meas_avg >= bts->interference.boundary[b])
break; /* Current 'b' is the band value */
if (bts->interference.boundary[0] < bts->interference.boundary[5]) {
/* Ascending order (band=1 indicates lowest interference) */
for (b = 1; b < ARRAY_SIZE(bts->interference.boundary) - 1; b++) {
if (meas_avg < bts->interference.boundary[b])
break; /* Current 'b' is the band value */
}
} else {
/* Descending order (band=1 indicates highest interference) */
for (b = 1; b < ARRAY_SIZE(bts->interference.boundary) - 1; b++) {
if (meas_avg >= bts->interference.boundary[b])
break; /* Current 'b' is the band value */
}
}
LOGPLCHAN(lchan, DL1C, LOGL_DEBUG,