diff options
author | Harald Welte <laforge@osmocom.org> | 2023-05-11 09:30:47 +0200 |
---|---|---|
committer | Harald Welte <laforge@osmocom.org> | 2023-05-11 16:14:50 +0200 |
commit | 7d7b0afae88bc4f385119eae415164eb5ac301df (patch) | |
tree | 62897be465ee396227b9ed354c5f339e9aa5c1fe | |
parent | b32ed5373d21c7588369410f907eee8c99c48b0f (diff) |
Store "Channel rate and type" from RSL Channel Mode IE in BTS
The RSL "Channel rate and type" field from the RSL Channel Mode IE
in RSL_CHAN_ACTIV and RSL_MODE_MODIFY_REQ messages is the only place
where the BSC differentiates between a normal TCH and the special
TCH modes used in VGCS or VBS. Let's copy this field from the RSL
message into the lchan state, so that BTS models can actually (in
subsequent patches) reflect it when activating the L1.
Change-Id: I6d531bf528bcb81f44d91336471a46ef790d7646
Related: OS#4851
-rw-r--r-- | include/osmo-bts/lchan.h | 2 | ||||
-rw-r--r-- | src/common/rsl.c | 5 |
2 files changed, 7 insertions, 0 deletions
diff --git a/include/osmo-bts/lchan.h b/include/osmo-bts/lchan.h index d89aa1fd..2f6a86d4 100644 --- a/include/osmo-bts/lchan.h +++ b/include/osmo-bts/lchan.h @@ -140,6 +140,8 @@ struct gsm_lchan { uint8_t nr; /* The logical channel type */ enum gsm_chan_t type; + /* RSL channel rate and type */ + enum rsl_cmod_crt rsl_chan_rt; /* RSL channel mode */ enum rsl_cmod_spd rsl_cmode; /* If TCH, traffic channel mode */ diff --git a/src/common/rsl.c b/src/common/rsl.c index 0fd98a91..e67cba96 100644 --- a/src/common/rsl.c +++ b/src/common/rsl.c @@ -113,6 +113,7 @@ static int rsl_handle_chan_mod_ie(struct gsm_lchan *lchan, cm = (const struct rsl_ie_chan_mode *) TLVP_VAL(tp, RSL_IE_CHAN_MODE); lchan->rsl_cmode = cm->spd_ind; + lchan->rsl_chan_rt = cm->chan_rt; lchan->ts->trx->bts->dtxd = (cm->dtx_dtu & RSL_CMOD_DTXd) ? true : false; /* Octet 5: Channel rate and type */ @@ -120,6 +121,10 @@ static int rsl_handle_chan_mod_ie(struct gsm_lchan *lchan, case RSL_CMOD_CRT_SDCCH: case RSL_CMOD_CRT_TCH_Bm: case RSL_CMOD_CRT_TCH_Lm: + case RSL_CMOD_CRT_TCH_GROUP_Bm: + case RSL_CMOD_CRT_TCH_GROUP_Lm: + case RSL_CMOD_CRT_TCH_BCAST_Bm: + case RSL_CMOD_CRT_TCH_BCAST_Lm: break; case RSL_CMOD_CRT_OSMO_TCH_VAMOS_Bm: case RSL_CMOD_CRT_OSMO_TCH_VAMOS_Lm: |