Add option to set RADIO LINK TIMEOUT value via VTY

This commit is contained in:
Andreas Eversberg 2013-03-10 11:49:35 +01:00 committed by Holger Hans Peter Freyther
parent 93e795c1fd
commit 4d4944a07d
4 changed files with 33 additions and 3 deletions

View File

@ -23,6 +23,20 @@ static inline struct msgb *gsm48_msgb_alloc(void)
"GSM 04.08");
}
static inline int get_radio_link_timeout(struct gsm48_cell_options *cell_options)
{
return (cell_options->radio_link_timeout + 1) << 2;
}
static inline void set_radio_link_timeout(struct gsm48_cell_options *cell_options, int value)
{
if (value < 4)
value = 4;
if (value > 64)
value = 64;
cell_options->radio_link_timeout = (value >> 2) - 1;
}
/* config options controlling the behaviour of the lower leves */
void gsm0408_allow_everyone(int allow);
void gsm0408_clear_request(struct gsm_subscriber_connection *conn, uint32_t cause);

View File

@ -454,9 +454,6 @@ static int bootstrap_bts(struct gsm_bts *bts)
return -EINVAL;
}
/* some defaults for our system information */
bts->si_common.cell_options.radio_link_timeout = 7; /* 12 */
/* allow/disallow DTXu */
if (bts->network->dtx_enabled)
bts->si_common.cell_options.dtx = 0;

View File

@ -543,6 +543,9 @@ static void config_write_bts_single(struct vty *vty, struct gsm_bts *bts)
vty_out(vty, " periodic location update %u%s",
bts->si_common.chan_desc.t3212 * 6, VTY_NEWLINE);
vty_out(vty, " radio-link-timeout %d%s",
get_radio_link_timeout(&bts->si_common.cell_options),
VTY_NEWLINE);
vty_out(vty, " channel allocator %s%s",
bts->chan_alloc_reverse ? "descending" : "ascending",
VTY_NEWLINE);
@ -2272,6 +2275,19 @@ DEFUN(cfg_bts_no_per_loc_upd, cfg_bts_no_per_loc_upd_cmd,
struct gsm_bts *bts = vty->index;
bts->si_common.chan_desc.t3212 = 0;
return CMD_SUCCESS;
}
DEFUN(cfg_bts_radio_link_timeout, cfg_bts_radio_link_timeout_cmd,
"radio-link-timeout <4-64>",
"Radio link timeout criterion (BTS side)\n"
"Radio link timeout value (lost SACCH block)\n")
{
struct gsm_bts *bts = vty->index;
set_radio_link_timeout(&bts->si_common.cell_options, atoi(argv[0]));
return CMD_SUCCESS;
}
@ -3466,6 +3482,7 @@ int bsc_vty_init(const struct log_info *cat)
install_element(BTS_NODE, &cfg_bts_temp_ofs_inf_cmd);
install_element(BTS_NODE, &cfg_bts_penalty_time_cmd);
install_element(BTS_NODE, &cfg_bts_penalty_time_rsvd_cmd);
install_element(BTS_NODE, &cfg_bts_radio_link_timeout_cmd);
install_element(BTS_NODE, &cfg_bts_gprs_mode_cmd);
install_element(BTS_NODE, &cfg_bts_gprs_ns_timer_cmd);
install_element(BTS_NODE, &cfg_bts_gprs_rac_cmd);

View File

@ -333,6 +333,8 @@ struct gsm_bts *gsm_bts_alloc_register(struct gsm_network *net, enum gsm_bts_typ
bts->si_common.chan_desc.bs_pa_mfrms = RSL_BS_PA_MFRMS_5; /* paging frames */
bts->si_common.chan_desc.bs_ag_blks_res = 1; /* reserved AGCH blocks */
bts->si_common.chan_desc.t3212 = 5; /* Use 30 min periodic update interval as sane default */
set_radio_link_timeout(&bts->si_common.cell_options, 32);
/* Use RADIO LINK TIMEOUT of 32 seconds */
llist_add_tail(&bts->list, &net->bts_list);