fixeria has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-bsc/+/40723?usp=email )
Change subject: Add [no ]force-cell-sel-ind-after-rel ......................................................................
Add [no ]force-cell-sel-ind-after-rel
Change-Id: Ie5fa3e036e0a0dd4049a4230d6cd4cb7c158088e Related: SYS#7482 --- M include/osmocom/bsc/gsm_data.h M src/osmo-bsc/bsc_vty.c M src/osmo-bsc/gsm_04_08_rr.c 3 files changed, 33 insertions(+), 1 deletion(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/23/40723/1
diff --git a/include/osmocom/bsc/gsm_data.h b/include/osmocom/bsc/gsm_data.h index 59d22d7..1d82d5c 100644 --- a/include/osmocom/bsc/gsm_data.h +++ b/include/osmocom/bsc/gsm_data.h @@ -1086,6 +1086,9 @@ char *pcu_sock_path; unsigned int pcu_sock_wqueue_len_max; struct pcu_sock_state *pcu_state; + + /* Always include the "cell selection indicator after release of all TCHs and SDCCH" IE */ + bool force_cell_sel_ind_after_rel; };
struct gsm_audio_support { diff --git a/src/osmo-bsc/bsc_vty.c b/src/osmo-bsc/bsc_vty.c index e9dabf9..96c6c43 100644 --- a/src/osmo-bsc/bsc_vty.c +++ b/src/osmo-bsc/bsc_vty.c @@ -436,6 +436,9 @@ vty_out(vty, " pcu-socket-wqueue-length %u%s", gsmnet->pcu_sock_wqueue_len_max, VTY_NEWLINE);
+ if (gsmnet->force_cell_sel_ind_after_rel) + vty_out(vty, " force-cell-sel-ind-after-rel%s", VTY_NEWLINE); + neighbor_ident_vty_write_network(vty, " "); mgcp_client_pool_config_write(vty, " ");
@@ -2554,6 +2557,30 @@ return CMD_SUCCESS; }
+DEFUN_ATTR(cfg_net_force_cell_sel_ind_after_rel, + cfg_net_force_cell_sel_ind_after_rel_cmd, + "force-cell-sel-ind-after-rel", + "Always include the "cell selection indicator after release of all TCHs and SDCCH" IE\n", + CMD_ATTR_IMMEDIATE) +{ + struct gsm_network *net = gsmnet_from_vty(vty); + + net->force_cell_sel_ind_after_rel = true; + return CMD_SUCCESS; +} + +DEFUN_ATTR(cfg_net_no_force_cell_sel_ind_after_rel, + cfg_net_no_force_cell_sel_ind_after_rel_cmd, + "no force-cell-sel-ind-after-rel", + NO_STR "Do not force the "cell selection indicator after release of all TCHs and SDCCH" IE\n", + CMD_ATTR_IMMEDIATE) +{ + struct gsm_network *net = gsmnet_from_vty(vty); + + net->force_cell_sel_ind_after_rel = false; + return CMD_SUCCESS; +} + static struct bsc_msc_data *bsc_msc_data(struct vty *vty) { return vty->index; @@ -3644,6 +3671,8 @@ install_element(GSMNET_NODE, &cfg_net_pcu_sock_path_cmd); install_element(GSMNET_NODE, &cfg_bts_pcu_sock_wqueue_len_cmd); install_element(GSMNET_NODE, &cfg_net_no_pcu_sock_cmd); + install_element(GSMNET_NODE, &cfg_net_force_cell_sel_ind_after_rel_cmd); + install_element(GSMNET_NODE, &cfg_net_no_force_cell_sel_ind_after_rel_cmd);
/* Timer configuration commands (generic osmo_tdef API) */ osmo_tdef_vty_groups_init(GSMNET_NODE, bsc_tdef_group); diff --git a/src/osmo-bsc/gsm_04_08_rr.c b/src/osmo-bsc/gsm_04_08_rr.c index 1944321..ed9877e 100644 --- a/src/osmo-bsc/gsm_04_08_rr.c +++ b/src/osmo-bsc/gsm_04_08_rr.c @@ -325,7 +325,7 @@ cause = msgb_put(msg, 1); cause[0] = lchan->release.rr_cause;
- if (lchan->release.last_eutran_plmn_valid) { + if (lchan->release.last_eutran_plmn_valid || bsc_gsmnet->force_cell_sel_ind_after_rel) { uint8_t buf[CELL_SEL_IND_AFTER_REL_MAX_BYTES]; int len; /* FIXME: so far we assume all configured neigbhors match last_eutran_plmn */