aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Eversberg <jolly@eversberg.eu>2013-03-31 11:57:38 +0200
committerAndreas Eversberg <jolly@eversberg.eu>2014-03-13 08:08:47 +0100
commiteb672b3f83b4a34c8468ac05f21c82a42141387f (patch)
tree3bcf6c8c41e61639ac08fd9c01384fb3711eb524
parentAdd check to tch_map(), if RTP sockets exist (diff)
downloadOpenBSC-eb672b3f83b4a34c8468ac05f21c82a42141387f.tar.xz
OpenBSC-eb672b3f83b4a34c8468ac05f21c82a42141387f.zip
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.
-rw-r--r--openbsc/src/libbsc/abis_rsl.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/openbsc/src/libbsc/abis_rsl.c b/openbsc/src/libbsc/abis_rsl.c
index 2c95c9c64..e35685889 100644
--- a/openbsc/src/libbsc/abis_rsl.c
+++ b/openbsc/src/libbsc/abis_rsl.c
@@ -1414,6 +1414,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);