aboutsummaryrefslogtreecommitdiffstats
path: root/src/osmo-bts-trx/loops.c
diff options
context:
space:
mode:
authorAlexander Chemeris <Alexander.Chemeris@gmail.com>2017-08-19 02:05:25 +0300
committerAlexander Chemeris <Alexander.Chemeris@gmail.com>2017-08-19 22:35:10 +0000
commitd4450051fcfba5f87acd49245e34217b784aee93 (patch)
tree465db6790e992e6febcc7bf80893fb210b1c192f /src/osmo-bts-trx/loops.c
parentb78fc1eeee3b8d3a5e7b00e0f8bd89a844123c26 (diff)
osmo-bts-trx: Fix MS power control loop.
The following two commits from 2014-12-06 introduced a new variable to control MS power - ms_power_ctrl, but kept the old ms_power variable in place. They have also changed the meaning of the ms_power variable - it now keeps original RSL configured value. So when much later osmo-trx-bts code was merged to master the code was compiling fine and this change in the meaning was overlooked. In osmo-bts: 579651bf300de002731dfd3bd39985c9fd15616c power/sysmobts: Add a manual ms power level control In OpenBSC: f6f86b0eec18da165db136b14bf2db87fde4b4ac osmo-bts: Introduce new struct for a power loop in the BTS code Change-Id: I713e39b882db32a0d17aa04790d16fa79afa1fb1
Diffstat (limited to 'src/osmo-bts-trx/loops.c')
-rw-r--r--src/osmo-bts-trx/loops.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/src/osmo-bts-trx/loops.c b/src/osmo-bts-trx/loops.c
index 8070e802..8d6e5d7e 100644
--- a/src/osmo-bts-trx/loops.c
+++ b/src/osmo-bts-trx/loops.c
@@ -48,7 +48,7 @@ static int ms_power_diff(struct gsm_lchan *lchan, uint8_t chan_nr, int8_t diff)
uint16_t arfcn = trx->arfcn;
int8_t new_power;
- new_power = lchan->ms_power - (diff >> 1);
+ new_power = lchan->ms_power_ctrl.current - (diff >> 1);
if (diff == 0)
return 0;
@@ -66,12 +66,12 @@ static int ms_power_diff(struct gsm_lchan *lchan, uint8_t chan_nr, int8_t diff)
}
/* a higher value means a lower level (and vice versa) */
- if (new_power > lchan->ms_power + MS_LOWER_MAX)
- new_power = lchan->ms_power + MS_LOWER_MAX;
- else if (new_power < lchan->ms_power - MS_RAISE_MAX)
- new_power = lchan->ms_power - MS_RAISE_MAX;
+ if (new_power > lchan->ms_power_ctrl.current + MS_LOWER_MAX)
+ new_power = lchan->ms_power_ctrl.current + MS_LOWER_MAX;
+ else if (new_power < lchan->ms_power_ctrl.current - MS_RAISE_MAX)
+ new_power = lchan->ms_power_ctrl.current - MS_RAISE_MAX;
- if (lchan->ms_power == new_power) {
+ if (lchan->ms_power_ctrl.current == new_power) {
LOGP(DLOOP, LOGL_INFO, "Keeping MS new_power of trx=%u "
"chan_nr=0x%02x at control level %d (%d dBm)\n",
trx->nr, chan_nr, new_power,
@@ -83,11 +83,11 @@ static int ms_power_diff(struct gsm_lchan *lchan, uint8_t chan_nr, int8_t diff)
LOGP(DLOOP, LOGL_INFO, "%s MS new_power of trx=%u chan_nr=0x%02x from "
"control level %d (%d dBm) to %d (%d dBm)\n",
(diff > 0) ? "Raising" : "Lowering",
- trx->nr, chan_nr, lchan->ms_power,
- MS_PWR_DBM(arfcn, lchan->ms_power), new_power,
+ trx->nr, chan_nr, lchan->ms_power_ctrl.current,
+ MS_PWR_DBM(arfcn, lchan->ms_power_ctrl.current), new_power,
MS_PWR_DBM(arfcn, new_power));
- lchan->ms_power = new_power;
+ lchan->ms_power_ctrl.current = new_power;
return 0;
}
@@ -159,8 +159,8 @@ static int ms_power_clock(struct gsm_lchan *lchan,
/* change RSSI */
LOGP(DLOOP, LOGL_DEBUG, "Lowest RSSI: %d Target RSSI: %d Current "
"MS power: %d (%d dBm) of trx=%u chan_nr=0x%02x\n", rssi,
- trx_target_rssi, lchan->ms_power,
- MS_PWR_DBM(trx->arfcn, lchan->ms_power),
+ trx_target_rssi, lchan->ms_power_ctrl.current,
+ MS_PWR_DBM(trx->arfcn, lchan->ms_power_ctrl.current),
trx->nr, chan_nr);
ms_power_diff(lchan, chan_nr, trx_target_rssi - rssi);