diff options
author | Alexander Chemeris <Alexander.Chemeris@gmail.com> | 2017-08-19 02:05:25 +0300 |
---|---|---|
committer | Alexander Chemeris <Alexander.Chemeris@gmail.com> | 2017-08-19 22:35:10 +0000 |
commit | d4450051fcfba5f87acd49245e34217b784aee93 (patch) | |
tree | 465db6790e992e6febcc7bf80893fb210b1c192f /src/osmo-bts-trx/loops.c | |
parent | b78fc1eeee3b8d3a5e7b00e0f8bd89a844123c26 (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.c | 22 |
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); |