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-bsc/+/24548 ) Change subject: Make interference measurement parameters configurable ...................................................................... Make interference measurement parameters configurable Change-Id: I99ebf57aac1f3ca7e0497c3b4f6b0738c6ed7e47 Related: SYS#5313, OS#1866 --- M include/osmocom/bsc/bts.h M include/osmocom/bsc/gsm_data.h M src/osmo-bsc/bsc_vty.c M src/osmo-bsc/bts.c M src/osmo-bsc/bts_ipaccess_nanobts_omlattr.c M src/osmo-bsc/gsm_data.c M tests/Makefile.am A tests/interf_meas.vty 8 files changed, 139 insertions(+), 5 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/48/24548/1 diff --git a/include/osmocom/bsc/bts.h b/include/osmocom/bsc/bts.h index 7a491d9..72f83eb 100644 --- a/include/osmocom/bsc/bts.h +++ b/include/osmocom/bsc/bts.h @@ -534,6 +534,9 @@ struct gsm_power_ctrl_params ms_power_ctrl; struct gsm_power_ctrl_params bs_power_ctrl; + /* Interference Measurement Parameters */ + struct gsm_interf_meas_params interf_meas_params; + /* We will ignore CHAN RQD with access delay greater than rach_max_delay */ uint8_t rach_max_delay; }; diff --git a/include/osmocom/bsc/gsm_data.h b/include/osmocom/bsc/gsm_data.h index 3f1446b..1540864 100644 --- a/include/osmocom/bsc/gsm_data.h +++ b/include/osmocom/bsc/gsm_data.h @@ -1414,6 +1414,16 @@ extern const struct gsm_power_ctrl_params power_ctrl_params_def; +/* Interference Measurement Parameters */ +struct gsm_interf_meas_params { + /* Intave: Interference Averaging period (see 3GPP TS 45.008, table A.1) */ + uint8_t avg_period; /* number of SACCH multiframes, 1 .. 31 */ + /* Interference level Boundaries (see 3GPP TS 52.021, section 9.4.25) */ + uint8_t bounds_dbm[6]; /* -x dBm values for boundaries 0 .. X5 */ +}; + +extern const struct gsm_interf_meas_params interf_meas_params_def; + enum rsl_cmod_spd chan_mode_to_rsl_cmod_spd(enum gsm48_chan_mode chan_mode); #endif /* _GSM_DATA_H */ diff --git a/src/osmo-bsc/bsc_vty.c b/src/osmo-bsc/bsc_vty.c index 6f4e2ec..f6dc274 100644 --- a/src/osmo-bsc/bsc_vty.c +++ b/src/osmo-bsc/bsc_vty.c @@ -1236,6 +1236,25 @@ || bts->repeated_acch_policy.dl_facch_cmd) vty_out(vty, " repeat rxqual %u%s", bts->repeated_acch_policy.rxqual, VTY_NEWLINE); + if (bts->interf_meas_params.avg_period != interf_meas_params_def.avg_period) { + vty_out(vty, " interference-meas avg-period %u%s", + bts->interf_meas_params.avg_period, + VTY_NEWLINE); + } + if (memcmp(bts->interf_meas_params.bounds_dbm, + interf_meas_params_def.bounds_dbm, + sizeof(interf_meas_params_def.bounds_dbm))) { + vty_out(vty, " interference-meas level-bounds " + "%d %d %d %d %d %d%s", + -1 * bts->interf_meas_params.bounds_dbm[0], + -1 * bts->interf_meas_params.bounds_dbm[1], + -1 * bts->interf_meas_params.bounds_dbm[2], + -1 * bts->interf_meas_params.bounds_dbm[3], + -1 * bts->interf_meas_params.bounds_dbm[4], + -1 * bts->interf_meas_params.bounds_dbm[5], + VTY_NEWLINE); + } + /* BS/MS Power Control parameters */ config_write_power_ctrl(vty, 2, &bts->bs_power_ctrl); config_write_power_ctrl(vty, 2, &bts->ms_power_ctrl); @@ -4890,6 +4909,46 @@ return CMD_SUCCESS; } +DEFUN_USRATTR(cfg_bts_interf_meas_avg_period, + cfg_bts_interf_meas_avg_period_cmd, + X(BSC_VTY_ATTR_RESTART_ABIS_OML_LINK), + "interference-meas avg-period <1-31>", + "Interference measurement parameters\n" + "Averaging period (Intave)\n" + "Number of SACCH multiframes\n") +{ + struct gsm_bts *bts = vty->index; + + bts->interf_meas_params.avg_period = atoi(argv[0]); + + return CMD_SUCCESS; +} + +DEFUN_USRATTR(cfg_bts_interf_meas_level_bounds, + cfg_bts_interf_meas_level_bounds_cmd, + X(BSC_VTY_ATTR_RESTART_ABIS_OML_LINK), + "interference-meas level-bounds " + "<-120-0> <-120-0> <-120-0> <-120-0> <-120-0> <-120-0>", + "Interference measurement parameters\n" + "Interference level Boundaries\n" + "Interference boundary 0 (dBm)\n" + "Interference boundary X1 (dBm)\n" + "Interference boundary X2 (dBm)\n" + "Interference boundary X3 (dBm)\n" + "Interference boundary X4 (dBm)\n" + "Interference boundary X5 (dBm)\n") +{ + struct gsm_bts *bts = vty->index; + unsigned int i; + + for (i = 0; i < ARRAY_SIZE(bts->interf_meas_params.bounds_dbm); i++) { + bts->interf_meas_params.bounds_dbm[i] = abs(atoi(argv[i])); + /* TODO: ensure ascending (or descending?) order */ + } + + return CMD_SUCCESS; +} + #define BS_POWER_CONTROL_CMD \ "bs-power-control" #define MS_POWER_CONTROL_CMD \ @@ -7864,6 +7923,8 @@ install_element(BTS_NODE, &cfg_bts_rep_ul_dl_sacch_cmd); install_element(BTS_NODE, &cfg_bts_rep_no_ul_dl_sacch_cmd); install_element(BTS_NODE, &cfg_bts_rep_rxqual_cmd); + install_element(BTS_NODE, &cfg_bts_interf_meas_avg_period_cmd); + install_element(BTS_NODE, &cfg_bts_interf_meas_level_bounds_cmd); neighbor_ident_vty_init(); /* 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 857ddd2..7306560 100644 --- a/src/osmo-bsc/bts.c +++ b/src/osmo-bsc/bts.c @@ -357,6 +357,9 @@ bts->bs_power_ctrl = power_ctrl_params_def; bts->bs_power_ctrl.dir = GSM_PWR_CTRL_DIR_DL; + /* Interference Measurement Parameters (defaults) */ + bts->interf_meas_params = interf_meas_params_def; + bts->rach_max_delay = 63; return bts; diff --git a/src/osmo-bsc/bts_ipaccess_nanobts_omlattr.c b/src/osmo-bsc/bts_ipaccess_nanobts_omlattr.c index 885f4cc..ed3a802 100644 --- a/src/osmo-bsc/bts_ipaccess_nanobts_omlattr.c +++ b/src/osmo-bsc/bts_ipaccess_nanobts_omlattr.c @@ -35,11 +35,12 @@ if (!msgb) return NULL; - memcpy(buf, "\x55\x5b\x61\x67\x6d\x73", 6); - msgb_tv_fixed_put(msgb, NM_ATT_INTERF_BOUND, 6, buf); - - /* interference avg. period in numbers of SACCH multifr */ - msgb_tv_put(msgb, NM_ATT_INTAVE_PARAM, 0x06); + /* Interference level Boundaries: 0 .. X5 (3GPP TS 52.021, section 9.4.25) */ + msgb_tv_fixed_put(msgb, NM_ATT_INTERF_BOUND, + sizeof(bts->interf_meas_params.bounds_dbm), + &bts->interf_meas_params.bounds_dbm[0]); + /* Intave: Interference Averaging period (3GPP TS 52.021, section 9.4.24) */ + msgb_tv_put(msgb, NM_ATT_INTAVE_PARAM, bts->interf_meas_params.avg_period); rlt = gsm_bts_get_radio_link_timeout(bts); if (rlt == -1) { diff --git a/src/osmo-bsc/gsm_data.c b/src/osmo-bsc/gsm_data.c index ea6c685..b33b1c3 100644 --- a/src/osmo-bsc/gsm_data.c +++ b/src/osmo-bsc/gsm_data.c @@ -1002,6 +1002,19 @@ } } +/* Default Interference Measurement Parameters */ +const struct gsm_interf_meas_params interf_meas_params_def = { + .avg_period = 6, /* 6 SACCH periods */ + .bounds_dbm = { + 85, /* 0: -85 dBm */ + 91, /* X1: -91 dBm */ + 97, /* X2: -97 dBm */ + 103, /* X3: -103 dBm */ + 109, /* X4: -109 dBm */ + 115, /* X5: -115 dBm */ + }, +}; + /* Default MS/BS Power Control parameters (see 3GPP TS 45.008, table A.1) */ const struct gsm_power_ctrl_params power_ctrl_params_def = { /* Static Power Control is the safe default */ diff --git a/tests/Makefile.am b/tests/Makefile.am index 5e23be0..0831dee 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -41,6 +41,7 @@ osmo-bsc.vty \ timer.vty \ power_ctrl.vty \ + interf_meas.vty \ ctrl/osmo-bsc-neigh-test.cfg \ ctrl/osmo-bsc-apply-config-file.cfg \ ctrl/osmo-bsc-apply-config-file-invalid.cfg \ diff --git a/tests/interf_meas.vty b/tests/interf_meas.vty new file mode 100644 index 0000000..76b33e5 --- /dev/null +++ b/tests/interf_meas.vty @@ -0,0 +1,42 @@ +OsmoBSC> enable + +OsmoBSC# ### Default configuration +OsmoBSC# show running-config +... !interference-meas + +OsmoBSC# configure terminal +OsmoBSC(config)# network +OsmoBSC(config-net)# bts 0 + +OsmoBSC(config-net-bts)# interference-meas? + interference-meas Interference measurement parameters +OsmoBSC(config-net-bts)# interference-meas ? + avg-period Averaging period (Intave) + level-bounds Interference level Boundaries + +OsmoBSC(config-net-bts)# ### Averaging period +OsmoBSC(config-net-bts)# interference-meas avg-period ? + <1-31> Number of SACCH multiframes +OsmoBSC(config-net-bts)# interference-meas avg-period 0 +% Unknown command. +OsmoBSC(config-net-bts)# interference-meas avg-period 30 +OsmoBSC(config-net-bts)# show running-config +... !interference-meas + bts 0 +... !interference-meas + interference-meas avg-period 30 +... !interference-meas + +OsmoBSC(config-net-bts)# ### Interference level Boundaries +OsmoBSC(config-net-bts)# interference-meas level-bounds ? + <-120-0> Interference boundary 0 (dBm) +OsmoBSC(config-net-bts)# interference-meas level-bounds -85 -90 -95 -100 -105 ? + <-120-0> Interference boundary X5 (dBm) +OsmoBSC(config-net-bts)# interference-meas level-bounds -85 -90 -95 -100 -105 -110 +OsmoBSC(config-net-bts)# show running-config +... !interference-meas + bts 0 +... !interference-meas + interference-meas avg-period 30 + interference-meas level-bounds -85 -90 -95 -100 -105 -110 +... !interference-meas -- To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/24548 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Change-Id: I99ebf57aac1f3ca7e0497c3b4f6b0738c6ed7e47 Gerrit-Change-Number: 24548 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/20210604/a693b38c/attachment.htm>