lchan.h: remove enum lchan_csd_mode

It looks like the idea was to translate the CSD rate from BSSAP to
lchan_csd_mode before translating it to RSL. But instead we can just
directly translate the BSSAP value to the RSL value.

The previous code was not used yet (nothing wrote to csd_mode).

Related: OS#4393
Depends: libosmocore I25bfd02aa1428a35492b20376a31635a442e545f
Change-Id: Ice914744da3a2084e82d125848fb69404b8e8a36
This commit is contained in:
Oliver Smith 2023-02-23 11:59:43 +01:00 committed by laforge
parent 071446d1b0
commit 5a16fcee93
2 changed files with 12 additions and 61 deletions

View File

@ -8,6 +8,7 @@
#include <osmocom/gsm/gsm_utils.h>
#include <osmocom/gsm/protocol/gsm_04_08.h>
#include <osmocom/gsm/protocol/gsm_08_08.h>
#include <osmocom/gsm/protocol/gsm_08_58.h>
#include <osmocom/gsm/gsm23003.h>
#include <osmocom/bsc/meas_rep.h>
@ -44,24 +45,16 @@ enum channel_rate {
enum channel_rate chan_t_to_chan_rate(enum gsm_chan_t chan_t);
enum lchan_csd_mode {
LCHAN_CSD_M_NT,
LCHAN_CSD_M_T_1200_75,
LCHAN_CSD_M_T_600,
LCHAN_CSD_M_T_1200,
LCHAN_CSD_M_T_2400,
LCHAN_CSD_M_T_9600,
LCHAN_CSD_M_T_14400,
LCHAN_CSD_M_T_29000,
LCHAN_CSD_M_T_32000,
};
struct channel_mode_and_rate {
enum gsm48_chan_mode chan_mode;
enum channel_rate chan_rate;
uint16_t s15_s0;
/* only used for GSM48_CMODE_DATA_* */
enum lchan_csd_mode csd_mode;
bool data_transparent;
union {
enum rsl_cmod_csd_t t;
enum rsl_cmod_csd_nt nt;
} data_rate;
};
/* Channel Request reason */

View File

@ -460,54 +460,12 @@ static int channel_mode_from_lchan(struct rsl_ie_chan_mode *cm,
case GSM48_CMODE_DATA_14k5:
case GSM48_CMODE_DATA_12k0:
case GSM48_CMODE_DATA_6k0:
switch (ch_mode_rate->csd_mode) {
case LCHAN_CSD_M_NT:
/* non-transparent CSD with RLP */
switch (ch_mode_rate->chan_mode) {
case GSM48_CMODE_DATA_14k5:
cm->chan_rate = RSL_CMOD_SP_NT_14k5;
break;
case GSM48_CMODE_DATA_12k0:
cm->chan_rate = RSL_CMOD_SP_NT_12k0;
break;
case GSM48_CMODE_DATA_6k0:
cm->chan_rate = RSL_CMOD_SP_NT_6k0;
break;
default:
LOGP(DRSL, LOGL_ERROR,
"unsupported lchan->tch_mode %u\n",
ch_mode_rate->chan_mode);
return -EINVAL;
}
break;
/* transparent data services below */
case LCHAN_CSD_M_T_1200_75:
cm->chan_rate = RSL_CMOD_CSD_T_1200_75;
break;
case LCHAN_CSD_M_T_600:
cm->chan_rate = RSL_CMOD_CSD_T_600;
break;
case LCHAN_CSD_M_T_1200:
cm->chan_rate = RSL_CMOD_CSD_T_1200;
break;
case LCHAN_CSD_M_T_2400:
cm->chan_rate = RSL_CMOD_CSD_T_2400;
break;
case LCHAN_CSD_M_T_9600:
cm->chan_rate = RSL_CMOD_CSD_T_9600;
break;
case LCHAN_CSD_M_T_14400:
cm->chan_rate = RSL_CMOD_CSD_T_14400;
break;
case LCHAN_CSD_M_T_29000:
cm->chan_rate = RSL_CMOD_CSD_T_29000;
break;
case LCHAN_CSD_M_T_32000:
cm->chan_rate = RSL_CMOD_CSD_T_32000;
break;
default:
LOGP(DRSL, LOGL_ERROR, "unsupported csd_mode %u\n", ch_mode_rate->csd_mode);
return -EINVAL;
/* 3GPP TS 48.058 § 9.3.6 Channel Mode octet 6 */
if (ch_mode_rate->data_transparent) {
cm->chan_rate = ch_mode_rate->data_rate.t;
} else {
cm->chan_rate = ch_mode_rate->data_rate.nt;
cm->chan_rate |= 0x40;
}
break;
default: