summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Eversberg <jolly@eversberg.eu>2013-10-11 13:05:16 +0200
committerHarald Welte <laforge@gnumonks.org>2016-06-12 15:48:38 +0000
commit0434efa077171f7a2d644354cfad34fa7bc2a0b0 (patch)
tree42b68ad5eb7871b9c193e04c7c4301c77d83f1c8
parentec744655b4a1d6864c2d346801ed3c50468d0615 (diff)
dyn PDCH: Fix free slot search for chan_alloc_reverse == true
For chan_alloc_reverse, _lc_find_trx() should return the last free slot instead of the first. Original patch by jolly, but split in two by nhofmeyr. Change-Id: Iff980242b9b5cb39345aaad0350ee368537677cd
-rw-r--r--openbsc/src/libbsc/chan_alloc.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/openbsc/src/libbsc/chan_alloc.c b/openbsc/src/libbsc/chan_alloc.c
index c9c5fa8c8..37cdb278f 100644
--- a/openbsc/src/libbsc/chan_alloc.c
+++ b/openbsc/src/libbsc/chan_alloc.c
@@ -75,12 +75,24 @@ static struct gsm_lchan *
_lc_find_trx(struct gsm_bts_trx *trx, enum gsm_phys_chan_config pchan)
{
struct gsm_bts_trx_ts *ts;
- int j, ss;
+ int j, start, stop, dir, ss;
if (!trx_is_usable(trx))
return NULL;
- for (j = 0; j < 8; j++) {
+ if (trx->bts->chan_alloc_reverse) {
+ /* check TS 7..0 */
+ start = 7;
+ stop = -1;
+ dir = -1;
+ } else {
+ /* check TS 0..7 */
+ start = 0;
+ stop = 8;
+ dir = 1;
+ }
+
+ for (j = start; j != stop; j += dir) {
ts = &trx->ts[j];
if (!ts_is_usable(ts))
continue;