neels has uploaded this change for review. (
https://gerrit.osmocom.org/c/osmo-bsc/+/29422
)
Change subject: add X27 timeout: release lchan that lacks L1 Info
......................................................................
add X27 timeout: release lchan that lacks L1 Info
To lchan_fsm ESTABLISHED, add a timeout: if MEAS REP lack L1 Info for a
time defined by timer net X27, release the lchan.
Related: OS#5530
Related: If7c76445373d5d0e915a3e8910d3eb991216f768 (osmo-ttcn3-hacks)
Change-Id: I6fb29315568554c8490ee999fcfd1b77d8245389
---
M include/osmocom/bsc/lchan_fsm.h
M src/osmo-bsc/abis_rsl.c
M src/osmo-bsc/lchan_fsm.c
M src/osmo-bsc/net_init.c
4 files changed, 18 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/22/29422/1
diff --git a/include/osmocom/bsc/lchan_fsm.h b/include/osmocom/bsc/lchan_fsm.h
index b9ffb22..276631b 100644
--- a/include/osmocom/bsc/lchan_fsm.h
+++ b/include/osmocom/bsc/lchan_fsm.h
@@ -54,6 +54,7 @@
LCHAN_EV_RSL_CHAN_MODE_MODIFY_ACK,
LCHAN_EV_RSL_CHAN_MODE_MODIFY_NACK,
LCHAN_EV_REQUEST_MODE_MODIFY,
+ LCHAN_EV_RX_MEAS_RES_L1_INFO,
};
void lchan_fsm_init();
diff --git a/src/osmo-bsc/abis_rsl.c b/src/osmo-bsc/abis_rsl.c
index 1c60405..8f94c05 100644
--- a/src/osmo-bsc/abis_rsl.c
+++ b/src/osmo-bsc/abis_rsl.c
@@ -1450,6 +1450,11 @@
lchan_ms_pwr_ctrl(msg->lchan, mr);
+ if ((mr->flags & MEAS_REP_F_MS_L1)) {
+ /* Notify lchan_fsm that L1 is still alive */
+ osmo_fsm_inst_dispatch(mr->lchan->fi, LCHAN_EV_RX_MEAS_RES_L1_INFO, mr);
+ }
+
send_lchan_signal(S_LCHAN_MEAS_REP, msg->lchan, mr);
return 0;
diff --git a/src/osmo-bsc/lchan_fsm.c b/src/osmo-bsc/lchan_fsm.c
index 21e145b..1c7e9c9 100644
--- a/src/osmo-bsc/lchan_fsm.c
+++ b/src/osmo-bsc/lchan_fsm.c
@@ -285,6 +285,7 @@
[LCHAN_ST_WAIT_TS_READY] = { .T=-5 },
[LCHAN_ST_WAIT_ACTIV_ACK] = { .T=-6 },
[LCHAN_ST_WAIT_RLL_RTP_ESTABLISH] = { .T=3101 },
+ [LCHAN_ST_ESTABLISHED] = { .T = -27 },
[LCHAN_ST_WAIT_RLL_RTP_RELEASED] = { .T=3109 },
[LCHAN_ST_WAIT_BEFORE_RF_RELEASE] = { .T=3111 },
[LCHAN_ST_WAIT_RF_RELEASE_ACK] = { .T=3111 },
@@ -1666,6 +1667,7 @@
| S(LCHAN_EV_REQUEST_MODE_MODIFY)
,
.out_state_mask = 0
+ | S(LCHAN_ST_ESTABLISHED)
| S(LCHAN_ST_UNUSED)
| S(LCHAN_ST_WAIT_RLL_RTP_RELEASED)
| S(LCHAN_ST_WAIT_BEFORE_RF_RELEASE)
@@ -1764,6 +1766,7 @@
OSMO_VALUE_STRING(LCHAN_EV_RSL_CHAN_MODE_MODIFY_ACK),
OSMO_VALUE_STRING(LCHAN_EV_RSL_CHAN_MODE_MODIFY_NACK),
OSMO_VALUE_STRING(LCHAN_EV_REQUEST_MODE_MODIFY),
+ OSMO_VALUE_STRING(LCHAN_EV_RX_MEAS_RES_L1_INFO),
{}
};
@@ -1789,6 +1792,13 @@
* radio link layer failed */
return;
+ case LCHAN_EV_RX_MEAS_RES_L1_INFO:
+ if (fi->state != LCHAN_ST_ESTABLISHED)
+ return;
+ /* Re-enter ESTABLISHED state to refresh "L1 alive" timeout */
+ lchan_fsm_state_chg(LCHAN_ST_ESTABLISHED);
+ return;
+
default:
return;
}
@@ -1937,6 +1947,7 @@
.allstate_event_mask = 0
| S(LCHAN_EV_TS_ERROR)
| S(LCHAN_EV_RLL_ERR_IND)
+ | S(LCHAN_EV_RX_MEAS_RES_L1_INFO)
,
.timer_cb = lchan_fsm_timer_cb,
.cleanup = lchan_fsm_cleanup,
diff --git a/src/osmo-bsc/net_init.c b/src/osmo-bsc/net_init.c
index 8a8c0a6..23a93cc 100644
--- a/src/osmo-bsc/net_init.c
+++ b/src/osmo-bsc/net_init.c
@@ -72,6 +72,7 @@
" after this amount of idle time, forget internally cumulated time remainders.
Zero to always"
" keep remainders. See also X16, X17." },
{ .T=-25, .default_val=5, .desc="Timeout for initial user data after an MSC
initiated an SCCP connection to the BSS" },
+ { .T=-27, .default_val = 30, .desc = "Time after which to release an lchan when not
receiving L1 Info in MEAS RES" },
{ .T=-3111, .default_val=4, .desc="Wait time after lchan was released in error
(should be T3111 + 2s)" },
{ .T=-3210, .default_val=20, .desc="After L3 Complete, wait for MSC to
confirm" },
{}
--
To view, visit
https://gerrit.osmocom.org/c/osmo-bsc/+/29422
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Change-Id: I6fb29315568554c8490ee999fcfd1b77d8245389
Gerrit-Change-Number: 29422
Gerrit-PatchSet: 1
Gerrit-Owner: neels <nhofmeyr(a)sysmocom.de>
Gerrit-MessageType: newchange