diff options
Diffstat (limited to 'openbsc/src/libbsc')
-rw-r--r-- | openbsc/src/libbsc/bsc_vty.c | 29 | ||||
-rw-r--r-- | openbsc/src/libbsc/bts_ipaccess_nanobts_omlattr.c | 14 |
2 files changed, 36 insertions, 7 deletions
diff --git a/openbsc/src/libbsc/bsc_vty.c b/openbsc/src/libbsc/bsc_vty.c index 2fc39ab4c..9fc289503 100644 --- a/openbsc/src/libbsc/bsc_vty.c +++ b/openbsc/src/libbsc/bsc_vty.c @@ -604,9 +604,11 @@ 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); + if (gsm_bts_get_radio_link_timeout(bts) < 0) + vty_out(vty, " radio-link-timeout infinite%s", VTY_NEWLINE); + else + vty_out(vty, " radio-link-timeout %d%s", + gsm_bts_get_radio_link_timeout(bts), VTY_NEWLINE); vty_out(vty, " channel allocator %s%s", bts->chan_alloc_reverse ? "descending" : "ascending", VTY_NEWLINE); @@ -2299,7 +2301,25 @@ DEFUN(cfg_bts_radio_link_timeout, cfg_bts_radio_link_timeout_cmd, { struct gsm_bts *bts = vty->index; - set_radio_link_timeout(&bts->si_common.cell_options, atoi(argv[0])); + gsm_bts_set_radio_link_timeout(bts, atoi(argv[0])); + + return CMD_SUCCESS; +} + +DEFUN(cfg_bts_radio_link_timeout_inf, cfg_bts_radio_link_timeout_inf_cmd, + "radio-link-timeout infinite", + "Radio link timeout criterion (BTS side)\n" + "Infinite Radio link timeout value (use only for BTS RF testing)\n") +{ + struct gsm_bts *bts = vty->index; + + if (bts->type != GSM_BTS_TYPE_OSMOBTS) { + vty_out(vty, "%% infinite radio link timeout not supported by this BTS%s", VTY_NEWLINE); + return CMD_WARNING; + } + + vty_out(vty, "%% INFINITE RADIO LINK TIMEOUT, USE ONLY FOR BTS RF TESTING%s", VTY_NEWLINE); + gsm_bts_set_radio_link_timeout(bts, -1); return CMD_SUCCESS; } @@ -4180,6 +4200,7 @@ int bsc_vty_init(struct gsm_network *network) 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_radio_link_timeout_inf_cmd); install_element(BTS_NODE, &cfg_bts_gprs_mode_cmd); install_element(BTS_NODE, &cfg_bts_gprs_11bit_rach_support_for_egprs_cmd); install_element(BTS_NODE, &cfg_bts_gprs_ns_timer_cmd); diff --git a/openbsc/src/libbsc/bts_ipaccess_nanobts_omlattr.c b/openbsc/src/libbsc/bts_ipaccess_nanobts_omlattr.c index 0291129d0..473e1caea 100644 --- a/openbsc/src/libbsc/bts_ipaccess_nanobts_omlattr.c +++ b/openbsc/src/libbsc/bts_ipaccess_nanobts_omlattr.c @@ -38,6 +38,7 @@ struct msgb *nanobts_attr_bts_get(struct gsm_bts *bts) { struct msgb *msgb; uint8_t buf[256]; + int rlt; msgb = msgb_alloc(1024, "nanobts_attr_bts"); memcpy(buf, "\x55\x5b\x61\x67\x6d\x73", 6); @@ -46,9 +47,16 @@ struct msgb *nanobts_attr_bts_get(struct gsm_bts *bts) /* interference avg. period in numbers of SACCH multifr */ msgb_tv_put(msgb, NM_ATT_INTAVE_PARAM, 0x06); - /* conn fail based on SACCH error rate */ - buf[0] = 0x01; - buf[1] = get_radio_link_timeout(&bts->si_common.cell_options); + rlt = gsm_bts_get_radio_link_timeout(bts); + if (rlt == -1) { + /* Osmocom extension: Use infinite radio link timeout */ + buf[0] = 0xFF; + buf[1] = 0x00; + } else { + /* conn fail based on SACCH error rate */ + buf[0] = 0x01; + buf[1] = rlt; + } msgb_tl16v_put(msgb, NM_ATT_CONN_FAIL_CRIT, 2, buf); memcpy(buf, "\x1e\x24\x24\xa8\x34\x21\xa8", 7); |