diff options
author | Stefan Sperling <ssperling@sysmocom.de> | 2018-02-08 18:06:42 +0100 |
---|---|---|
committer | Stefan Sperling <ssperling@sysmocom.de> | 2018-02-08 18:06:42 +0100 |
commit | c862d2548105bb444e607f0378354c6897248ad2 (patch) | |
tree | 9142f825b8fe77592099e7cb629239b9ef0db2db /src/libbsc | |
parent | ea0e993bc464e4118ab7753855a65a01d91317ed (diff) |
add VTY command to configure ramping step interval
Change-Id: I6a296afb9be58a1528f19993251a975caee0855b
Diffstat (limited to 'src/libbsc')
-rw-r--r-- | src/libbsc/acc_ramp.c | 7 | ||||
-rw-r--r-- | src/libbsc/bsc_vty.c | 35 |
2 files changed, 40 insertions, 2 deletions
diff --git a/src/libbsc/acc_ramp.c b/src/libbsc/acc_ramp.c index 73df4fe93..8825188a5 100644 --- a/src/libbsc/acc_ramp.c +++ b/src/libbsc/acc_ramp.c @@ -161,12 +161,13 @@ void acc_ramp_init(struct acc_ramp *acc_ramp, struct gsm_bts *bts) allow_all_allowed_accs(acc_ramp); } -int acc_ramp_set_step_size(struct acc_ramp *acc_ramp, enum acc_ramp_step_size step_size) +int acc_ramp_set_step_size(struct acc_ramp *acc_ramp, unsigned int step_size) { if (step_size < ACC_RAMP_STEP_SIZE_MIN || step_size > ACC_RAMP_STEP_SIZE_MAX) return -ERANGE; acc_ramp->step_size = step_size; + LOGP(DRLL, LOGL_DEBUG, "(bts=%d) ACC RAMP: ramping step size set to %u\n", acc_ramp->bts->nr, step_size); return 0; } @@ -177,12 +178,16 @@ int acc_ramp_set_step_interval(struct acc_ramp *acc_ramp, unsigned int step_inte acc_ramp->step_interval_sec = step_interval; acc_ramp->step_interval_is_fixed = true; + LOGP(DRLL, LOGL_DEBUG, "(bts=%d) ACC RAMP: ramping step interval set to %u seconds\n", + acc_ramp->bts->nr, step_interval); return 0; } void acc_ramp_set_step_interval_dynamic(struct acc_ramp *acc_ramp) { acc_ramp->step_interval_is_fixed = false; + LOGP(DRLL, LOGL_DEBUG, "(bts=%d) ACC RAMP: ramping step interval set to 'dynamic'\n", + acc_ramp->bts->nr); } void acc_ramp_start(struct acc_ramp *acc_ramp) diff --git a/src/libbsc/bsc_vty.c b/src/libbsc/bsc_vty.c index b02ac2bbf..171d5a72a 100644 --- a/src/libbsc/bsc_vty.c +++ b/src/libbsc/bsc_vty.c @@ -1756,6 +1756,7 @@ DEFUN(cfg_bts, /* allocate a new one */ bts = gsm_bts_alloc_register(gsmnet, GSM_BTS_TYPE_UNKNOWN, HARDCODED_BSIC); + acc_ramp_init(&bts->acc_ramp, bts); } else bts = gsm_bts_num(gsmnet, bts_nr); @@ -3111,7 +3112,7 @@ DEFUN(cfg_bts_pcu_sock, cfg_bts_pcu_sock_cmd, DEFUN(cfg_bts_acc_ramping, cfg_bts_acc_ramping_cmd, "access-control-class-ramping enabled (0|1)", - "Enable or disable Access Control Class ramping\n" + "Conigure Access Control Class ramping\n" "Enable or disable Access Control Class ramping\n" "Disable Access Control Class ramping\n" "Enable Access Control Class ramping\n") { @@ -3133,6 +3134,37 @@ DEFUN(cfg_bts_acc_ramping, return CMD_SUCCESS; } +DEFUN(cfg_bts_acc_ramping_step_interval, + cfg_bts_acc_ramping_step_interval_cmd, + "access-control-class-ramping step-interval (<" + OSMO_STRINGIFY_VAL(ACC_RAMP_STEP_INTERVAL_MIN) "-" + OSMO_STRINGIFY_VAL(ACC_RAMP_STEP_INTERVAL_MAX) ">|dynamic)", + "Conigure Access Control Class ramping\n" + "Configure Access Control Class ramping step interval\n" + "Set a fixed step interval (in seconds)\n" + "Use dynamic step interval based on BTS channel load (this is the default)\n") +{ + struct gsm_bts *bts = vty->index; + bool dynamic = (strcmp(argv[0], "dynamic") == 0); + int error; + + if (dynamic) { + acc_ramp_set_step_interval_dynamic(&bts->acc_ramp); + return CMD_SUCCESS; + } + + error = acc_ramp_set_step_interval(&bts->acc_ramp, atoi(argv[0])); + if (error != 0) { + if (error == -ERANGE) + vty_out(vty, "Unable to set ACC ramp step interval: value out of range%s", VTY_NEWLINE); + else + vty_out(vty, "Unable to set ACC ramp step interval: unknown error%s", VTY_NEWLINE); + return CMD_WARNING; + } + + return CMD_SUCCESS; +} + #define EXCL_RFLOCK_STR "Exclude this BTS from the global RF Lock\n" @@ -4466,6 +4498,7 @@ int bsc_vty_init(struct gsm_network *network) 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); + install_element(BTS_NODE, &cfg_bts_acc_ramping_step_interval_cmd); /* See also handover commands added on bts level from handover_vty.c */ install_element(BTS_NODE, &cfg_trx_cmd); |