Review at https://gerrit.osmocom.org/7078
common/l1sap.c: clean up RACH ToA (Timing of Arrival) check And use units of 1/256 symbol periods for better precision. Change-Id: Icfe1256cba117a5735107a25bf7cdb47479454ee --- M src/common/l1sap.c 1 file changed, 8 insertions(+), 13 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/78/7078/1 diff --git a/src/common/l1sap.c b/src/common/l1sap.c index 330b40a..ecd6805 100644 --- a/src/common/l1sap.c +++ b/src/common/l1sap.c @@ -797,13 +797,6 @@ return 1; } -static int check_acc_delay(struct ph_rach_ind_param *rach_ind, - struct gsm_bts_role_bts *btsb, uint8_t *acc_delay) -{ - *acc_delay = rach_ind->acc_delay; - return *acc_delay <= btsb->max_ta; -} - /* special case where handover RACH is detected */ static int l1sap_handover_rach(struct gsm_bts_trx *trx, struct osmo_phsap_prim *l1sap, struct ph_rach_ind_param *rach_ind) @@ -1187,7 +1180,7 @@ struct gsm_bts *bts = trx->bts; struct gsm_bts_role_bts *btsb = bts->role; struct lapdm_channel *lc; - uint8_t acc_delay; + int16_t toa256 = rach_ind->acc_delay_256bits; DEBUGPFN(DL1P, rach_ind->fn, "Rx PH-RA.ind"); @@ -1215,16 +1208,18 @@ lc = &trx->ts[0].lchan[CCCH_LCHAN].lapdm_ch; - /* check for under/overflow / sign */ - if (!check_acc_delay(rach_ind, btsb, &acc_delay)) { - LOGPFN(DL1C, LOGL_INFO, rach_ind->fn, "ignoring RACH request %u > max_ta(%u)\n", - acc_delay, btsb->max_ta); + /* Make sure that ToA (Timing of Arrival) is acceptable */ + if (toa256 > btsb->max_ta * 256) { + LOGPFN(DL1C, LOGL_INFO, rach_ind->fn, "Ignoring RACH request: " + "ToA(%d) exceeds the maximal allowed TA(%u) * 256 value\n", + toa256, btsb->max_ta); rate_ctr_inc2(trx->bts->ctrs, BTS_CTR_RACH_DROP); return 0; } /* According to 3GPP TS 48.058 ยง 9.3.17 Access Delay is expressed same way as TA (number of symbols) */ - set_ms_to_data(get_lchan_by_chan_nr(trx, rach_ind->chan_nr), acc_delay, false); + set_ms_to_data(get_lchan_by_chan_nr(trx, rach_ind->chan_nr), + rach_ind->acc_delay, false); /* check for packet access */ if ((trx == bts->c0 && L1SAP_IS_PACKET_RACH(rach_ind->ra)) || -- To view, visit https://gerrit.osmocom.org/7078 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Icfe1256cba117a5735107a25bf7cdb47479454ee Gerrit-PatchSet: 1 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy <axilira...@gmail.com>