This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
fixeria gerrit-no-reply at lists.osmocom.orgfixeria has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-bts/+/21438 ) Change subject: vty: add commands for Downlink power control ...................................................................... vty: add commands for Downlink power control Change-Id: I61efbe177aa06584cd7412640b888913de6e8f9d Related: SYS#4918 --- M src/common/vty.c 1 file changed, 93 insertions(+), 47 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/38/21438/1 diff --git a/src/common/vty.c b/src/common/vty.c index f32f6cd..0e78ad3 100644 --- a/src/common/vty.c +++ b/src/common/vty.c @@ -228,6 +228,27 @@ return CMD_SUCCESS; } +static void config_write_power_ctrl_params(struct vty *vty, const char *prefix, + const struct bts_power_ctrl_params *pp) +{ + vty_out(vty, " %s-power-target %d", prefix, pp->target); + if (pp->hysteresis > 0) + vty_out(vty, " hysteresis %d", pp->hysteresis); + vty_out(vty, "%s", VTY_NEWLINE); + + /* Power filtering algorithm and parameters */ + switch (pp->pf_algo) { + case BTS_PF_ALGO_EWMA: + vty_out(vty, " %s-power-filtering algo ewma beta %u%s", + prefix, 100 - pp->pf.ewma.alpha, VTY_NEWLINE); + break; + case BTS_PF_ALGO_NONE: + default: + vty_out(vty, " no %s-power-filtering%s", prefix, VTY_NEWLINE); + break; + } +} + static void config_write_bts_single(struct vty *vty, const struct gsm_bts *bts) { const struct gsm_bts_trx *trx; @@ -255,22 +276,10 @@ VTY_NEWLINE); vty_out(vty, " paging lifetime %u%s", paging_get_lifetime(bts->paging_state), VTY_NEWLINE); - vty_out(vty, " uplink-power-target %d", bts->ul_power_ctrl.target); - if (bts->ul_power_ctrl.hysteresis > 0) - vty_out(vty, " hysteresis %d", bts->ul_power_ctrl.hysteresis); - vty_out(vty, "%s", VTY_NEWLINE); - /* MS Tx power filtering algorithm and parameters */ - switch (bts->ul_power_ctrl.pf_algo) { - case BTS_PF_ALGO_EWMA: - vty_out(vty, " uplink-power-filtering algo ewma beta %u%s", - 100 - bts->ul_power_ctrl.pf.ewma.alpha, VTY_NEWLINE); - break; - case BTS_PF_ALGO_NONE: - default: - vty_out(vty, " no uplink-power-filtering%s", VTY_NEWLINE); - break; - } + /* UL/DL power control parameters */ + config_write_power_ctrl_params(vty, "uplink", &bts->ul_power_ctrl); + config_write_power_ctrl_params(vty, "downlink", &bts->dl_power_ctrl); if (bts->agch_queue.thresh_level != GSM_BTS_AGCH_QUEUE_THRESH_LEVEL_DEFAULT || bts->agch_queue.low_level != GSM_BTS_AGCH_QUEUE_LOW_LEVEL_DEFAULT @@ -621,68 +630,105 @@ return CMD_SUCCESS; } -#define UL_POWER_TARGET_CMD \ - "uplink-power-target <-110-0>" -#define UL_POWER_TARGET_CMD_DESC \ - "Set the nominal target Rx Level for uplink power control loop\n" \ - "Target uplink Rx level in dBm\n" +#define POWER_TARGET_CMD \ + "(uplink-power-target|downlink-power-target) <-110-0>" +#define POWER_TARGET_CMD_DESC \ + "Set the nominal target Rx Level for Uplink power control loop\n" \ + "Set the nominal target Rx Level for Downlink power control loop\n" \ + "Target Rx level in dBm\n" -DEFUN_ATTR(cfg_bts_ul_power_target, cfg_bts_ul_power_target_cmd, - UL_POWER_TARGET_CMD, UL_POWER_TARGET_CMD_DESC, +#define POWER_HYST_CMD \ + "hysteresis <1-25>" +#define POWER_HYST_CMD_DESC \ + "Target Rx Level hysteresis\n" \ + "Tolerable deviation in dBm\n" + +DEFUN_ATTR(cfg_bts_power_target, + cfg_bts_power_target_cmd, + POWER_TARGET_CMD, + POWER_TARGET_CMD_DESC, CMD_ATTR_IMMEDIATE) { + struct bts_power_ctrl_params *params; struct gsm_bts *bts = vty->index; - bts->ul_power_ctrl.target = atoi(argv[0]); - bts->ul_power_ctrl.hysteresis = 0; + if (argv[0][0] == 'u') + params = &bts->ul_power_ctrl; + else + params = &bts->dl_power_ctrl; + + params->target = atoi(argv[1]); + params->hysteresis = 0; return CMD_SUCCESS; } /* FIXME: libosmovty is unable to handle 'foo <-110-0> [bar <1-25>]' */ -DEFUN_ATTR(cfg_bts_ul_power_target_hysteresis, - cfg_bts_ul_power_target_hysteresis_cmd, - UL_POWER_TARGET_CMD " hysteresis <1-25>", - UL_POWER_TARGET_CMD_DESC - "Target Rx Level hysteresis\n" - "Tolerable deviation in dBm\n", +DEFUN_ATTR(cfg_bts_power_target_hysteresis, + cfg_bts_power_target_hysteresis_cmd, + POWER_TARGET_CMD " " POWER_HYST_CMD, + POWER_TARGET_CMD_DESC POWER_HYST_CMD_DESC, CMD_ATTR_IMMEDIATE) { + struct bts_power_ctrl_params *params; struct gsm_bts *bts = vty->index; - bts->ul_power_ctrl.target = atoi(argv[0]); - bts->ul_power_ctrl.hysteresis = atoi(argv[1]); + if (argv[0][0] == 'u') + params = &bts->ul_power_ctrl; + else + params = &bts->dl_power_ctrl; + + params->target = atoi(argv[1]); + params->hysteresis = atoi(argv[2]); return CMD_SUCCESS; } -DEFUN_ATTR(cfg_no_bts_ul_power_filter, - cfg_bts_no_ul_power_filter_cmd, - "no uplink-power-filtering", - NO_STR "Disable filtering for uplink power control loop\n", +#define POWER_FILTER_CMD \ + "(uplink-power-filtering|downlink-power-filtering)" +#define UL_POWER_FILTER_CMD_DESC \ + "filtering for Uplink power control loop\n" +#define DL_POWER_FILTER_CMD_DESC \ + "filtering for Downlink power control loop\n" + +DEFUN_ATTR(cfg_no_bts_power_filter, + cfg_bts_no_power_filter_cmd, + "no " POWER_FILTER_CMD, + NO_STR "Disable " UL_POWER_FILTER_CMD_DESC + "Disable " DL_POWER_FILTER_CMD_DESC, CMD_ATTR_IMMEDIATE) { struct gsm_bts *bts = vty->index; - bts->ul_power_ctrl.pf_algo = BTS_PF_ALGO_NONE; + if (argv[0][0] == 'u') + bts->ul_power_ctrl.pf_algo = BTS_PF_ALGO_NONE; + else + bts->dl_power_ctrl.pf_algo = BTS_PF_ALGO_NONE; return CMD_SUCCESS; } -DEFUN_ATTR(cfg_bts_ul_power_filter_ewma, - cfg_bts_ul_power_filter_ewma_cmd, - "uplink-power-filtering algo ewma beta <1-99>", - "Configure filtering for uplink power control loop\n" +DEFUN_ATTR(cfg_bts_power_filter_ewma, + cfg_bts_power_filter_ewma_cmd, + POWER_FILTER_CMD " algo ewma beta <1-99>", + "Configure " UL_POWER_FILTER_CMD_DESC + "Configure " DL_POWER_FILTER_CMD_DESC "Select the filtering algorithm\n" "Exponentially Weighted Moving Average (EWMA)\n" "Smoothing factor (in %): beta = (100 - alpha)\n" "1% - lowest smoothing, 99% - highest smoothing\n", CMD_ATTR_IMMEDIATE) { + struct bts_power_ctrl_params *params; struct gsm_bts *bts = vty->index; - bts->ul_power_ctrl.pf_algo = BTS_PF_ALGO_EWMA; - bts->ul_power_ctrl.pf.ewma.alpha = 100 - atoi(argv[0]); + if (argv[0][0] == 'u') + params = &bts->ul_power_ctrl; + else + params = &bts->dl_power_ctrl; + + params->pf_algo = BTS_PF_ALGO_EWMA; + params->pf.ewma.alpha = 100 - atoi(argv[1]); return CMD_SUCCESS; } @@ -1879,10 +1925,10 @@ install_element(BTS_NODE, &cfg_bts_paging_lifetime_cmd); install_element(BTS_NODE, &cfg_bts_agch_queue_mgmt_default_cmd); install_element(BTS_NODE, &cfg_bts_agch_queue_mgmt_params_cmd); - install_element(BTS_NODE, &cfg_bts_ul_power_target_cmd); - install_element(BTS_NODE, &cfg_bts_ul_power_target_hysteresis_cmd); - install_element(BTS_NODE, &cfg_bts_no_ul_power_filter_cmd); - install_element(BTS_NODE, &cfg_bts_ul_power_filter_ewma_cmd); + install_element(BTS_NODE, &cfg_bts_power_target_cmd); + install_element(BTS_NODE, &cfg_bts_power_target_hysteresis_cmd); + install_element(BTS_NODE, &cfg_bts_no_power_filter_cmd); + install_element(BTS_NODE, &cfg_bts_power_filter_ewma_cmd); install_element(BTS_NODE, &cfg_bts_min_qual_rach_cmd); install_element(BTS_NODE, &cfg_bts_min_qual_norm_cmd); install_element(BTS_NODE, &cfg_bts_max_ber_rach_cmd); -- To view, visit https://gerrit.osmocom.org/c/osmo-bts/+/21438 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Change-Id: I61efbe177aa06584cd7412640b888913de6e8f9d Gerrit-Change-Number: 21438 Gerrit-PatchSet: 1 Gerrit-Owner: fixeria <vyanitskiy at sysmocom.de> Gerrit-MessageType: newchange -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20201201/04edf07b/attachment.htm>