diff options
author | Neels Hofmeyr <neels@hofmeyr.de> | 2021-07-08 17:46:40 +0200 |
---|---|---|
committer | Neels Hofmeyr <neels@hofmeyr.de> | 2021-07-11 20:31:41 +0200 |
commit | c8cd61ddf258560127292a75221a19e2f3616bc4 (patch) | |
tree | 91da39dea3be53d293a8a68157f77da288906764 | |
parent | e5a761c6b86a5d5e1422bd491fb38bf30cf43bc6 (diff) |
RES IND: add VTY: bts / channel allocator avoid-interference (0|1)
Store the config option whether the channel allocator should try to
avoid lchans with higher interference levels reported in RES IND.
The actual implementation of avoiding interference follows in
I844494092193811dfd9fa4d52983cbaed0fc9248
Related: SYS#5313
Change-Id: I8b62d0b41ad9e908b27713db9219e3dbc1ebaab7
-rw-r--r-- | include/osmocom/bsc/bts.h | 4 | ||||
-rw-r--r-- | src/osmo-bsc/bsc_vty.c | 22 | ||||
-rw-r--r-- | tests/osmo-bsc.vty | 37 |
3 files changed, 63 insertions, 0 deletions
diff --git a/include/osmocom/bsc/bts.h b/include/osmocom/bsc/bts.h index 2e88129dd..992c9bb22 100644 --- a/include/osmocom/bsc/bts.h +++ b/include/osmocom/bsc/bts.h @@ -450,6 +450,10 @@ struct gsm_bts { * rather than starting from TRX0 and go upwards? */ int chan_alloc_reverse; + /* When true, interference measurements from the BTS are used in the channel allocator to favor lchans with less + * interference reported in RSL Resource Indication. */ + bool chan_alloc_avoid_interf; + enum neigh_list_manual_mode neigh_list_manual_mode; /* parameters from which we build SYSTEM INFORMATION */ struct { diff --git a/src/osmo-bsc/bsc_vty.c b/src/osmo-bsc/bsc_vty.c index 07c8a9c9e..9c1813d9d 100644 --- a/src/osmo-bsc/bsc_vty.c +++ b/src/osmo-bsc/bsc_vty.c @@ -1073,6 +1073,8 @@ static void config_write_bts_single(struct vty *vty, struct gsm_bts *bts) vty_out(vty, " channel allocator %s%s", bts->chan_alloc_reverse ? "descending" : "ascending", VTY_NEWLINE); + if (bts->chan_alloc_avoid_interf) + vty_out(vty, " channel allocator avoid-interference 1%s", VTY_NEWLINE); vty_out(vty, " rach tx integer %u%s", bts->si_common.rach_control.tx_integer, VTY_NEWLINE); vty_out(vty, " rach max transmission %u%s", @@ -2839,6 +2841,25 @@ DEFUN_ATTR(cfg_bts_challoc, return CMD_SUCCESS; } +DEFUN_ATTR(cfg_bts_chan_alloc_interf, + cfg_bts_chan_alloc_interf_cmd, + "channel allocator avoid-interference (0|1)", + "Channel Allocator\n" "Channel Allocator\n" + "Configure whether reported interference levels from RES IND are used in channel allocation\n" + "Ignore interference levels (default). Always assign lchans in a deterministic order.\n" + "In channel allocation, prefer lchans with less interference.\n", + CMD_ATTR_IMMEDIATE) +{ + struct gsm_bts *bts = vty->index; + + if (!strcmp(argv[0], "0")) + bts->chan_alloc_avoid_interf = false; + else + bts->chan_alloc_avoid_interf = true; + + return CMD_SUCCESS; +} + #define RACH_STR "Random Access Control Channel\n" DEFUN_USRATTR(cfg_bts_rach_tx_integer, @@ -8081,6 +8102,7 @@ int bsc_vty_init(struct gsm_network *network) install_element(BTS_NODE, &cfg_bts_oml_e1_cmd); install_element(BTS_NODE, &cfg_bts_oml_e1_tei_cmd); install_element(BTS_NODE, &cfg_bts_challoc_cmd); + install_element(BTS_NODE, &cfg_bts_chan_alloc_interf_cmd); install_element(BTS_NODE, &cfg_bts_rach_tx_integer_cmd); install_element(BTS_NODE, &cfg_bts_rach_max_trans_cmd); install_element(BTS_NODE, &cfg_bts_rach_max_delay_cmd); diff --git a/tests/osmo-bsc.vty b/tests/osmo-bsc.vty index 22e2a0668..1d859c3f9 100644 --- a/tests/osmo-bsc.vty +++ b/tests/osmo-bsc.vty @@ -147,3 +147,40 @@ network meas-feed destination 127.0.0.23 4223 meas-feed scenario foo23 ... + + +OsmoBSC(config-net)# bts 0 + +OsmoBSC(config-net-bts)# list +... + channel allocator avoid-interference (0|1) +... + +OsmoBSC(config-net-bts)# channel? + channel Channel Allocator + +OsmoBSC(config-net-bts)# channel ? + allocator Channel Allocator + +OsmoBSC(config-net-bts)# channel allocator ? + ascending Allocate Timeslots and Transceivers in ascending order + descending Allocate Timeslots and Transceivers in descending order + avoid-interference Configure whether reported interference levels from RES IND are used in channel allocation + +OsmoBSC(config-net-bts)# channel allocator avoid-interference ? + 0 Ignore interference levels (default). Always assign lchans in a deterministic order. + 1 In channel allocation, prefer lchans with less interference. + +OsmoBSC(config-net-bts)# show running-config +... !channel allocator avoid-interference +OsmoBSC(config-net-bts)# channel allocator avoid-interference 1 +OsmoBSC(config-net-bts)# show running-config +... + bts 0 +... + channel allocator avoid-interference 1 +... + +OsmoBSC(config-net-bts)# channel allocator avoid-interference 0 +OsmoBSC(config-net-bts)# show running-config +... !channel allocator avoid-interference |