diff options
author | Andreas Eversberg <jolly@eversberg.eu> | 2013-03-31 11:57:38 +0200 |
---|---|---|
committer | Ivan Kluchnikov <kluchnikovi@gmail.com> | 2015-05-26 15:55:13 +0300 |
commit | 4e3a2670550ef0cabd8e682395ea385967824049 (patch) | |
tree | 4b914f241df50c8fef2ecab99b7e25582ea0ff33 /openbsc/src/libbsc | |
parent | 3b1cd6dd8152dff1e3e4e2045d359b7d1bb0495e (diff) |
If requested TCH/H channel is not available, try assigning TCH/F
If MNCC application requests a half rate channel, the channel might not be
available, due to different cell configuration, so the full rate channel
is used instead.
Diffstat (limited to 'openbsc/src/libbsc')
-rw-r--r-- | openbsc/src/libbsc/abis_rsl.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/openbsc/src/libbsc/abis_rsl.c b/openbsc/src/libbsc/abis_rsl.c index 526b97726..615119316 100644 --- a/openbsc/src/libbsc/abis_rsl.c +++ b/openbsc/src/libbsc/abis_rsl.c @@ -1418,6 +1418,16 @@ static int rsl_rx_chan_rqd(struct msgb *msg) /* check availability / allocate channel */ lchan = lchan_alloc(bts, lctype, is_lu); + if (!lchan && lctype == GSM_LCHAN_TCH_H) { + /* no TCH/H available, try fallback to TCH/F */ + LOGP(DRSL, LOGL_NOTICE, "BTS %d CHAN RQD: no resources for " + "%s 0x%x, retrying with %s\n", + msg->lchan->ts->trx->bts->nr, + gsm_lchant_name(lctype), + rqd_ref->ra, gsm_lchant_name(GSM_LCHAN_TCH_F)); + lctype = GSM_LCHAN_TCH_F; + lchan = lchan_alloc(bts, lctype, is_lu); + } if (!lchan) { LOGP(DRSL, LOGL_NOTICE, "BTS %d CHAN RQD: no resources for %s 0x%x\n", msg->lchan->ts->trx->bts->nr, gsm_lchant_name(lctype), rqd_ref->ra); |