Change in osmo-bsc[master]: RSL: rx and tx VAMOS Channel Number cbits for VAMOS lchans

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

neels gerrit-no-reply at lists.osmocom.org
Thu May 27 00:17:11 UTC 2021


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


Change subject: RSL: rx and tx VAMOS Channel Number cbits for VAMOS lchans
......................................................................

RSL: rx and tx VAMOS Channel Number cbits for VAMOS lchans

Add the Osmocom-specific extension to indicate VAMOS shadow lchans in
RSL, in lchan lookup and RSL message transmission.

Related: SYS#5315 OS#4940
Change-Id: I957eff0d2c33ec795eda75a4bff21965b0179f73
---
M include/osmocom/bsc/gsm_data.h
M src/osmo-bsc/abis_rsl.c
M src/osmo-bsc/bts_trx.c
M src/osmo-bsc/gsm_data.c
4 files changed, 26 insertions(+), 8 deletions(-)



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

diff --git a/include/osmocom/bsc/gsm_data.h b/include/osmocom/bsc/gsm_data.h
index a781e6b..deadc4d 100644
--- a/include/osmocom/bsc/gsm_data.h
+++ b/include/osmocom/bsc/gsm_data.h
@@ -1026,7 +1026,7 @@
 	     const struct abis_om_obj_inst *obj_inst);
 
 uint8_t gsm_pchan2chan_nr(enum gsm_phys_chan_config pchan,
-			  uint8_t ts_nr, uint8_t lchan_nr);
+			  uint8_t ts_nr, uint8_t lchan_nr, bool vamos_is_secondary);
 uint8_t gsm_lchan2chan_nr(const struct gsm_lchan *lchan);
 uint8_t gsm_lchan_as_pchan2chan_nr(const struct gsm_lchan *lchan,
 				   enum gsm_phys_chan_config as_pchan);
diff --git a/src/osmo-bsc/abis_rsl.c b/src/osmo-bsc/abis_rsl.c
index b2fc573..dce93a6 100644
--- a/src/osmo-bsc/abis_rsl.c
+++ b/src/osmo-bsc/abis_rsl.c
@@ -2536,7 +2536,7 @@
 	dh = (struct abis_rsl_dchan_hdr *) msgb_put(msg, sizeof(*dh));
 	init_dchan_hdr(dh, activate ? RSL_MT_IPAC_PDCH_ACT : RSL_MT_IPAC_PDCH_DEACT);
 	dh->c.msg_discr = ABIS_RSL_MDISC_DED_CHAN;
-	dh->chan_nr = gsm_pchan2chan_nr(GSM_PCHAN_TCH_F, ts->nr, 0);
+	dh->chan_nr = gsm_pchan2chan_nr(GSM_PCHAN_TCH_F, ts->nr, 0, false);
 
 	msg->dst = ts->trx->rsl_link_primary;
 	return abis_rsl_sendmsg(msg);
diff --git a/src/osmo-bsc/bts_trx.c b/src/osmo-bsc/bts_trx.c
index 57b6ccc..ecfde5d 100644
--- a/src/osmo-bsc/bts_trx.c
+++ b/src/osmo-bsc/bts_trx.c
@@ -151,6 +151,7 @@
 	uint8_t cbits = chan_nr >> 3;
 	uint8_t lch_idx;
 	struct gsm_bts_trx_ts *ts = &trx->ts[ts_nr];
+	bool vamos = false;
 	bool ok;
 
 	if (rc)
