From 9dabfa2c2b882bf4ce72c941f021f7a439de041a Mon Sep 17 00:00:00 2001 From: Max Date: Tue, 16 May 2017 16:10:45 +0200 Subject: Cleanup FN scheduling * replace magic number with defined constant * move copy-pasted code to inline functions * remove unused code Change-Id: I6fee0714453d0c3c3f3f875f88daea2d9c477331 Related: OS#1524 --- src/poll_controller.cpp | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) (limited to 'src/poll_controller.cpp') diff --git a/src/poll_controller.cpp b/src/poll_controller.cpp index 54e3bc76..f8ab6c97 100644 --- a/src/poll_controller.cpp +++ b/src/poll_controller.cpp @@ -28,35 +28,39 @@ PollController::PollController(BTS& bts) : m_bts(bts) {} +static inline bool elapsed_fn_check(unsigned max_delay, int frame_number, uint32_t from) +{ + uint32_t elapsed = (frame_number + GSM_MAX_FN - from) % GSM_MAX_FN; + + if (elapsed > max_delay && elapsed < 2715400) + return true; + + return false; +} + void PollController::expireTimedout(int frame_number, unsigned max_delay) { struct gprs_rlcmac_dl_tbf *dl_tbf; struct gprs_rlcmac_ul_tbf *ul_tbf; struct gprs_rlcmac_sba *sba, *sba2; LListHead *pos; - uint32_t elapsed; llist_for_each(pos, &m_bts.ul_tbfs()) { ul_tbf = as_ul_tbf(pos->entry()); if (ul_tbf->poll_state == GPRS_RLCMAC_POLL_SCHED) { - elapsed = (frame_number + 2715648 - ul_tbf->poll_fn) - % 2715648; - if (elapsed > max_delay && elapsed < 2715400) + if (elapsed_fn_check(max_delay, frame_number, ul_tbf->poll_fn)) ul_tbf->poll_timeout(); } } llist_for_each(pos, &m_bts.dl_tbfs()) { dl_tbf = as_dl_tbf(pos->entry()); if (dl_tbf->poll_state == GPRS_RLCMAC_POLL_SCHED) { - elapsed = (frame_number + 2715648 - dl_tbf->poll_fn) - % 2715648; - if (elapsed > max_delay && elapsed < 2715400) + if (elapsed_fn_check(max_delay, frame_number, dl_tbf->poll_fn)) dl_tbf->poll_timeout(); } } llist_for_each_entry_safe(sba, sba2, &m_bts.sba()->m_sbas, list) { - elapsed = (frame_number + 2715648 - sba->fn) % 2715648; - if (elapsed > max_delay && elapsed < 2715400) { + if (elapsed_fn_check(max_delay, frame_number, sba->fn)) { /* sba will be freed here */ m_bts.sba()->timeout(sba); } -- cgit v1.2.3