Change in osmo-bsc[master]: add secondary RSL link for VAMOS (shadow TEI)

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
Sun May 23 23:02:23 UTC 2021


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


Change subject: add secondary RSL link for VAMOS (shadow TEI)
......................................................................

add secondary RSL link for VAMOS (shadow TEI)

Set up a secondary sign_link for BTS that have BTS_FEAT_VAMOS enabled.

There are no secondary lchans being set up yet, but this is all that is
needed to send RSL commands for VAMOS secondary lchans.

Related: SYS#5315 OS#4940
Change-Id: Ic304924b017f4588f749268e99ed1326db4c9f47
---
M include/osmocom/bsc/abis_rsl.h
M include/osmocom/bsc/bts_trx.h
M include/osmocom/bsc/gsm_data.h
M src/osmo-bsc/abis_rsl.c
M src/osmo-bsc/bsc_vty.c
M src/osmo-bsc/bts_ipaccess_nanobts.c
M src/osmo-bsc/e1_config.c
7 files changed, 34 insertions(+), 0 deletions(-)



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

diff --git a/include/osmocom/bsc/abis_rsl.h b/include/osmocom/bsc/abis_rsl.h
index dcae348..44c7774 100644
--- a/include/osmocom/bsc/abis_rsl.h
+++ b/include/osmocom/bsc/abis_rsl.h
@@ -42,6 +42,8 @@
 	msgb_alloc_headroom(RSL_ALLOC_SIZE, RSL_ALLOC_HEADROOM, \
 			    __FILE__ ":" OSMO_STRINGIFY_VAL(__LINE__))
 
+#define VAMOS_SHADOW_TEI(TEI) (0x80 + (TEI))
+
 const char *ip_to_a(uint32_t ip);
 
 struct e1inp_sign_link *rsl_chan_link(const struct gsm_lchan *lchan);
diff --git a/include/osmocom/bsc/bts_trx.h b/include/osmocom/bsc/bts_trx.h
index 4d705d0..94f4021 100644
--- a/include/osmocom/bsc/bts_trx.h
+++ b/include/osmocom/bsc/bts_trx.h
@@ -34,7 +34,9 @@
 	/* how do we talk RSL with this TRX? */
 	struct gsm_e1_subslot rsl_e1_link;
 	uint8_t rsl_tei_primary;
+	uint8_t rsl_tei_vamos;
 	struct e1inp_sign_link *rsl_link_primary;
+	struct e1inp_sign_link *rsl_link_vamos;
 
 	/* Timeout for initiating the RSL connection. */
 	struct osmo_timer_list rsl_connect_timeout;
diff --git a/include/osmocom/bsc/gsm_data.h b/include/osmocom/bsc/gsm_data.h
index 348735e..ce439b1 100644
--- a/include/osmocom/bsc/gsm_data.h
+++ b/include/osmocom/bsc/gsm_data.h
@@ -730,6 +730,12 @@
 	 * channel_mode_and_rate. */
 	struct channel_mode_and_rate current_ch_mode_rate;
 	struct gsm48_multi_rate_conf current_mr_conf;
+
+	struct {
+		/* Whether this lchan represents a secondary "shadow" lchan to multiplex a second MS onto a primary
+		 * "normal" lchan */
+		bool is_secondary;
+	} vamos;
 };
 
 /* One Timeslot in a TRX */
diff --git a/src/osmo-bsc/abis_rsl.c b/src/osmo-bsc/abis_rsl.c
index a617d32..b68ab62 100644
--- a/src/osmo-bsc/abis_rsl.c
+++ b/src/osmo-bsc/abis_rsl.c
@@ -2685,5 +2685,7 @@
 
 struct e1inp_sign_link *rsl_chan_link(const struct gsm_lchan *lchan)
 {
+	if (lchan->vamos.is_secondary)
+		return lchan->ts->trx->rsl_link_vamos;
 	return lchan->ts->trx->rsl_link_primary;
 }
