diff options
author | Andreas Eversberg <jolly@eversberg.eu> | 2012-07-08 18:44:40 +0200 |
---|---|---|
committer | Andreas Eversberg <jolly@eversberg.eu> | 2012-07-08 18:44:40 +0200 |
commit | ea15101896b8c8d61b1a0b00fc6816167b9e502b (patch) | |
tree | 62990e5a1e5f19c34b9289f0066027db313bc829 | |
parent | b57e17394befd74f1e3259ac8f3f5257022970e1 (diff) |
Fixed check for RACH (random access) delay
-rw-r--r-- | src/osmo-bts-sysmo/l1_if.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/src/osmo-bts-sysmo/l1_if.c b/src/osmo-bts-sysmo/l1_if.c index 564f1704..d9049a94 100644 --- a/src/osmo-bts-sysmo/l1_if.c +++ b/src/osmo-bts-sysmo/l1_if.c @@ -705,6 +705,7 @@ static int handle_ph_ra_ind(struct femtol1_hdl *fl1, GsmL1_PhRaInd_t *ra_ind) struct gsm_bts_role_bts *btsb = bts->role; struct osmo_phsap_prim pp; struct lapdm_channel *lc; + uint8_t acc_delay; /* increment number of busy RACH slots, if required */ if (trx == bts->c0 && @@ -732,18 +733,17 @@ static int handle_ph_ra_ind(struct femtol1_hdl *fl1, GsmL1_PhRaInd_t *ra_ind) pp.u.rach_ind.ra = ra_ind->msgUnitParam.u8Buffer[0]; pp.u.rach_ind.fn = ra_ind->u32Fn; - /* FIXME: check for under/overflow / sign */ - if (ra_ind->measParam.i16BurstTiming <= 0 || - ra_ind->measParam.i16BurstTiming > 63 * 4) - pp.u.rach_ind.acc_delay = 0; + /* check for under/overflow / sign */ + if (ra_ind->measParam.i16BurstTiming < 0) + acc_delay = 0; else - pp.u.rach_ind.acc_delay = ra_ind->measParam.i16BurstTiming >> 2; - - if (pp.u.rach_ind.acc_delay > btsb->max_ta) { + acc_delay = ra_ind->measParam.i16BurstTiming >> 2; + if (acc_delay > btsb->max_ta) { LOGP(DL1C, LOGL_INFO, "ignoring RACH request %u > max_ta(%u)\n", - pp.u.rach_ind.acc_delay, btsb->max_ta); + acc_delay, btsb->max_ta); return 0; } + pp.u.rach_ind.acc_delay = acc_delay; return lapdm_phsap_up(&pp.oph, &lc->lapdm_dcch); } |