diff options
author | Neels Hofmeyr <neels@hofmeyr.de> | 2018-05-04 22:20:44 +0200 |
---|---|---|
committer | Neels Hofmeyr <neels@hofmeyr.de> | 2018-05-05 20:11:03 +0200 |
commit | ac5e2bc3298e3efc202ce5b174726f6b470dec66 (patch) | |
tree | 465e86d6261c2513ecd2ec3fdf43f17a73005c3f | |
parent | ca262ffa733b68c9a6ad59b93d5003233654630b (diff) |
dyn TS: fix TCH/F_TCH/H_PDCH: properly record release of PDCH TS
When a release of PDCH is complete, actually set the dyn.pchan_is to NONE.
Failure to do so currently caused errors on activation of an Osmocom style dyn
TS as TCH, in the shape of:
rsl.c:636 (bts=0,trx=0,ts=2,ss=0) Tx RF CHAN REL ACK
rsl.c:164 (bts=0,trx=0,ts=2,pchan=TCH/F_TCH/H_PDCH switching PDCH -> NONE) RSL rx DCHAN: mismatching chan_nr=0x12
rsl.c:2611 Rx RSL CHAN_ACTIV for unknown lchan
rsl.c:710 0x12: Sending Channel Activated NACK: cause = 0x64
The Tx RF CHAN REL ACK shows that we're through with PDCH release, but the
following line showing "chan=TCH/F_TCH/H_PDCH switching PDCH -> NONE" shows
that the state still reflects active switching. Thus the DCHAN code decides
that the chan_nr = 0x12 reflecting a TCH/H on TS 2 is a mismatch and NACKs the
TCH activation.
(For ip.access style TCH/F_PDCH, the ts->flags are cleared in
ipacc_dyn_pdch_complete()).
Related: OS#3235
Change-Id: Ic06c8f0fe82ae8a06afa5defd93a685010687965
-rw-r--r-- | src/common/rsl.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/common/rsl.c b/src/common/rsl.c index d46a5f50..cfdb19fd 100644 --- a/src/common/rsl.c +++ b/src/common/rsl.c @@ -634,6 +634,8 @@ int rsl_tx_rf_rel_ack(struct gsm_lchan *lchan) gsm_ts_and_pchan_name(lchan->ts), lchan->nr); /* well, what to do about it ... carry on and hope it's fine. */ } + /* remember the fact that the TS is now released */ + lchan->ts->dyn.pchan_is = GSM_PCHAN_NONE; /* Continue to ack the release below. (This is a non-standard rel ack invented * specifically for GSM_PCHAN_TCH_F_TCH_H_PDCH). */ send_rel_ack = true; |