Allow disabling SDCCH8 on DYN Chans

Change-Id: Ie1a4103ec78a0840c83ad72e7cd6a4a1fc758af9
This commit is contained in:
Keith Whyte 2023-01-10 21:27:14 +01:00 committed by Keith Whyte
parent b2b5ca0613
commit b8c92f7fa9
4 changed files with 22 additions and 1 deletions

View File

@ -1004,6 +1004,9 @@ struct gsm_network {
/* Allow or disallow TCH/F on dynamic TCH/F_TCH/H_SDCCH8_PDCH; OS#1778 */
bool dyn_ts_allow_tch_f;
/* Allow or disallow SDCCH8 on dynamic TCH/F_TCH/H_SDCCH8_PDCH; OS#1778 */
bool dyn_ts_allow_sdcch8;
/* all active subscriber connections. */
struct llist_head subscr_conns;

View File

@ -368,6 +368,9 @@ static int config_write_net(struct vty *vty)
if (!gsmnet->dyn_ts_allow_tch_f)
vty_out(vty, " dyn_ts_allow_tch_f 0%s", VTY_NEWLINE);
if (!gsmnet->dyn_ts_allow_sdcch8)
vty_out(vty, " dyn_ts_allow_sdcch8 0%s", VTY_NEWLINE);
if (gsmnet->tz.override != 0) {
if (gsmnet->tz.dst)
vty_out(vty, " timezone %d %d %d%s",
@ -2280,6 +2283,18 @@ DEFUN_USRATTR(cfg_net_encryption,
return CMD_SUCCESS;
}
DEFUN(cfg_net_dyn_ts_allow_sdcch8,
cfg_net_dyn_ts_allow_sdcch8_cmd,
"dyn_ts_allow_sdcch8 (0|1)",
"Allow or disallow allocating SDCCH8 on TCH/F_TCH/H_SDCCH8_PDCH timeslots\n"
"Disallow SDCCH8 on TCH/F_TCH/H_SDCCH8_PDCH\n"
"Allow SDCCH8 on TCH/F_TCH/H_SDCCH8_PDCH (default)\n")
{
struct gsm_network *gsmnet = gsmnet_from_vty(vty);
gsmnet->dyn_ts_allow_sdcch8 = atoi(argv[0]) ? true : false;
return CMD_SUCCESS;
}
DEFUN_DEPRECATED(cfg_net_dyn_ts_allow_tch_f,
cfg_net_dyn_ts_allow_tch_f_cmd,
"dyn_ts_allow_tch_f (0|1)",
@ -3592,6 +3607,7 @@ int bsc_vty_init(struct gsm_network *network)
install_element(GSMNET_NODE, &cfg_net_per_loc_upd_cmd);
install_element(GSMNET_NODE, &cfg_net_no_per_loc_upd_cmd);
install_element(GSMNET_NODE, &cfg_net_dyn_ts_allow_tch_f_cmd);
install_element(GSMNET_NODE, &cfg_net_dyn_ts_allow_sdcch8_cmd);
install_element(GSMNET_NODE, &cfg_net_meas_feed_dest_cmd);
install_element(GSMNET_NODE, &cfg_net_meas_feed_scenario_cmd);
install_element(GSMNET_NODE, &cfg_net_meas_feed_wqueue_max_len_cmd);

View File

@ -386,7 +386,8 @@ struct gsm_lchan *lchan_avail_by_type(struct gsm_bts *bts,
lchan = lc_find(&ts_list, second_cbch, log);
/* No dedicated SDCCH available -- try fully dynamic
* TCH/F_TCH/H_SDCCH8_PDCH if BTS supports it: */
if (lchan == NULL && osmo_bts_has_feature(&bts->features, BTS_FEAT_DYN_TS_SDCCH8))
if (lchan == NULL && lchan && bts->network->dyn_ts_allow_sdcch8 &&
osmo_bts_has_feature(&bts->features, BTS_FEAT_DYN_TS_SDCCH8))
lchan = lc_dyn_find(&ts_list, GSM_PCHAN_OSMO_DYN,
GSM_PCHAN_SDCCH8_SACCH8C, log);
break;

View File

@ -113,6 +113,7 @@ struct gsm_network *gsm_network_init(void *ctx)
};
net->dyn_ts_allow_tch_f = true;
net->dyn_ts_allow_sdcch8 = true;
/* Permit a compile-time default of A5/3 and A5/1 */
net->a5_encryption_mask = (1 << 3) | (1 << 1);