diff options
-rw-r--r-- | include/osmo-bts/gsm_data_shared.h | 1 | ||||
-rw-r--r-- | src/common/l1sap.c | 1 | ||||
-rw-r--r-- | src/common/power_control.c | 28 |
3 files changed, 4 insertions, 26 deletions
diff --git a/include/osmo-bts/gsm_data_shared.h b/include/osmo-bts/gsm_data_shared.h index c19bb210..41998ad8 100644 --- a/include/osmo-bts/gsm_data_shared.h +++ b/include/osmo-bts/gsm_data_shared.h @@ -322,7 +322,6 @@ struct gsm_lchan { uint8_t current; uint8_t max; bool fixed; - int8_t last_received; /* last received MS Power in uplink L1 SACCH, -1 means not set */ } ms_power_ctrl; /* Power levels for BTS */ uint8_t bs_power; diff --git a/src/common/l1sap.c b/src/common/l1sap.c index 4937d1e5..7bf0b09a 100644 --- a/src/common/l1sap.c +++ b/src/common/l1sap.c @@ -1647,7 +1647,6 @@ int l1sap_chan_act(struct gsm_bts_trx *trx, uint8_t chan_nr, struct tlv_parsed * lchan->sacch_deact = 0; lchan->s = lchan->ts->trx->bts->radio_link_timeout; - lchan->ms_power_ctrl.last_received = -1; /* mark no ms power received yet */ rc = l1sap_chan_act_dact_modify(trx, chan_nr, PRIM_INFO_ACTIVATE, 0); if (rc) diff --git a/src/common/power_control.c b/src/common/power_control.c index 129334e7..d08ed5e5 100644 --- a/src/common/power_control.c +++ b/src/common/power_control.c @@ -51,35 +51,15 @@ int lchan_ms_pwr_ctrl(struct gsm_lchan *lchan, if (lchan->ms_power_ctrl.fixed) return 0; - /* The phone hasn't reached the power level yet. - TODO: store .last and check if MS is trying to move towards current. */ - if (lchan->ms_power_ctrl.current != ms_power) { - if (lchan->ms_power_ctrl.last_received == -1 || - lchan->ms_power_ctrl.last_received != ms_power) { - /* MS Power still changing, keep current power level */ - lchan->ms_power_ctrl.last_received = ms_power; - return 0; - } - /* else: we are stuck with some received MS Power level - different than the one we announce, probably because the MS - doesn't support that exact one so it picked the nearest one - */ - lchan->ms_power_ctrl.last_received = ms_power; - } - /* How many dBs measured power should be increased (+) or decreased (-) to reach expected power. */ diff = bts->ul_power_target - rxLevel; - /* power levels change in steps of 2 dB, so a smaller diff will end up in no change */ - if (diff < 2 && diff > -2) - return 0; - - current_dbm = ms_pwr_dbm(band, lchan->ms_power_ctrl.current); + current_dbm = ms_pwr_dbm(band, ms_power); if (current_dbm < 0) { LOGPLCHAN(lchan, DLOOP, LOGL_NOTICE, "Failed to calculate dBm for power ctl level %" PRIu8 " on band %s\n", - lchan->ms_power_ctrl.current, gsm_band_name(band)); + ms_power, gsm_band_name(band)); return 0; } bsc_max_dbm = ms_pwr_dbm(band, lchan->ms_power_ctrl.max); @@ -110,13 +90,13 @@ int lchan_ms_pwr_ctrl(struct gsm_lchan *lchan, } if (lchan->ms_power_ctrl.current == new_power) { - LOGPLCHAN(lchan, DLOOP, LOGL_INFO, "Keeping MS new_power at control level %d, %d dBm " + LOGPLCHAN(lchan, DLOOP, LOGL_INFO, "Keeping MS power at control level %d, %d dBm " "(rx-ms-pwr-lvl %" PRIu8 ", rx-current %d dBm, rx-target %d dBm)\n", new_power, ms_pwr_dbm(band, new_power), ms_power, rxLevel, bts->ul_power_target); return 0; } - LOGPLCHAN(lchan, DLOOP, LOGL_INFO, "%s MS new_power from control level %d (%d dBm) to %d, %d dBm " + LOGPLCHAN(lchan, DLOOP, LOGL_INFO, "%s MS power from control level %d (%d dBm) to %d, %d dBm " "(rx-ms-pwr-lvl %" PRIu8 ", rx-current %d dBm, rx-target %d dBm)\n", (diff > 0) ? "Raising" : "Lowering", lchan->ms_power_ctrl.current, ms_pwr_dbm(band, lchan->ms_power_ctrl.current), |