handover,sysmobts: Refactor the parsing/handling of the access delay

This commit is contained in:
Holger Hans Peter Freyther 2014-01-23 16:02:09 +01:00
parent 00b4e064ff
commit cfce4d65f2
1 changed files with 10 additions and 5 deletions

View File

@ -806,6 +806,15 @@ static int handle_ph_data_ind(struct femtol1_hdl *fl1, GsmL1_PhDataInd_t *data_i
return rc;
}
static int check_acc_delay(GsmL1_PhRaInd_t *ra_ind, struct gsm_bts_role_bts *btsb,
uint8_t *acc_delay)
{
if (ra_ind->measParam.i16BurstTiming < 0)
*acc_delay = 0;
else
*acc_delay = ra_ind->measParam.i16BurstTiming >> 2;
return *acc_delay <= btsb->max_ta;
}
static int handle_ph_ra_ind(struct femtol1_hdl *fl1, GsmL1_PhRaInd_t *ra_ind)
{
@ -838,11 +847,7 @@ static int handle_ph_ra_ind(struct femtol1_hdl *fl1, GsmL1_PhRaInd_t *ra_ind)
}
/* check for under/overflow / sign */
if (ra_ind->measParam.i16BurstTiming < 0)
acc_delay = 0;
else
acc_delay = ra_ind->measParam.i16BurstTiming >> 2;
if (acc_delay > btsb->max_ta) {
if (!check_acc_delay(ra_ind, btsb, &acc_delay)) {
LOGP(DL1C, LOGL_INFO, "ignoring RACH request %u > max_ta(%u)\n",
acc_delay, btsb->max_ta);
return 0;