diff options
authorNeels Hofmeyr <>2016-10-31 18:16:34 +0100
committerHarald Welte <>2016-11-10 17:05:02 +0000
commitf926f45c4bb8d261cdbefec6aba65a167c6bbc92 (patch)
parent194b4cb4fd2bc7c0ca71fad14a314a517f5d4415 (diff)
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
1 files changed, 1 insertions, 5 deletions
diff --git a/openbsc/src/libbsc/abis_om2000.c b/openbsc/src/libbsc/abis_om2000.c
index 1ab77b192..0890a15d3 100644
--- a/openbsc/src/libbsc/abis_om2000.c
+++ b/openbsc/src/libbsc/abis_om2000.c
@@ -1264,12 +1264,8 @@ static uint8_t ts2comb(struct gsm_bts_trx_ts *ts)
switch (ts->pchan) {
- if (ts->flags & TS_F_PDCH_ACTIVE)
- return pchan2comb(GSM_PCHAN_PDCH);
- else
- return pchan2comb(GSM_PCHAN_TCH_F);
- return pchan2comb(ts->dyn.pchan_is);
+ return pchan2comb(GSM_PCHAN_TCH_F);
return pchan2comb(ts->pchan);