aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVadim Yanitskiy <vyanitskiy@sysmocom.de>2020-12-24 00:54:41 +0100
committerlaforge <laforge@osmocom.org>2020-12-27 12:56:34 +0000
commitf4674e3f7a5ee8f86003890bf662364ae3c71357 (patch)
treed2db257ff7e1014dc03625070812587c33887bb8
parent06b8a78e61425b7f05ae3dbd3c0b3166714a9eb9 (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.c11
-rw-r--r--src/osmo-bsc/gsm_data.c4
-rw-r--r--tests/power_ctrl.vty20
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