diff options
author | Pau Espin Pedrol <pespin@sysmocom.de> | 2022-04-26 17:37:03 +0200 |
---|---|---|
committer | Pau Espin Pedrol <pespin@sysmocom.de> | 2022-04-28 16:04:04 +0200 |
commit | 5cfb63f4b0e1390d56c794e24eff3be71311ab47 (patch) | |
tree | 8461e8749d3cf748e029ac86181837848698acfc | |
parent | 1e79745e801db06783dc74348f10208dda776267 (diff) |
paging: Improve calculate_timer_3113()
Depends: libosmocore.git Change-Id I6ef085ee92b2064cb46fa5ec3ae98a0ca59ad599
Change-Id: Id7d6bf93537bcef6658ec72e3ebedcedf64690ed
-rw-r--r-- | src/osmo-bsc/paging.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/osmo-bsc/paging.c b/src/osmo-bsc/paging.c index 9bc010532..24a3582f1 100644 --- a/src/osmo-bsc/paging.c +++ b/src/osmo-bsc/paging.c @@ -324,6 +324,7 @@ static unsigned int calculate_timer_3113(struct gsm_bts *bts) { unsigned int to_us, to; struct osmo_tdef *d = osmo_tdef_get_entry(bts->network->T_defs, 3113); + unsigned int rach_max_trans, rach_tx_integer, bs_pa_mfrms; /* Note: d should always contain a valid pointer since all timers, * including 3113 are statically pre-defined in @@ -337,10 +338,14 @@ static unsigned int calculate_timer_3113(struct gsm_bts *bts) /* MFRMS defines repeat interval of paging messages for MSs that belong * to same paging group across multiple 51 frame multiframes. - * MAXTRANS defines maximum number of RACH retransmissions. + * MAXTRANS defines maximum number of RACH retransmissions, spread over + * TXINTEGER slots. */ - to_us = GSM51_MFRAME_DURATION_us * (bts->si_common.chan_desc.bs_pa_mfrms + 2) * - bts->si_common.rach_control.max_trans; + rach_max_trans = rach_max_trans_raw2val(bts->si_common.rach_control.max_trans); + rach_tx_integer = rach_tx_integer_raw2val(bts->si_common.rach_control.tx_integer); + bs_pa_mfrms = (bts->si_common.chan_desc.bs_pa_mfrms + 2); + to_us = GSM51_MFRAME_DURATION_us * bs_pa_mfrms + + GSM_TDMA_FN_DURATION_uS * rach_tx_integer * rach_max_trans; /* ceiling in seconds + extra time */ to = (to_us + 999999) / 1000000 + d->val; |