@@ -161,11 +162,18 @@
 	 * of checking the current pchan mode, we must allow any pchans that a dyn TS is capable of. */
 
 	switch (cbits) {
+	case ABIS_RSL_CHAN_NR_CBITS_OSMO_VAMOS_Bm_ACCHs:
+		vamos = true;
+		/* fall thru */
 	case ABIS_RSL_CHAN_NR_CBITS_Bm_ACCHs:
 		lch_idx = 0;	/* TCH/F */
 		ok = ts_is_capable_of_pchan(ts, GSM_PCHAN_TCH_F)
 			|| ts->pchan_on_init == GSM_PCHAN_PDCH; /* PDCH? really? */
 		break;
+	case ABIS_RSL_CHAN_NR_CBITS_OSMO_VAMOS_Lm_ACCHs(0):
+	case ABIS_RSL_CHAN_NR_CBITS_OSMO_VAMOS_Lm_ACCHs(1):
+		vamos = true;
+		/* fall thru */
 	case ABIS_RSL_CHAN_NR_CBITS_Lm_ACCHs(0):
 	case ABIS_RSL_CHAN_NR_CBITS_Lm_ACCHs(1):
 		lch_idx = cbits & 0x1;	/* TCH/H */
@@ -207,6 +215,8 @@
 	if (rc && ok)
 		*rc = 0;
 
+	if (vamos)
+		lch_idx += ts->max_primary_lchans;
 	return &ts->lchan[lch_idx];
 }
 
diff --git a/src/osmo-bsc/gsm_data.c b/src/osmo-bsc/gsm_data.c
index 5f8b6da..29a1c42 100644
--- a/src/osmo-bsc/gsm_data.c
+++ b/src/osmo-bsc/gsm_data.c
@@ -493,7 +493,7 @@
 
 /* See Table 10.5.25 of GSM04.08 */
 uint8_t gsm_pchan2chan_nr(enum gsm_phys_chan_config pchan,
-			  uint8_t ts_nr, uint8_t lchan_nr)
+			  uint8_t ts_nr, uint8_t lchan_nr, bool vamos_is_secondary)
 {
 	uint8_t cbits, chan_nr;
 
@@ -501,7 +501,10 @@
 	case GSM_PCHAN_TCH_F:
 	case GSM_PCHAN_TCH_F_PDCH:
 		OSMO_ASSERT(lchan_nr == 0);
-		cbits = 0x01;
+		if (vamos_is_secondary)
+			cbits = ABIS_RSL_CHAN_NR_CBITS_OSMO_VAMOS_Bm_ACCHs;
+		else
+			cbits = 0x01;
 		break;
 	case GSM_PCHAN_PDCH:
 		OSMO_ASSERT(lchan_nr == 0);
@@ -509,8 +512,12 @@
 		break;
 	case GSM_PCHAN_TCH_H:
 		OSMO_ASSERT(lchan_nr < 2);
-		cbits = 0x02;
-		cbits += lchan_nr;
+		if (vamos_is_secondary)
+			cbits = ABIS_RSL_CHAN_NR_CBITS_OSMO_VAMOS_Lm_ACCHs(lchan_nr);
+		else {
+			cbits = 0x02;
+			cbits += lchan_nr;
+		}
 		break;
 	case GSM_PCHAN_CCCH_SDCCH4:
 	case GSM_PCHAN_CCCH_SDCCH4_CBCH:
@@ -552,7 +559,7 @@
 	 * a primary ts->lchan[0] and a VAMOS ts->lchan[1]. Still, the VAMOS lchan should send chan_nr = 0. */
 	if (lchan->vamos.is_secondary)
 		lchan_nr -= lchan->ts->max_primary_lchans;
-	return gsm_pchan2chan_nr(lchan->ts->pchan_is, lchan->ts->nr, lchan_nr);
+	return gsm_pchan2chan_nr(lchan->ts->pchan_is, lchan->ts->nr, lchan_nr, lchan->vamos.is_secondary);
 }
 
 static const uint8_t subslots_per_pchan[] = {
@@ -733,7 +740,8 @@
 					 const struct gsm_lchan *lchan,
 					 uint8_t tsc)
 {
-	cd->chan_nr = gsm_pchan2chan_nr(lchan->ts->pchan_from_config, lchan->ts->nr, lchan->nr);
+	cd->chan_nr = gsm_pchan2chan_nr(lchan->ts->pchan_from_config, lchan->ts->nr, lchan->nr,
+					lchan->vamos.is_secondary);
 	_chan_desc_fill_tail(cd, lchan, tsc);
 }
 

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

Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Change-Id: I957eff0d2c33ec795eda75a4bff21965b0179f73
Gerrit-Change-Number: 24430
Gerrit-PatchSet: 1
Gerrit-Owner: neels <nhofmeyr at sysmocom.de>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20210527/eca298bd/attachment.htm>


More information about the gerrit-log mailing list