dyn TS: fix: e1_config.c: switch(pchan) for dyn TS

Add ts_is_tch() in gsm_data_shared.h/.c and use it to replace a switch on the
pchan in e1_config.c.

This patch is not due to an actual observed failure. A general grep for switch
on pchan turned up this instance that doesn't handle dyn TS properly. Hence
this patch is not actually tested with real equipment.

Change-Id: Ide4f156034bab77140d2d9a8c462d68ae6f0d6a6
This commit is contained in:
Neels Hofmeyr 2016-09-25 15:07:01 +02:00 committed by Harald Welte
parent 23c3aa37ac
commit 255dbfe655
3 changed files with 18 additions and 6 deletions

View File

@ -855,5 +855,6 @@ struct gsm_lchan *rsl_lchan_lookup(struct gsm_bts_trx *trx, uint8_t chan_nr,
int *rc);
uint8_t ts_subslots(struct gsm_bts_trx_ts *ts);
bool ts_is_tch(struct gsm_bts_trx_ts *ts);
#endif

View File

@ -63,15 +63,10 @@ int e1_reconfig_ts(struct gsm_bts_trx_ts *ts)
return -ENOMEM;
}
switch (ts->pchan) {
case GSM_PCHAN_TCH_F:
case GSM_PCHAN_TCH_H:
if (ts_is_tch(ts)) {
e1_ts = &line->ts[e1_link->e1_ts-1];
e1inp_ts_config_trau(e1_ts, line, subch_cb);
subch_demux_activate(&e1_ts->trau.demux, e1_link->e1_ts_ss);
break;
default:
break;
}
return 0;

View File

@ -747,3 +747,19 @@ uint8_t ts_subslots(struct gsm_bts_trx_ts *ts)
{
return subslots_per_pchan[ts_pchan(ts)];
}
static bool pchan_is_tch(enum gsm_phys_chan_config pchan)
{
switch (pchan) {
case GSM_PCHAN_TCH_F:
case GSM_PCHAN_TCH_H:
return true;
default:
return false;
}
}
bool ts_is_tch(struct gsm_bts_trx_ts *ts)
{
return pchan_is_tch(ts_pchan(ts));
}