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