diff options
author | Vadim Yanitskiy <vyanitskiy@sysmocom.de> | 2020-12-24 00:54:41 +0100 |
---|---|---|
committer | laforge <laforge@osmocom.org> | 2020-12-27 12:56:34 +0000 |
commit | f4674e3f7a5ee8f86003890bf662364ae3c71357 (patch) | |
tree | d2db257ff7e1014dc03625070812587c33887bb8 | |
parent | 06b8a78e61425b7f05ae3dbd3c0b3166714a9eb9 (diff) |
power_control: fix swapped lower/upper RxQual threshold values
According to 3GPP TS 45.008, section A.3.2.1:
c) Comparison of RXQUAL_XX with L_RXQUAL_XX_P (XX = DL or UL):
Increase XX_TXPWR if at least P3 averaged values out of N3
averaged values are greater (worse quality) than L_RXQUAL_XX_P.
d) Comparison of RXQUAL_XX with U_RXQUAL_XX_P (XX = DL or UL):
Decrease XX_TXPWR if at least P4 averaged values out of N4
averaged values are lower (better quality) than U_RXQUAL_XX_P.
Given that RxQual is a value in range 0 .. 7, where 0 is the best
and 7 is the worst: L_RXQUAL_XX_P must define the worst quality,
while U_RXQUAL_XX_P must define the best quality value.
Change-Id: I0f37b23ed360782f3c1f4275234c4e18a17aa89b
Related: SYS#4918
-rw-r--r-- | src/osmo-bsc/bsc_vty.c | 11 | ||||
-rw-r--r-- | src/osmo-bsc/gsm_data.c | 4 | ||||
-rw-r--r-- | tests/power_ctrl.vty | 20 |
3 files changed, 18 insertions, 17 deletions
diff --git a/src/osmo-bsc/bsc_vty.c b/src/osmo-bsc/bsc_vty.c index 77741473a..3cb479d6e 100644 --- a/src/osmo-bsc/bsc_vty.c +++ b/src/osmo-bsc/bsc_vty.c @@ -5004,18 +5004,19 @@ DEFUN_USRATTR(cfg_power_ctrl_rxqual_thresh, X(BSC_VTY_ATTR_NEW_LCHAN), "rxqual-thresh lower <0-7> upper <0-7>", "Set target RxQual thresholds (for dynamic mode)\n" - "Lower RxQual value (default is 0, i.e. BER < 0.2%)\n" + "Lower RxQual value (default is 3, i.e. 0.8% <= BER < 1.6%)\n" "Lower " POWER_CONTROL_MEAS_RXQUAL_DESC - "Upper RxQual value (default is 3, i.e. 0.8% <= BER < 1.6%)\n" + "Upper RxQual value (default is 0, i.e. BER < 0.2%)\n" "Upper " POWER_CONTROL_MEAS_RXQUAL_DESC) { struct gsm_power_ctrl_params *params = vty->index; int lower = atoi(argv[0]); int upper = atoi(argv[1]); - if (lower > upper) { - vty_out(vty, "%% Lower 'rxqual-rxqual' (%d) must be less than upper (%d)%s", - lower, upper, VTY_NEWLINE); + /* RxQual: 0 is best, 7 is worst, so upper must be less */ + if (upper > lower) { + vty_out(vty, "%% Upper 'rxqual-rxqual' (%d) must be less than lower (%d)%s", + upper, lower, VTY_NEWLINE); return CMD_WARNING; } diff --git a/src/osmo-bsc/gsm_data.c b/src/osmo-bsc/gsm_data.c index 4c87fd874..38392fc1e 100644 --- a/src/osmo-bsc/gsm_data.c +++ b/src/osmo-bsc/gsm_data.c @@ -1007,8 +1007,8 @@ const struct gsm_power_ctrl_params power_ctrl_params_def = { /* RxQual measurement parameters */ .rxqual_meas = { /* Thresholds for RxQual (see 3GPP TS 45.008, A.3.2.1) */ - .lower_thresh = 0, /* L_RXQUAL_XX_P (BER < 0.2%) */ - .upper_thresh = 3, /* U_RXQUAL_XX_P (0.8% <= BER < 1.6%) */ + .lower_thresh = 3, /* L_RXQUAL_XX_P (0.8% <= BER < 1.6%) */ + .upper_thresh = 0, /* U_RXQUAL_XX_P (BER < 0.2%) */ /* Increase {UL,DL}_TXPWR if at least LOWER_CMP_P averages * out of LOWER_CMP_N averages are lower than L_RXLEV_XX_P */ diff --git a/tests/power_ctrl.vty b/tests/power_ctrl.vty index 2bc427b9c..d58c07556 100644 --- a/tests/power_ctrl.vty +++ b/tests/power_ctrl.vty @@ -62,7 +62,7 @@ OsmoBSC(config-bs-power-ctrl)# show running-config rxlev-thresh lower 32 upper 38 rxlev-thresh-comp lower 10 12 upper 19 20 no rxlev-avg - rxqual-thresh lower 0 upper 3 + rxqual-thresh lower 3 upper 0 rxqual-thresh-comp lower 5 7 upper 15 18 no rxqual-avg ms-power-control @@ -107,7 +107,7 @@ OsmoBSC(config-ms-power-ctrl)# show running-config rxlev-thresh lower 32 upper 38 rxlev-thresh-comp lower 10 12 upper 19 20 no rxlev-avg - rxqual-thresh lower 0 upper 3 + rxqual-thresh lower 3 upper 0 rxqual-thresh-comp lower 5 7 upper 15 18 no rxqual-avg ms-power-control @@ -116,7 +116,7 @@ OsmoBSC(config-ms-power-ctrl)# show running-config rxlev-thresh lower 32 upper 38 rxlev-thresh-comp lower 10 12 upper 19 20 no rxlev-avg - rxqual-thresh lower 0 upper 3 + rxqual-thresh lower 3 upper 0 rxqual-thresh-comp lower 5 7 upper 15 18 no rxqual-avg ... @@ -164,23 +164,23 @@ OsmoBSC(config-ms-power-ctrl)# show running-config ... OsmoBSC(config-ms-power-ctrl)# rxqual-thresh lower? - lower Lower RxQual value (default is 0, i.e. BER < 0.2%) + lower Lower RxQual value (default is 3, i.e. 0.8% <= BER < 1.6%) OsmoBSC(config-ms-power-ctrl)# rxqual-thresh lower ? <0-7> Lower RxQual value (signal quality, 0 is best, 7 is worst) -OsmoBSC(config-ms-power-ctrl)# rxqual-thresh lower 0 upper? - upper Upper RxQual value (default is 3, i.e. 0.8% <= BER < 1.6%) -OsmoBSC(config-ms-power-ctrl)# rxqual-thresh lower 0 upper ? +OsmoBSC(config-ms-power-ctrl)# rxqual-thresh lower 7 upper? + upper Upper RxQual value (default is 0, i.e. BER < 0.2%) +OsmoBSC(config-ms-power-ctrl)# rxqual-thresh lower 7 upper ? <0-7> Upper RxQual value (signal quality, 0 is best, 7 is worst) -OsmoBSC(config-ms-power-ctrl)# rxqual-thresh lower 0 upper 7 +OsmoBSC(config-ms-power-ctrl)# rxqual-thresh lower 7 upper 4 OsmoBSC(config-ms-power-ctrl)# show running-config ... bs-power-control ... !rxqual-thresh - rxqual-thresh lower 0 upper 3 + rxqual-thresh lower 3 upper 0 ... ms-power-control ... !rxqual-thresh - rxqual-thresh lower 0 upper 7 + rxqual-thresh lower 7 upper 4 ... OsmoBSC(config-ms-power-ctrl)# rxlev-avg algo osmo-ewma beta 50 |