aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeels Hofmeyr <nhofmeyr@sysmocom.de>2023-11-22 00:33:11 +0100
committerKeith Whyte <keith@rhizomatica.org>2024-04-06 04:04:19 +0100
commit073baefaf47e632ef3145c99ee699a4dacc63b05 (patch)
treea8e5078d63c6e539a5fedada930264122311f423
parent6c6ca4450a59aa5c3c36107f11c28379dfac4d2a (diff)
use X6 timer for REL ACK, not T3111
The lchan FSM timers were originally implemented to model earlier code as closely as possible. Now it has come up that T3111 is used in the wrong place: 3GPP TS 44.018 says: T3111: This timer is used to delay the channel deactivation after disconnection of the main signalling link. Its purpose is to let some time for possible repetition of the disconnection. Its value is equal to the value of T3110. Before this patch, we use it also to time the RF REL ACK message. That is pretty bad, because T3111 is only 2 seconds by default, making RF CHAN REL vulnerable for timeout. When a user increased T3111 to alleviate the problem, the result is that each lchan also delays its normal channel release procedure by the configured amount of time. Very inelegant. Instead, use the X6 timer for REL ACK, because X6 already times the CHAN ACTIV ACK, which is semantically identical. Compatibility / user impact: No negative impact expected. We can assume that every user out there has X6 configured to work for CHAN ACTIV ACK. From that logic, switching channel release ACK to the same timer is guaranteed to be what the user intends. We could instruct users in the release notes that they may now choose T3111 freely (as short as 2 seconds) without jeopardising channel release anymore. Related: SYS#6655 Change-Id: Ibd118fa23e5deb4381bc31b11a7b495f57901d6c
-rw-r--r--src/osmo-bsc/lchan_fsm.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/osmo-bsc/lchan_fsm.c b/src/osmo-bsc/lchan_fsm.c
index 1b012bd8a..d6dfe3ac7 100644
--- a/src/osmo-bsc/lchan_fsm.c
+++ b/src/osmo-bsc/lchan_fsm.c
@@ -330,7 +330,7 @@ struct osmo_tdef_state_timeout lchan_fsm_timeouts[32] = {
[LCHAN_ST_WAIT_RLL_RTP_ESTABLISH] = { .T = 3101 },
[LCHAN_ST_WAIT_RLL_RTP_RELEASED] = { .T = 3109 },
[LCHAN_ST_WAIT_BEFORE_RF_RELEASE] = { .T = 3111 },
- [LCHAN_ST_WAIT_RF_RELEASE_ACK] = { .T = 3111 },
+ [LCHAN_ST_WAIT_RF_RELEASE_ACK] = { .T = -6 },
[LCHAN_ST_WAIT_AFTER_ERROR] = { .T = -3111 },
[LCHAN_ST_WAIT_RR_CHAN_MODE_MODIFY_ACK] = { .T = -13 },
[LCHAN_ST_WAIT_RSL_CHAN_MODE_MODIFY_ACK] = { .T = -14 },