aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Sperling <ssperling@sysmocom.de>2018-04-16 13:59:03 +0200
committerStefan Sperling <ssperling@sysmocom.de>2018-04-16 13:59:03 +0200
commitfdff72d924fdca5a1d2c646b6d8c7b4e47e99e38 (patch)
tree0df2e753a18992b04d1c8305f537320265a309cb
parent92a661e6a68dc4dd8a23cca6f9ee0d50545f439c (diff)
only trigger acc ramping if trx 0 is usable and unlocked
Starting an ACC ramping process while TRX 0 is unusable or locked is pointless. For instance, after loading a config with 'rf_locked 1' for trx 0, the ramping process was started as soon as the BTS established RSL, even though the air interface was still down. ACC ramping should instead be triggered once TRX 0 is unlocked. This is a port of osmo-bsc commit 4d3d2436cdf3296ddc110be4022dc2ec13d3eb86 Related: OS#2591 Change-Id: I2cc9c1b8193546ea04ea5beb3751c2206f0215f2
-rw-r--r--openbsc/src/libbsc/acc_ramp.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/openbsc/src/libbsc/acc_ramp.c b/openbsc/src/libbsc/acc_ramp.c
index a86645818..6e6410981 100644
--- a/openbsc/src/libbsc/acc_ramp.c
+++ b/openbsc/src/libbsc/acc_ramp.c
@@ -26,6 +26,7 @@
#include <openbsc/debug.h>
#include <openbsc/acc_ramp.h>
#include <openbsc/gsm_data.h>
+#include <openbsc/chan_alloc.h>
#include <openbsc/signal.h>
/*
@@ -257,7 +258,7 @@ void acc_ramp_set_step_interval_dynamic(struct acc_ramp *acc_ramp)
/*!
* Determine if ACC ramping should be started according to configuration, and
- * if ACC ramping is enabled, begin the ramping process.
+ * begin the ramping process if the necessary conditions are present.
* Perform at least one ramping step to allow 'step_size' ACCs.
* If 'step_size' is ACC_RAMP_STEP_SIZE_MAX, or if ACC ramping is disabled,
* all ACCs will be allowed immediately.
@@ -269,9 +270,13 @@ void acc_ramp_trigger(struct acc_ramp *acc_ramp)
acc_ramp_abort(acc_ramp);
if (acc_ramp_is_enabled(acc_ramp)) {
- /* Set all available ACCs to barred and start ramping up. */
- barr_all_accs(acc_ramp);
- do_acc_ramping_step(acc_ramp);
+ struct gsm_bts_trx *trx0 = gsm_bts_trx_by_nr(acc_ramp->bts, 0);
+ /* TRX 0 should be usable and unlocked, otherwise starting ACC ramping is pointless. */
+ if (trx0 && trx_is_usable(trx0) && trx0->mo.nm_state.administrative == NM_STATE_UNLOCKED) {
+ /* Set all available ACCs to barred and start ramping up. */
+ barr_all_accs(acc_ramp);
+ do_acc_ramping_step(acc_ramp);
+ }
}
}