diff options
author | Harald Welte <laforge@netfilter.org> | 2009-08-10 14:44:24 +0200 |
---|---|---|
committer | Harald Welte <laforge@netfilter.org> | 2009-08-10 14:44:24 +0200 |
commit | 65676fe73fff547ba96efe9aee90eb99f6a0de87 (patch) | |
tree | 22d48fd2944d9a8e35bf9ab68dbc197b4771b3a2 /openbsc/src/chan_alloc.c | |
parent | 9c31b5eeca9abbcac92bdfcfa0b0aed7f135ce8f (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.c | 13 |
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); |