diff options
author | Andreas Eversberg <jolly@eversberg.eu> | 2013-10-11 13:05:16 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2016-06-12 15:48:38 +0000 |
commit | 0434efa077171f7a2d644354cfad34fa7bc2a0b0 (patch) | |
tree | 42b68ad5eb7871b9c193e04c7c4301c77d83f1c8 /openbsc/src/libbsc/chan_alloc.c | |
parent | ec744655b4a1d6864c2d346801ed3c50468d0615 (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
Diffstat (limited to 'openbsc/src/libbsc/chan_alloc.c')
-rw-r--r-- | openbsc/src/libbsc/chan_alloc.c | 16 |
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; |