aboutsummaryrefslogtreecommitdiffstats
path: root/src/poll_controller.cpp
diff options
context:
space:
mode:
authorMax <msuraev@sysmocom.de>2017-05-16 16:10:45 +0200
committerMax <msuraev@sysmocom.de>2017-05-26 07:55:52 +0000
commit9dabfa2c2b882bf4ce72c941f021f7a439de041a (patch)
tree6f060cdd5d071f9b156b5cbaafd1e167a4b3b71f /src/poll_controller.cpp
parent356ac618f1f4b455e411507c4be4c9909fe927bb (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.cpp22
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);
}