diff --git a/src/osmo-bsc/bsc_vty.c b/src/osmo-bsc/bsc_vty.c
index ee6a716..18b35ad 100644
--- a/src/osmo-bsc/bsc_vty.c
+++ b/src/osmo-bsc/bsc_vty.c
@@ -1346,6 +1346,8 @@
 	net_dump_nmstate(vty, &trx->bb_transc.mo.nm_state);
 	if (is_ipaccess_bts(trx->bts)) {
 		vty_out(vty, "  ip.access stream ID: 0x%02x ", trx->rsl_tei_primary);
+		if (trx->rsl_link_vamos)
+			vty_out(vty, "  ip.access stream ID for VAMOS shadow lchans: 0x%02x ", trx->rsl_tei_vamos);
 		e1isl_dump_vty_tcp(vty, trx->rsl_link_primary);
 	} else {
 		vty_out(vty, "  E1 Signalling Link:%s", VTY_NEWLINE);
@@ -5450,6 +5452,7 @@
 	struct gsm_bts_trx *trx = vty->index;
 
 	trx->rsl_tei_primary = atoi(argv[0]);
+	trx->rsl_tei_vamos = VAMOS_SHADOW_TEI(trx->rsl_tei_primary);
 
 	return CMD_SUCCESS;
 }
diff --git a/src/osmo-bsc/bts_ipaccess_nanobts.c b/src/osmo-bsc/bts_ipaccess_nanobts.c
index 1e3e9c1..05c3634 100644
--- a/src/osmo-bsc/bts_ipaccess_nanobts.c
+++ b/src/osmo-bsc/bts_ipaccess_nanobts.c
@@ -531,6 +531,10 @@
 	LOG_TRX(trx, DLINP, LOGL_NOTICE, "Dropping RSL link: %s\n", reason);
 	e1inp_sign_link_destroy(trx->rsl_link_primary);
 	trx->rsl_link_primary = NULL;
+	if (trx->rsl_link_vamos) {
+		e1inp_sign_link_destroy(trx->rsl_link_vamos);
+		trx->rsl_link_vamos = NULL;
+	}
 	osmo_stat_item_dec(trx->bts->bts_statg->items[BTS_STAT_RSL_CONNECTED], 1);
 
 	if (trx->bts->c0 == trx)
@@ -740,6 +744,19 @@
 			sign_link->trx->bts->ip_access.flags |=
 					(RSL_UP << sign_link->trx->nr);
 		}
+		if (osmo_bts_has_feature(&bts->features, BTS_FEAT_VAMOS)) {
+			sign_link = trx->rsl_link_vamos =
+					e1inp_sign_link_create(ts, E1INP_SIGN_RSL,
+							       trx, trx->rsl_tei_vamos, 0);
+			trx->rsl_link_vamos->ts->sign.delay = 0;
+			if (!(sign_link->trx->bts->ip_access.flags &
+						(RSL_UP << sign_link->trx->nr))) {
+				e1inp_event(sign_link->ts, S_L_INP_TEI_UP,
+						sign_link->tei, sign_link->sapi);
+				sign_link->trx->bts->ip_access.flags |=
+						(RSL_UP << sign_link->trx->nr);
+			}
+		}
 		osmo_stat_item_inc(bts->bts_statg->items[BTS_STAT_RSL_CONNECTED], 1);
 		break;
 	}
diff --git a/src/osmo-bsc/e1_config.c b/src/osmo-bsc/e1_config.c
index db77234..600f3c4 100644
--- a/src/osmo-bsc/e1_config.c
+++ b/src/osmo-bsc/e1_config.c
@@ -107,6 +107,8 @@
 	}
 	if (trx->rsl_link_primary)
 		e1inp_sign_link_destroy(trx->rsl_link_primary);
+	if (trx->rsl_link_vamos)
+		e1inp_sign_link_destroy(trx->rsl_link_vamos);
 	trx->rsl_link_primary = rsl_link;
 
 	for (i = 0; i < TRX_NR_TS; i++)

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

Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Change-Id: Ic304924b017f4588f749268e99ed1326db4c9f47
Gerrit-Change-Number: 24366
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/20210523/0b2edb1f/attachment.htm>


More information about the gerrit-log mailing list