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