Change in osmo-bsc[master]: RSL/BSSAP: fix: properly convert between RSL Link ID and DLCI

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/.

fixeria gerrit-no-reply at lists.osmocom.org
Thu Oct 1 15:54:21 UTC 2020


fixeria has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-bsc/+/20386 )


Change subject: RSL/BSSAP: fix: properly convert between RSL Link ID and DLCI
......................................................................

RSL/BSSAP: fix: properly convert between RSL Link ID and DLCI

Change-Id: If4d479a54cad467f53b49065c1c435a4471ac7d2
Related: Ica69ae95b47a67ba99ba9cc36629b6bd210d11e4
Related: OS#3716
---
M src/osmo-bsc/gsm_08_08.c
M src/osmo-bsc/osmo_bsc_bssap.c
2 files changed, 27 insertions(+), 4 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/86/20386/1

diff --git a/src/osmo-bsc/gsm_08_08.c b/src/osmo-bsc/gsm_08_08.c
index 59032d6..c85eb86 100644
--- a/src/osmo-bsc/gsm_08_08.c
+++ b/src/osmo-bsc/gsm_08_08.c
@@ -540,6 +540,16 @@
 	return rc;
 }
 
+/* Data Link Connection Identifier (DLCI) is defined in 3GPP TS 48.006, section 9.3.2.
+ * .... .SSS - SAPI value used on the radio link;
+ * CC.. .... - control channel identification:
+ *   00.. .... - indicates that the control channel is not further specified,
+ *   10.. .... - represents the FACCH or the SDCCH,
+ *   11.. .... - represents the SACCH,
+ *   other values are reserved. */
+#define RSL_LINK_ID2DLCI(link_id) \
+	(link_id & 0x40 ? 0xc0 : 0x80) | (link_id & 0x03)
+
 /*! MS->BSC/MSC: Um L3 message. */
 void bsc_dtap(struct gsm_subscriber_connection *conn, uint8_t link_id, struct msgb *msg)
 {
@@ -552,8 +562,9 @@
 
 	bsc_scan_bts_msg(conn, msg);
 
-	/* Store link_id in msg->cb */
-	OBSC_LINKID_CB(msg) = link_id;
+	/* convert RSL link ID to DLCI, store in msg->cb */
+	OBSC_LINKID_CB(msg) = RSL_LINK_ID2DLCI(link_id);
+
 	osmo_fsm_inst_dispatch(conn->fi, GSCON_EV_MO_DTAP, msg);
 done:
 	log_set_context(LOG_CTX_BSC_SUBSCR, NULL);
diff --git a/src/osmo-bsc/osmo_bsc_bssap.c b/src/osmo-bsc/osmo_bsc_bssap.c
index 65fee04..cef8df7 100644
--- a/src/osmo-bsc/osmo_bsc_bssap.c
+++ b/src/osmo-bsc/osmo_bsc_bssap.c
@@ -1199,6 +1199,16 @@
 	return ret;
 }
 
+/* RSL Link Identifier is defined in 3GPP TS 3GPP TS 48.058, section 9.3.2.
+ * .... .SSS - SAPI value used on the radio link;
+ * ...P P... - priority for SAPI0 messages;
+ * CC.. .... - control channel identification:
+ *   00.. .... - main signalling channel (FACCH or SDCCH),
+ *   01.. .... - SACCH,
+ *   other values are reserved. */
+#define DLCI2RSL_LINK_ID(dlci) \
+	((dlci & 0xc0) == 0xc0 ? 0x40 : 0x00) | (dlci & 0x03)
+
 static int dtap_rcvmsg(struct gsm_subscriber_connection *conn,
 		       struct msgb *msg, unsigned int length)
 {
@@ -1248,8 +1258,10 @@
 
 	/* pass it to the filter for extra actions */
 	bsc_scan_msc_msg(conn, gsm48);
-	/* Store link_id in msgb->cb */
-	OBSC_LINKID_CB(gsm48) = header->link_id;
+
+	/* convert DLCI to RSL link ID, store in msg->cb */
+	OBSC_LINKID_CB(gsm48) = DLCI2RSL_LINK_ID(header->link_id);
+
 	dtap_rc = osmo_fsm_inst_dispatch(conn->fi, GSCON_EV_MT_DTAP, gsm48);
 	return dtap_rc;
 }

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

Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Change-Id: If4d479a54cad467f53b49065c1c435a4471ac7d2
Gerrit-Change-Number: 20386
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <vyanitskiy at sysmocom.de>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20201001/50e6a5c0/attachment.htm>


More information about the gerrit-log mailing list