OM2000: for TS conf of dyn TS, always send TCH/F chan comb

When OM2K sets up the timeslots with the BTS, the dynamic channel state
is not yet resolved to any particular pchan type. Instead of using the
dyn state, always advertise dynamic timeslots as pchan2comb(TCH/F).

In the past, the Ericsson dynamic timeslots were handled as pchan type
TCH/F_PDCH. This is a mistake, as this pchan type is intended for
the ip.access dynamic PDCH way of dynamic channels. In any case, in the
initial state of this pchan type, the timeslot was initialized as
pchan2comb(TCH/F) because the ts->flags do not reflect an active PDCH
yet. In short, this patch does not change the behavior of TCH/F_PDCH
timeslots, only clarifies it.

It would in fact make sense to disallow use of TCH/F_PDCH for OM2K,
but that should probably be a separate patch.

The proper pchan to use for Ericsson dynamic timeslots is
TCH/F_TCH/H_PDCH. These do not use ts->flags, but ts->dyn.* as state,
which first reflects pchan_want == pchan_is == GSM_PCHAN_NONE. Hence
the timeslot was initialized by OM2K as pchan type zero, which is
unknown / invalid. So, instead of using pchan_is, which is not yet
reflecting anything meaningful, always initialize as TCH/F chan comb,
as Ericsson hardware apparently expects it.

Change-Id: If0693f7c5c85977b0e4acbc701ee5d635434d0d1
This commit is contained in:
Neels Hofmeyr 2016-10-31 18:16:34 +01:00 committed by Harald Welte
parent 194b4cb4fd
commit f926f45c4b
1 changed files with 1 additions and 5 deletions

View File

@ -1264,12 +1264,8 @@ static uint8_t ts2comb(struct gsm_bts_trx_ts *ts)
{
switch (ts->pchan) {
case GSM_PCHAN_TCH_F_PDCH:
if (ts->flags & TS_F_PDCH_ACTIVE)
return pchan2comb(GSM_PCHAN_PDCH);
else
return pchan2comb(GSM_PCHAN_TCH_F);
case GSM_PCHAN_TCH_F_TCH_H_PDCH:
return pchan2comb(ts->dyn.pchan_is);
return pchan2comb(GSM_PCHAN_TCH_F);
default:
return pchan2comb(ts->pchan);
}