[MERGED] osmo-bts[master]: rsl: Fix dropping of LAPDm UA message.

Harald Welte gerrit-no-reply at lists.osmocom.org
Wed Feb 1 16:35:42 UTC 2017


Harald Welte has submitted this change and it was merged.

Change subject: rsl: Fix dropping of LAPDm UA message.
......................................................................


rsl: Fix dropping of LAPDm UA message.

In some cases, when successive mobile originated calls are made, the LAPDm UA
message gets lost because the channel is relased to early. Too overcome the
problem we do not send relase indications immediately. Instead a flag will be
set and the message stored and sent on the next TCH-RTS-IND.

This commit adds the functionality to store the release indication msg, to
rsl.c. It also addes the mechanism to forward the release indication to l1sap.c
See also coresponding change in openbsc.git:
Change-Id I15fc1ef8e9e83f009bde96de9a8e95702cffbce6

This patch is is a slightly improved/reformatted version of:
https://gitlab.com/nrw_noa/osmo-bts/commit/95d1f15ad108c1c1869c1965144acd64c1395d8c

Change-Id: Ie4f70c75f0137b4bd72d579b3a32575bac2fca38
---
M src/common/l1sap.c
M src/common/rsl.c
2 files changed, 28 insertions(+), 0 deletions(-)

Approvals:
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/src/common/l1sap.c b/src/common/l1sap.c
index b2f18d1..19b38af 100644
--- a/src/common/l1sap.c
+++ b/src/common/l1sap.c
@@ -714,6 +714,7 @@
 	uint8_t chan_nr, marker = 0;
 	uint16_t seq;
 	uint32_t fn, timestamp;
+	int rc;
 
 	chan_nr = rts_ind->chan_nr;
 	fn = rts_ind->fn;
@@ -757,6 +758,16 @@
 		resp_l1sap = msgb_l1sap_prim(resp_msg);
 	}
 
+	/* check for pending REL_IND */
+	if (lchan->pending_rel_ind_msg) {
+		LOGP(DRSL, LOGL_INFO, "%s Forward REL_IND to L3\n", gsm_lchan_name(lchan));
+		/* Forward it to L3 */
+		rc = abis_bts_rsl_sendmsg(lchan->pending_rel_ind_msg);
+		lchan->pending_rel_ind_msg = NULL;
+		if (rc < 0)
+			return rc;
+	}
+
 	memset(resp_l1sap, 0, sizeof(*resp_l1sap));
 	osmo_prim_init(&resp_l1sap->oph, SAP_GSM_PH, PRIM_TCH, PRIM_OP_REQUEST,
 		resp_msg);
diff --git a/src/common/rsl.c b/src/common/rsl.c
index b3e9afb..74d835f 100644
--- a/src/common/rsl.c
+++ b/src/common/rsl.c
@@ -2273,6 +2273,7 @@
 	}
 
 	msg->trx = lchan->ts->trx;
+	msg->lchan = lchan;
 
 	/* check if this is a measurement report from SACCH which needs special
 	 * processing before forwarding */
@@ -2281,6 +2282,22 @@
 
 		LOGP(DRSL, LOGL_INFO, "%s Handing RLL msg %s from LAPDm to MEAS REP\n",
 			gsm_lchan_name(lchan), rsl_msg_name(rh->msg_type));
+
+		/* REL_IND handling */
+		if (rh->msg_type == RSL_MT_REL_IND) {
+			LOGP(DRSL, LOGL_INFO, "%s Scheduling %s to L3 in next associated TCH-RTS.ind\n",
+				gsm_lchan_name(lchan),
+				rsl_msg_name(rh->msg_type));
+
+			if(lchan->pending_rel_ind_msg) {
+				LOGP(DRSL, LOGL_INFO, "Dropping pending release indication message\n");
+					msgb_free(lchan->pending_rel_ind_msg);
+			}
+
+			lchan->pending_rel_ind_msg = msg;
+			return 0;
+		}
+
 		rc = rsl_tx_meas_res(lchan, msgb_l3(msg), msgb_l3len(msg));
 		msgb_free(msg);
 		return rc;

-- 
To view, visit https://gerrit.osmocom.org/1626
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ie4f70c75f0137b4bd72d579b3a32575bac2fca38
Gerrit-PatchSet: 7
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Owner: dexter <pmaier at sysmocom.de>
Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Holger Freyther <holger at freyther.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Minh-Quang Nguyen <minh-quang.nguyen at nutaq.com>


More information about the gerrit-log mailing list