aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/chan_alloc.c
diff options
context:
space:
mode:
authorHarald Welte <laforge@netfilter.org>2009-08-10 14:44:24 +0200
committerHarald Welte <laforge@netfilter.org>2009-08-10 14:44:24 +0200
commit65676fe73fff547ba96efe9aee90eb99f6a0de87 (patch)
tree22d48fd2944d9a8e35bf9ab68dbc197b4771b3a2 /openbsc/src/chan_alloc.c
parent9c31b5eeca9abbcac92bdfcfa0b0aed7f135ce8f (diff)
when channel allocator operates in reverse order, prefer SDCCH/8 over SDCCH/4
Diffstat (limited to 'openbsc/src/chan_alloc.c')
-rw-r--r--openbsc/src/chan_alloc.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/openbsc/src/chan_alloc.c b/openbsc/src/chan_alloc.c
index 0cf567f8e..48c728c09 100644
--- a/openbsc/src/chan_alloc.c
+++ b/openbsc/src/chan_alloc.c
@@ -182,12 +182,21 @@ _lc_find_bts(struct gsm_bts *bts, enum gsm_phys_chan_config pchan)
struct gsm_lchan *lchan_alloc(struct gsm_bts *bts, enum gsm_chan_t type)
{
struct gsm_lchan *lchan = NULL;
+ enum gsm_phys_chan_config first, second;
switch (type) {
case GSM_LCHAN_SDCCH:
- lchan = _lc_find_bts(bts, GSM_PCHAN_CCCH_SDCCH4);
+ if (bts->chan_alloc_reverse) {
+ first = GSM_PCHAN_SDCCH8_SACCH8C;
+ second = GSM_PCHAN_CCCH_SDCCH4;
+ } else {
+ first = GSM_PCHAN_CCCH_SDCCH4;
+ second = GSM_PCHAN_SDCCH8_SACCH8C;
+ }
+
+ lchan = _lc_find_bts(bts, first);
if (lchan == NULL)
- lchan = _lc_find_bts(bts, GSM_PCHAN_SDCCH8_SACCH8C);
+ lchan = _lc_find_bts(bts, second);
break;
case GSM_LCHAN_TCH_F:
lchan = _lc_find_bts(bts, GSM_PCHAN_TCH_F);