aboutsummaryrefslogtreecommitdiffstats
path: root/src/libbsc
diff options
context:
space:
mode:
Diffstat (limited to 'src/libbsc')
-rw-r--r--src/libbsc/acc_ramp.c4
-rw-r--r--src/libbsc/bsc_vty.c28
2 files changed, 30 insertions, 2 deletions
diff --git a/src/libbsc/acc_ramp.c b/src/libbsc/acc_ramp.c
index a84b704f1..27103bcda 100644
--- a/src/libbsc/acc_ramp.c
+++ b/src/libbsc/acc_ramp.c
@@ -131,7 +131,7 @@ static void do_ramping_step(void *data)
osmo_timer_schedule(&acc_ramp->step_timer, get_next_step_interval(acc_ramp), 0);
}
-void acc_ramp_init(struct acc_ramp *acc_ramp, struct gsm_bts *bts, bool ramping_enabled)
+void acc_ramp_init(struct acc_ramp *acc_ramp, struct gsm_bts *bts)
{
acc_ramp->bts = bts;
acc_ramp->step_size = ACC_RAMP_STEP_SIZE_DEFAULT;
@@ -139,7 +139,7 @@ void acc_ramp_init(struct acc_ramp *acc_ramp, struct gsm_bts *bts, bool ramping_
acc_ramp->step_interval_is_fixed = false;
osmo_timer_setup(&acc_ramp->step_timer, do_ramping_step, acc_ramp);
- if (ramping_enabled)
+ if (bts->acc_ramping_enabled)
deny_all_accs(acc_ramp);
else
allow_all_accs(acc_ramp);
diff --git a/src/libbsc/bsc_vty.c b/src/libbsc/bsc_vty.c
index 3da474594..133c89ff4 100644
--- a/src/libbsc/bsc_vty.c
+++ b/src/libbsc/bsc_vty.c
@@ -61,6 +61,7 @@
#include <osmocom/bsc/handover_cfg.h>
#include <osmocom/bsc/handover_vty.h>
#include <osmocom/bsc/gsm_04_08_utils.h>
+#include <osmocom/bsc/acc_ramp.h>
#include <inttypes.h>
@@ -3105,6 +3106,32 @@ DEFUN(cfg_bts_pcu_sock, cfg_bts_pcu_sock_cmd,
return CMD_SUCCESS;
}
+DEFUN(cfg_bts_acc_ramping,
+ cfg_bts_acc_ramping_cmd,
+ "acc-ramping enabled (0|1)",
+ "Enable or disable Access Control Class ramping\n"
+ "Disable Access Control Class ramping\n"
+ "Enable Access Control Class ramping\n")
+{
+ struct gsm_bts *bts = vty->index;
+ bool was_enabled = bts->acc_ramping_enabled;
+ bool enable = atoi(argv[0]);
+
+ bts->acc_ramping_enabled = enable ? true : false;
+ if (was_enabled && !bts->acc_ramping_enabled) {
+ struct gsm_bts_trx *trx;
+ acc_ramp_abort(&bts->acc_ramp);
+ acc_ramp_init(&bts->acc_ramp, bts);
+ llist_for_each_entry_reverse(trx, &bts->trx_list, list)
+ gsm_bts_trx_set_system_infos(trx);
+ }
+
+ /* If ramping is now enabled, it only takes effect when the BTS reconnects. */
+
+ return CMD_SUCCESS;
+}
+
+
#define EXCL_RFLOCK_STR "Exclude this BTS from the global RF Lock\n"
DEFUN(cfg_bts_excl_rf_lock,
@@ -4436,6 +4463,7 @@ int bsc_vty_init(struct gsm_network *network)
install_element(BTS_NODE, &cfg_bts_amr_hr_hyst3_cmd);
install_element(BTS_NODE, &cfg_bts_amr_hr_start_mode_cmd);
install_element(BTS_NODE, &cfg_bts_pcu_sock_cmd);
+ install_element(BTS_NODE, &cfg_bts_acc_ramping_cmd);
/* See also handover commands added on bts level from handover_vty.c */
install_element(BTS_NODE, &cfg_trx_cmd);