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/.
laforge gerrit-no-reply at lists.osmocom.orglaforge has submitted this change. ( https://gerrit.osmocom.org/c/osmo-bsc/+/21164 ) Change subject: bts: add repeated acch mode flags + vty config ...................................................................... bts: add repeated acch mode flags + vty config To be able to control the FACCH/SACCH repetition behavior inside the BTS a one byte flag is sent to the BTS together with the RSL_IE_OSMO_REP_ACCH_CAP IE. This patch adds the necessary VTY commands. The sending of the flag is implemented in a follow-up patch. See also: I39ae439d05562b35b2e47774dc92f8789fea1a57 Related: SYS#5114, OS#4796, OS#4794, OS#4795 Depends: libosmocore I6dda239e9cd7033297bed1deb5eb1d9f87b8433f Change-Id: I083eaa2c30478912426e9c24a506f0b88836e190 --- M include/osmocom/bsc/bts.h M src/osmo-bsc/bsc_vty.c M src/osmo-bsc/bts.c 3 files changed, 164 insertions(+), 1 deletion(-) Approvals: laforge: Looks good to me, approved pespin: Looks good to me, but someone else must approve Jenkins Builder: Verified diff --git a/include/osmocom/bsc/bts.h b/include/osmocom/bsc/bts.h index fd2ac32..22839d6 100644 --- a/include/osmocom/bsc/bts.h +++ b/include/osmocom/bsc/bts.h @@ -480,6 +480,10 @@ struct llist_head oml_fail_rep; struct llist_head chan_rqd_queue; + + /* osmocom specific FACCH/SACCH repetition mode flags set by VTY to + * enable/disable certain ACCH repeation features individually */ + struct abis_rsl_osmo_rep_acch_cap repeated_acch_policy; }; #define GSM_BTS_SI2Q(bts, i) (struct gsm48_system_information_type_2quater *)((bts)->si_buf[SYSINFO_TYPE_2quater][i]) diff --git a/src/osmo-bsc/bsc_vty.c b/src/osmo-bsc/bsc_vty.c index d8e9682..846339d 100644 --- a/src/osmo-bsc/bsc_vty.c +++ b/src/osmo-bsc/bsc_vty.c @@ -1115,6 +1115,19 @@ ho_vty_write_bts(vty, bts); + if (bts->repeated_acch_policy.dl_facch_all) + vty_out(vty, " repeat dl-facch all%s", VTY_NEWLINE); + else if (bts->repeated_acch_policy.dl_facch_cmd) + vty_out(vty, " repeat dl-facch command%s", VTY_NEWLINE); + if (bts->repeated_acch_policy.dl_sacch) + vty_out(vty, " repeat dl-sacch%s", VTY_NEWLINE); + if (bts->repeated_acch_policy.ul_sacch) + vty_out(vty, " repeat ul-sacch%s", VTY_NEWLINE); + if (bts->repeated_acch_policy.ul_sacch + || bts->repeated_acch_policy.dl_facch_cmd + || bts->repeated_acch_policy.dl_facch_cmd) + vty_out(vty, " repeat rxqual %u%s", bts->repeated_acch_policy.rxqual, VTY_NEWLINE); + config_write_bts_model(vty, bts); } @@ -2621,6 +2634,142 @@ return CMD_SUCCESS; } +#define REP_ACCH_STR "FACCH/SACCH repetition\n" + +DEFUN_ATTR(cfg_bts_rep_dl_facch, + cfg_bts_rep_dl_facch_cmd, + "repeat dl-facch (command|all)", + REP_ACCH_STR + "Enable DL-FACCH repetition for this BTS\n" + "command LAPDm frames only\n" + "all LAPDm frames\n", CMD_ATTR_IMMEDIATE) +{ + struct gsm_bts *bts = vty->index; + + if (bts->model->type != GSM_BTS_TYPE_OSMOBTS) { + vty_out(vty, "%% repeated ACCH not supported by BTS %u%s", + bts->nr, VTY_NEWLINE); + return CMD_WARNING; + } + + if (!strcmp(argv[1], "command")) { + bts->repeated_acch_policy.dl_facch_cmd = true; + bts->repeated_acch_policy.dl_facch_all = false; + } else { + bts->repeated_acch_policy.dl_facch_cmd = true; + bts->repeated_acch_policy.dl_facch_all = true; + } + return CMD_SUCCESS; +} + +DEFUN_ATTR(cfg_bts_rep_no_dl_facch, + cfg_bts_rep_no_dl_facch_cmd, + "no repeat dl-facch", + NO_STR REP_ACCH_STR + "Disable DL-FACCH repetition for this BTS\n", CMD_ATTR_IMMEDIATE) +{ + struct gsm_bts *bts = vty->index; + + bts->repeated_acch_policy.dl_facch_cmd = false; + bts->repeated_acch_policy.dl_facch_all = false; + + return CMD_SUCCESS; +} + +DEFUN_ATTR(cfg_bts_rep_dl_sacch, + cfg_bts_rep_dl_sacch_cmd, + "repeat dl-sacch", + REP_ACCH_STR + "Enable DL-SACCH repetition for this BTS\n", CMD_ATTR_IMMEDIATE) +{ + struct gsm_bts *bts = vty->index; + + if (bts->model->type != GSM_BTS_TYPE_OSMOBTS) { + vty_out(vty, "%% repeated ACCH not supported by BTS %u%s", + bts->nr, VTY_NEWLINE); + return CMD_WARNING; + } + + bts->repeated_acch_policy.dl_sacch = true; + + return CMD_SUCCESS; +} + +DEFUN_ATTR(cfg_bts_rep_no_dl_sacch, + cfg_bts_rep_no_dl_sacch_cmd, + "no repeat dl-sacch", + NO_STR REP_ACCH_STR + "Disable DL-SACCH repetition for this BTS\n", CMD_ATTR_IMMEDIATE) +{ + struct gsm_bts *bts = vty->index; + + bts->repeated_acch_policy.dl_sacch = false; + + return CMD_SUCCESS; +} + +DEFUN_ATTR(cfg_bts_rep_ul_sacch, + cfg_bts_rep_ul_sacch_cmd, + "repeat ul-sacch", + REP_ACCH_STR + "Enable UL-SACCH repetition for this BTS\n", CMD_ATTR_IMMEDIATE) +{ + struct gsm_bts *bts = vty->index; + + if (bts->model->type != GSM_BTS_TYPE_OSMOBTS) { + vty_out(vty, "%% repeated ACCH not supported by BTS %u%s", + bts->nr, VTY_NEWLINE); + return CMD_WARNING; + } + + bts->repeated_acch_policy.ul_sacch = true; + + return CMD_SUCCESS; +} + +DEFUN_ATTR(cfg_bts_rep_no_ul_sacch, + cfg_bts_rep_no_ul_sacch_cmd, + "no repeat ul-sacch", + NO_STR REP_ACCH_STR + "Disable UL-SACCH repetition for this BTS\n", CMD_ATTR_IMMEDIATE) +{ + struct gsm_bts *bts = vty->index; + + bts->repeated_acch_policy.ul_sacch = false; + + return CMD_SUCCESS; +} + +DEFUN_ATTR(cfg_bts_rep_rxqual, + cfg_bts_rep_rxqual_cmd, + "repeat rxqual (0|1|2|3|4|5|6|7)", + REP_ACCH_STR + "Set UL-SACCH/DL-FACCH rxqual threshold-ber\n" + "0 disabled (always on)\n" + "1 0.26% to 0.30% BER\n" + "2 0.51% to 0.64% BER\n" + "3 1.0% to 1.3% BER\n" + "4 1.9% to 2.7% BER\n" + "5 3.8% to 5.4% BER\n" + "6 7.6% to 11.0% BER\n" + "7 Greater than 15.0% BER\n", + CMD_ATTR_IMMEDIATE) +{ + struct gsm_bts *bts = vty->index; + + if (bts->model->type != GSM_BTS_TYPE_OSMOBTS) { + vty_out(vty, "%% repeated ACCH not supported by BTS %u%s", + bts->nr, VTY_NEWLINE); + return CMD_WARNING; + } + + /* See also: GSM 05.08, section 8.2.4 */ + bts->repeated_acch_policy.rxqual = atoi(argv[0]); + + return CMD_SUCCESS; +} + + #define CD_STR "Channel Description\n" DEFUN_USRATTR(cfg_bts_chan_desc_att, @@ -2989,7 +3138,7 @@ struct gsm_bts *bts = vty->index; if (bts->type != GSM_BTS_TYPE_OSMOBTS) { - vty_out(vty, "%% infinite radio link timeout not supported by this BTS%s", VTY_NEWLINE); + vty_out(vty, "%% infinite radio link timeout not supported by BTS %u%s", bts->nr, VTY_NEWLINE); return CMD_WARNING; } @@ -7033,6 +7182,14 @@ install_element(BTS_NODE, &cfg_bts_acc_ramping_chan_load_cmd); install_element(BTS_NODE, &cfg_bts_t3113_dynamic_cmd); install_element(BTS_NODE, &cfg_bts_no_t3113_dynamic_cmd); + install_element(BTS_NODE, &cfg_bts_rep_dl_facch_cmd); + install_element(BTS_NODE, &cfg_bts_rep_no_dl_facch_cmd); + install_element(BTS_NODE, &cfg_bts_rep_dl_sacch_cmd); + install_element(BTS_NODE, &cfg_bts_rep_no_dl_sacch_cmd); + install_element(BTS_NODE, &cfg_bts_rep_ul_sacch_cmd); + install_element(BTS_NODE, &cfg_bts_rep_no_ul_sacch_cmd); + install_element(BTS_NODE, &cfg_bts_rep_rxqual_cmd); + neighbor_ident_vty_init(network, network->neighbor_bss_cells); /* See also handover commands added on bts level from handover_vty.c */ diff --git a/src/osmo-bsc/bts.c b/src/osmo-bsc/bts.c index aa7ba1d..065b8ab 100644 --- a/src/osmo-bsc/bts.c +++ b/src/osmo-bsc/bts.c @@ -356,6 +356,8 @@ acc_mgr_init(&bts->acc_mgr, bts); acc_ramp_init(&bts->acc_ramp, bts); + bts->repeated_acch_policy.rxqual = 4; + return bts; } -- To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/21164 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Change-Id: I083eaa2c30478912426e9c24a506f0b88836e190 Gerrit-Change-Number: 21164 Gerrit-PatchSet: 9 Gerrit-Owner: dexter <pmaier at sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge at osmocom.org> Gerrit-Reviewer: pespin <pespin at sysmocom.de> Gerrit-CC: neels <nhofmeyr at sysmocom.de> Gerrit-MessageType: merged -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20201201/df0fa724/attachment.htm>