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>