summaryrefslogtreecommitdiffstats
path: root/openbsc/src
diff options
context:
space:
mode:
authorNeels Hofmeyr <nhofmeyr@sysmocom.de>2016-10-31 18:16:34 +0100
committerHarald Welte <laforge@gnumonks.org>2016-11-10 17:05:02 +0000
commitf926f45c4bb8d261cdbefec6aba65a167c6bbc92 (patch)
treec962b52d452bebd601f22a48d9b844d9ba14b792 /openbsc/src
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
Diffstat (limited to 'openbsc/src')
-rw-r--r--openbsc/src/libbsc/abis_om2000.c6
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) {
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);
}