diff options
author | Neels Hofmeyr <neels@hofmeyr.de> | 2018-05-08 01:31:19 +0200 |
---|---|---|
committer | Neels Hofmeyr <neels@hofmeyr.de> | 2018-05-10 04:53:53 +0200 |
commit | 4281b7daa7119a84aba1cc6e5559b2d4ab478e3b (patch) | |
tree | 0828944a1b8f4e5f657983eeeff42b2a4186efe1 /src/libbsc/abis_rsl.c | |
parent | 91aa68f762218906e45be4817c6ea54b480da5e1 (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.c | 1 |
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); |