aboutsummaryrefslogtreecommitdiffstats
path: root/src/common/oml.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/oml.c')
-rw-r--r--src/common/oml.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/common/oml.c b/src/common/oml.c
index bee2f842..9d3c454d 100644
--- a/src/common/oml.c
+++ b/src/common/oml.c
@@ -689,14 +689,19 @@ static int conf_lchans_for_pchan(struct gsm_bts_trx_ts *ts)
{
struct gsm_lchan *lchan;
unsigned int i;
+ enum gsm_phys_chan_config pchan = ts->pchan;
- switch (ts->pchan) {
+ if (pchan == GSM_PCHAN_TCH_F_PDCH)
+ pchan = ts->flags & TS_F_PDCH_ACTIVE? GSM_PCHAN_PDCH
+ : GSM_PCHAN_TCH_F;
+
+ switch (pchan) {
case GSM_PCHAN_CCCH_SDCCH4_CBCH:
/* fallthrough */
case GSM_PCHAN_CCCH_SDCCH4:
for (i = 0; i < 4; i++) {
lchan = &ts->lchan[i];
- if (ts->pchan == GSM_PCHAN_CCCH_SDCCH4_CBCH
+ if (pchan == GSM_PCHAN_CCCH_SDCCH4_CBCH
&& i == 2) {
lchan->type = GSM_LCHAN_CBCH;
} else {
@@ -723,7 +728,7 @@ static int conf_lchans_for_pchan(struct gsm_bts_trx_ts *ts)
case GSM_PCHAN_SDCCH8_SACCH8C:
for (i = 0; i < 8; i++) {
lchan = &ts->lchan[i];
- if (ts->pchan == GSM_PCHAN_SDCCH8_SACCH8C_CBCH
+ if (pchan == GSM_PCHAN_SDCCH8_SACCH8C_CBCH
&& i == 2) {
lchan->type = GSM_LCHAN_CBCH;
} else {