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
This commit is contained in:
Neels Hofmeyr 2023-11-22 00:33:11 +01:00
parent 647bc1e698
commit e24e8a3389
1 changed files with 1 additions and 1 deletions

View File

@ -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 },