aboutsummaryrefslogtreecommitdiffstats
path: root/src/libbsc/abis_rsl.c
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2018-05-08 01:31:19 +0200
committerNeels Hofmeyr <neels@hofmeyr.de>2018-05-10 04:53:53 +0200
commit4281b7daa7119a84aba1cc6e5559b2d4ab478e3b (patch)
tree0828944a1b8f4e5f657983eeeff42b2a4186efe1 /src/libbsc/abis_rsl.c
parent91aa68f762218906e45be4817c6ea54b480da5e1 (diff)
dyn TS: allow any pchan type changes, fix for gprs mode none
In rsl_chan_activate_lchan(), remove a condition to also allow switching pchan modes when not in PDCH mode, which is actually not needed and would hinder switching from pchan=NONE or between TCH/F <-> TCH/H. Refactor the part where lchan_alloc() decides to switch a pchan mode into a separate function, ts_usable_as_pchan(), which transparently checks both dyn TS kinds for: - Already in switchover? (missing check for ip.access style dyn TS) - Is the lchan->state in error? (missing check for ip.access style dyn TS) - Switch from pchan=NONE? (missing feature for Osmocom style dyn TS, for proper handling with gprs mode none) - Switch between TCH/F <-> TCH/H when all subslots are unused? (missing feature for Osmocom style dyn TS, also useful for gprs mode none) Always pass the desired pchan in the dyn_as_pchan argument to the _lc_find_* functions to make switchover decisions transparent. Use the _lc_dyn_find_bts() function for ip.access style dyn TS for the same reason. Related: OS#3244 Change-Id: I72d5d833b186b1e1925d513885b405d8c19aa496
Diffstat (limited to 'src/libbsc/abis_rsl.c')
-rw-r--r--src/libbsc/abis_rsl.c1
1 files changed, 0 insertions, 1 deletions
diff --git a/src/libbsc/abis_rsl.c b/src/libbsc/abis_rsl.c
index e6d0cea96..167ef6bfb 100644
--- a/src/libbsc/abis_rsl.c
+++ b/src/libbsc/abis_rsl.c
@@ -569,7 +569,6 @@ int rsl_chan_activate_lchan(struct gsm_lchan *lchan, uint8_t act_type,
* released.
*/
if (lchan->ts->pchan == GSM_PCHAN_TCH_F_TCH_H_PDCH
- && lchan->ts->dyn.pchan_is == GSM_PCHAN_PDCH
&& lchan->ts->dyn.pchan_is == lchan->ts->dyn.pchan_want) {
enum gsm_phys_chan_config pchan_want;
pchan_want = pchan_for_lchant(lchan->type);