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