From 5df7e771a86f3cdd1c7a6a6f71f9ad6f3465674f Mon Sep 17 00:00:00 2001 From: Neels Hofmeyr Date: Wed, 19 May 2021 02:29:53 +0200 Subject: gsm48_lchan2chan_desc(): expose TSC as param Expose the training sequence code used in the RSL Channel Description IE as an input parameter. So far the Channel Description IE is always composed with a training sequence code from gsm_ts_tsc(). For RSL commands enabling VAMOS mode, specific training sequence codes are required. So far, all callers still use gsm_ts_tsc(), making this a patch without any functional change. Upcoming patches will pass specific TSC as configured for VAMOS instead, in specific places. Related: SYS#5315 OS#4940 Change-Id: I49503a6f5d25bb3bc9a0505bd79ed1d5c4f50577 --- src/osmo-bsc/gsm_data.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) (limited to 'src/osmo-bsc/gsm_data.c') diff --git a/src/osmo-bsc/gsm_data.c b/src/osmo-bsc/gsm_data.c index 0c8550333..b676e2f9b 100644 --- a/src/osmo-bsc/gsm_data.c +++ b/src/osmo-bsc/gsm_data.c @@ -596,17 +596,18 @@ struct gsm_bts *conn_get_bts(struct gsm_subscriber_connection *conn) { return conn->lchan->ts->trx->bts; } -static void _chan_desc_fill_tail(struct gsm48_chan_desc *cd, const struct gsm_lchan *lchan) +static void _chan_desc_fill_tail(struct gsm48_chan_desc *cd, const struct gsm_lchan *lchan, + uint8_t tsc) { if (!lchan->ts->hopping.enabled) { uint16_t arfcn = lchan->ts->trx->arfcn & 0x3ff; - cd->h0.tsc = gsm_ts_tsc(lchan->ts); + cd->h0.tsc = tsc; cd->h0.h = 0; cd->h0.spare = 0; cd->h0.arfcn_high = arfcn >> 8; cd->h0.arfcn_low = arfcn & 0xff; } else { - cd->h1.tsc = gsm_ts_tsc(lchan->ts); + cd->h1.tsc = tsc; cd->h1.h = 1; cd->h1.maio_high = lchan->ts->hopping.maio >> 2; cd->h1.maio_low = lchan->ts->hopping.maio & 0x03; @@ -615,20 +616,22 @@ static void _chan_desc_fill_tail(struct gsm48_chan_desc *cd, const struct gsm_lc } void gsm48_lchan2chan_desc(struct gsm48_chan_desc *cd, - const struct gsm_lchan *lchan) + const struct gsm_lchan *lchan, + uint8_t tsc) { cd->chan_nr = gsm_lchan2chan_nr(lchan); - _chan_desc_fill_tail(cd, lchan); + _chan_desc_fill_tail(cd, lchan, tsc); } /* like gsm48_lchan2chan_desc() above, but use ts->pchan_from_config to * return a channel description based on what is configured, rather than * what the current state of the pchan type is */ void gsm48_lchan2chan_desc_as_configured(struct gsm48_chan_desc *cd, - const struct gsm_lchan *lchan) + const struct gsm_lchan *lchan, + uint8_t tsc) { cd->chan_nr = gsm_pchan2chan_nr(lchan->ts->pchan_from_config, lchan->ts->nr, lchan->nr); - _chan_desc_fill_tail(cd, lchan); + _chan_desc_fill_tail(cd, lchan, tsc); } uint8_t gsm_ts_tsc(const struct gsm_bts_trx_ts *ts) -- cgit v1.2.3