gprs_rlcmac_sched: fix incorrect SBA frame number assignment
There is a big difference between:
if ((a = foo() != 0xffffffff)) { ... }
and
if ((a = foo()) != 0xffffffff) { ... }
In the first case, 'a' is the result of '!=' operation, i.e. either
0 (false) or 1 (true). In the second case, 'a' will hold the value
returned by foo(), and this is exactly what must have been used in
gprs_rlcmac_rcv_rts_block().
The bug was there since SBA allocation feature was added in 2012.
Change-Id: Ifd607ae8a33382e48f9d9e50a28a4bdf4eaf73a2
Fixes: 07e97cf8a5
Related: CID#215835
This commit is contained in:
parent
d3123ea0f5
commit
480c8acc8b
|
@ -448,7 +448,7 @@ int gprs_rlcmac_rcv_rts_block(struct gprs_rlcmac_bts *bts,
|
||||||
block_nr, poll_fn, tbf_name(tbf_cand.poll));
|
block_nr, poll_fn, tbf_name(tbf_cand.poll));
|
||||||
usf = USF_UNUSED;
|
usf = USF_UNUSED;
|
||||||
/* else. check for sba */
|
/* else. check for sba */
|
||||||
} else if ((sba_fn = bts->bts->sba()->sched(trx, ts, fn, block_nr) != 0xffffffff)) {
|
} else if ((sba_fn = bts->bts->sba()->sched(trx, ts, fn, block_nr)) != 0xffffffff) {
|
||||||
LOGP(DRLCMACSCHED, LOGL_DEBUG, "Received RTS for PDCH: TRX=%d "
|
LOGP(DRLCMACSCHED, LOGL_DEBUG, "Received RTS for PDCH: TRX=%d "
|
||||||
"TS=%d FN=%d block_nr=%d scheduling free USF for "
|
"TS=%d FN=%d block_nr=%d scheduling free USF for "
|
||||||
"single block allocation at FN=%d\n", trx, ts, fn,
|
"single block allocation at FN=%d\n", trx, ts, fn,
|
||||||
|
|
Loading…
Reference in New Issue