diff options
author | Max <msuraev@sysmocom.de> | 2017-05-16 16:10:45 +0200 |
---|---|---|
committer | Max <msuraev@sysmocom.de> | 2017-05-26 07:55:52 +0000 |
commit | 9dabfa2c2b882bf4ce72c941f021f7a439de041a (patch) | |
tree | 6f060cdd5d071f9b156b5cbaafd1e167a4b3b71f /src/poll_controller.cpp | |
parent | 356ac618f1f4b455e411507c4be4c9909fe927bb (diff) |
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
Diffstat (limited to 'src/poll_controller.cpp')
-rw-r--r-- | src/poll_controller.cpp | 22 |
1 files changed, 13 insertions, 9 deletions
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<gprs_rlcmac_tbf> *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); } |