diff options
author | Neels Hofmeyr <neels@hofmeyr.de> | 2021-04-29 14:47:19 +0200 |
---|---|---|
committer | Neels Hofmeyr <neels@hofmeyr.de> | 2021-05-27 17:06:21 +0200 |
commit | 3625c90c22e33aaa6eab3757a387637195108890 (patch) | |
tree | 6beb32d0e23c9c9340dd54e5c0de02382e2ea06a | |
parent | 8a2156543b4541aaac5445879161c9b4de4344c2 (diff) |
eliminate lchan->rsl_cmode
-rw-r--r-- | include/osmocom/bsc/gsm_data.h | 3 | ||||
-rw-r--r-- | src/osmo-bsc/abis_rsl.c | 11 | ||||
-rw-r--r-- | src/osmo-bsc/gsm_04_08_rr.c | 18 | ||||
-rw-r--r-- | src/osmo-bsc/gsm_data.c | 19 | ||||
-rw-r--r-- | src/osmo-bsc/lchan_fsm.c | 18 |
5 files changed, 26 insertions, 43 deletions
diff --git a/include/osmocom/bsc/gsm_data.h b/include/osmocom/bsc/gsm_data.h index 68c307425..ce477928b 100644 --- a/include/osmocom/bsc/gsm_data.h +++ b/include/osmocom/bsc/gsm_data.h @@ -668,7 +668,6 @@ struct gsm_lchan { /* The logical channel type */ enum gsm_chan_t type; /* RSL channel mode */ - enum rsl_cmod_spd rsl_cmode; enum lchan_csd_mode csd_mode; /* Power levels for MS and BTS */ uint8_t bs_power; @@ -1390,4 +1389,6 @@ struct gsm_power_ctrl_params { extern const struct gsm_power_ctrl_params power_ctrl_params_def; +enum rsl_cmod_spd chan_mode_to_rsl_cmod_spd(enum gsm48_chan_mode chan_mode); + #endif /* _GSM_DATA_H */ diff --git a/src/osmo-bsc/abis_rsl.c b/src/osmo-bsc/abis_rsl.c index 1aaebe3a6..9aced8bff 100644 --- a/src/osmo-bsc/abis_rsl.c +++ b/src/osmo-bsc/abis_rsl.c @@ -364,12 +364,11 @@ static int channel_mode_from_lchan(struct rsl_ie_chan_mode *cm, cm->dtx_dtu |= RSL_CMOD_DTXd; /* set TCH Speech/Data */ - cm->spd_ind = lchan->rsl_cmode; - - if (lchan->rsl_cmode == RSL_CMOD_SPD_SIGN && - ch_mode_rate->chan_mode != GSM48_CMODE_SIGN) - LOGP(DRSL, LOGL_ERROR, "unsupported: rsl_mode == signalling, " - "but tch_mode != signalling\n"); + cm->spd_ind = chan_mode_to_rsl_cmod_spd(ch_mode_rate->chan_mode); + if (cm->spd_ind < 0) { + LOGP(DRSL, LOGL_ERROR, "unsupported: chan_mode = 0x%02x\n", ch_mode_rate->chan_mode); + return cm->spd_ind; + } switch (lchan->type) { case GSM_LCHAN_SDCCH: diff --git a/src/osmo-bsc/gsm_04_08_rr.c b/src/osmo-bsc/gsm_04_08_rr.c index 8a375cb55..bcc61a5ef 100644 --- a/src/osmo-bsc/gsm_04_08_rr.c +++ b/src/osmo-bsc/gsm_04_08_rr.c @@ -678,24 +678,6 @@ int gsm48_rx_rr_modif_ack(struct msgb *msg) return -1; } - /* update the channel type */ - switch (mod->mode) { - case GSM48_CMODE_SIGN: - msg->lchan->rsl_cmode = RSL_CMOD_SPD_SIGN; - break; - case GSM48_CMODE_SPEECH_V1: - case GSM48_CMODE_SPEECH_EFR: - case GSM48_CMODE_SPEECH_AMR: - msg->lchan->rsl_cmode = RSL_CMOD_SPD_SPEECH; - break; - case GSM48_CMODE_DATA_14k5: - case GSM48_CMODE_DATA_12k0: - case GSM48_CMODE_DATA_6k0: - case GSM48_CMODE_DATA_3k6: - msg->lchan->rsl_cmode = RSL_CMOD_SPD_DATA; - break; - } - return 0; } diff --git a/src/osmo-bsc/gsm_data.c b/src/osmo-bsc/gsm_data.c index a37106491..09fb64f28 100644 --- a/src/osmo-bsc/gsm_data.c +++ b/src/osmo-bsc/gsm_data.c @@ -1059,3 +1059,22 @@ const struct gsm_power_ctrl_params power_ctrl_params_def = { .h_reqt = 6, /* TODO: investigate a reasonable default value */ }, }; + +enum rsl_cmod_spd chan_mode_to_rsl_cmod_spd(enum gsm48_chan_mode chan_mode) +{ + switch (chan_mode) { + case GSM48_CMODE_SIGN: + return RSL_CMOD_SPD_SIGN; + case GSM48_CMODE_SPEECH_V1: + case GSM48_CMODE_SPEECH_EFR: + case GSM48_CMODE_SPEECH_AMR: + return RSL_CMOD_SPD_SPEECH; + case GSM48_CMODE_DATA_14k5: + case GSM48_CMODE_DATA_12k0: + case GSM48_CMODE_DATA_6k0: + case GSM48_CMODE_DATA_3k6: + return RSL_CMOD_SPD_DATA; + default: + return -EINVAL; + } +} diff --git a/src/osmo-bsc/lchan_fsm.c b/src/osmo-bsc/lchan_fsm.c index 6144ccf35..d648202ee 100644 --- a/src/osmo-bsc/lchan_fsm.c +++ b/src/osmo-bsc/lchan_fsm.c @@ -653,24 +653,6 @@ static void lchan_fsm_wait_ts_ready_onenter(struct osmo_fsm_inst *fi, uint32_t p } } - switch (info->ch_mode_rate.chan_mode) { - - case GSM48_CMODE_SIGN: - lchan->rsl_cmode = RSL_CMOD_SPD_SIGN; - break; - - case GSM48_CMODE_SPEECH_V1: - case GSM48_CMODE_SPEECH_EFR: - case GSM48_CMODE_SPEECH_AMR: - lchan->rsl_cmode = RSL_CMOD_SPD_SPEECH; - break; - - default: - lchan_fail("Not implemented: cannot activate for chan mode %s", - gsm48_chan_mode_name(info->ch_mode_rate.chan_mode)); - return; - } - use_mgwep_ci = lchan_use_mgw_endpoint_ci_bts(lchan); LOG_LCHAN(lchan, LOGL_INFO, |