Change in libosmocore[master]: lapdm: Allow SABM L=0 in Timer Recovery State

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

pespin gerrit-no-reply at lists.osmocom.org
Wed Oct 21 13:03:32 UTC 2020


pespin has submitted this change. ( https://gerrit.osmocom.org/c/libosmocore/+/20807 )

Change subject: lapdm: Allow SABM L=0 in Timer Recovery State
......................................................................

lapdm: Allow SABM L=0 in Timer Recovery State

3GPP TS 44.006 8.6.3 "Procedures for re-establishment" is quite
explicit:
"""
When the data link layer receives in the multiple frame established state
or !!!timer recovery state!!! a DL-ESTABLISH- REQUEST primitive from layer
3 or an SABM (with L=0), the normal establishment procedure of sub-clause
8.4.1.2 shall be initiated.
"""

If L>0 in that state, send a DM as stated in 8.4.1.2:
"""
If the data link layer entity is unable to enter the multiple-frame-established
state, it shall respond to the SABM command with a DM response with the F bit
set to the same binary value as the P bit in the received SABM command.
"""

Related: OS#4549
Related: OS#4819
Change-Id: I7959dc39f883cd5c56c36a21176a2401838d7b62
---
M src/gsm/lapd_core.c
1 file changed, 17 insertions(+), 0 deletions(-)

Approvals:
  laforge: Looks good to me, approved
  fixeria: Looks good to me, but someone else must approve
  Jenkins Builder: Verified



diff --git a/src/gsm/lapd_core.c b/src/gsm/lapd_core.c
index bcb64b0..ed0b320 100644
--- a/src/gsm/lapd_core.c
+++ b/src/gsm/lapd_core.c
@@ -849,6 +849,23 @@
 	switch (dl->state) {
 	case LAPD_STATE_IDLE:
 		break;
+	case LAPD_STATE_TIMER_RECOV:
+		LOGDL(dl, LOGL_INFO, "SABM command, timer recovery state\n");
+		/* If link is lost on the remote side, we start over
+		* and send DL-ESTABLISH indication again. */
+		/* 3GPP TS 44.006 8.6.3 "Procedures for re-establishment" */
+		if (length) {
+			/* check for contention resoultion */
+			LOGDL(dl, LOGL_ERROR, "SABM L>0 not expected in timer "
+			      "recovery state\n");
+			mdl_error(MDL_CAUSE_SABM_INFO_NOTALL, lctx);
+			lapd_send_dm(lctx);
+			msgb_free(msg);
+			return 0;
+		}
+		/* re-establishment, continue below */
+		lapd_stop_t200(dl);
+		break;
 	case LAPD_STATE_MF_EST:
 		LOGDL(dl, LOGL_INFO, "SABM command, multiple frame established state\n");
 		/* If link is lost on the remote side, we start over

-- 
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/20807
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: I7959dc39f883cd5c56c36a21176a2401838d7b62
Gerrit-Change-Number: 20807
Gerrit-PatchSet: 3
Gerrit-Owner: pespin <pespin at sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy at sysmocom.de>
Gerrit-Reviewer: laforge <laforge at osmocom.org>
Gerrit-Reviewer: pespin <pespin at sysmocom.de>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20201021/39855fe0/attachment.htm>


More information about the gerrit-log mailing list