jolly has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/libosmocore/+/35015?usp=email )


Change subject: LAPDm: Add a flag to enable suppression of subsequent REJ frame
......................................................................

LAPDm: Add a flag to enable suppression of subsequent REJ frame

This behaviour was default in earlier versions of LAPDm/LAPD. Because it
is only required for osmocom-bb, a flag is added to enable it there.

Related: OS#5969
Change-Id: I93994dbbd1fc2c9edb8f3015c6b18ecd0fce0565
---
M include/osmocom/gsm/lapdm.h
M include/osmocom/isdn/lapd_core.h
M src/gsm/lapdm.c
M src/isdn/lapd_core.c
4 files changed, 19 insertions(+), 3 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/15/35015/1

diff --git a/include/osmocom/gsm/lapdm.h b/include/osmocom/gsm/lapdm.h
index 2777dec..0f616db 100644
--- a/include/osmocom/gsm/lapdm.h
+++ b/include/osmocom/gsm/lapdm.h
@@ -50,6 +50,7 @@

 #define LAPDM_ENT_F_EMPTY_FRAME                0x0001
 #define LAPDM_ENT_F_POLLING_ONLY       0x0002
+#define LAPDM_ENT_F_DROP_2ND_REJ       0x0004

 /*! a LAPDm Entity */
 struct lapdm_entity {
diff --git a/include/osmocom/isdn/lapd_core.h b/include/osmocom/isdn/lapd_core.h
index 776d4f4..1e010af 100644
--- a/include/osmocom/isdn/lapd_core.h
+++ b/include/osmocom/isdn/lapd_core.h
@@ -86,6 +86,7 @@

 /*! lapd_flags */
 #define LAPD_F_RTS             0x0001
+#define LAPD_F_DROP_2ND_REJ    0x0002

 /*! LAPD T200 state in RTS mode */
 enum lapd_t200_rts {
diff --git a/src/gsm/lapdm.c b/src/gsm/lapdm.c
index eba6fe7..2426cc1 100644
--- a/src/gsm/lapdm.c
+++ b/src/gsm/lapdm.c
@@ -1634,6 +1634,8 @@
        /* Set flags at LAPD. */
        if (le->flags & LAPDM_ENT_F_POLLING_ONLY)
                dl_flags |= LAPD_F_RTS;
+       if (le->flags & LAPDM_ENT_F_DROP_2ND_REJ)
+               dl_flags |= LAPD_F_DROP_2ND_REJ;

        for (i = 0; i < ARRAY_SIZE(le->datalink); i++) {
                dl = &le->datalink[i];
diff --git a/src/isdn/lapd_core.c b/src/isdn/lapd_core.c
index 3865bfc..925f209 100644
--- a/src/isdn/lapd_core.c
+++ b/src/isdn/lapd_core.c
@@ -1633,9 +1633,8 @@
                      ns, dl->v_recv, lapd_state_name(dl->state));
                /* discard data */
                msgb_free(msg);
-               if (dl->seq_err_cond != 1) {
-                       /* FIXME: help me understand what exactly todo here
-                       */
+               /* Send reject, but suppress second reject if 
LAPD_F_DROP_2ND_REJ flag is set. */
+               if (dl->seq_err_cond != 1 || !(dl->lapd_flags & 
LAPD_F_DROP_2ND_REJ)) {
                        dl->seq_err_cond = 1;
                        lapd_send_rej(lctx, lctx->p_f);
                } else {

--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/35015?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: I93994dbbd1fc2c9edb8f3015c6b18ecd0fce0565
Gerrit-Change-Number: 35015
Gerrit-PatchSet: 1
Gerrit-Owner: jolly <andr...@eversberg.eu>
Gerrit-MessageType: newchange

Reply via email to