aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/paging.c
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <zecke@selfish.org>2010-04-19 21:54:35 +0800
committerHolger Hans Peter Freyther <zecke@selfish.org>2010-04-19 22:30:21 +0800
commitcaf24567d134e3e783ca8f271c7cd9b21237ee35 (patch)
tree930e9eddd788945e248255c001d6cc589fc7547e /openbsc/src/paging.c
parent1d34c6ac5af41c058ec76ee92c3045feed3fe9af (diff)
BAND AID... Reduce the delay timer, reduce number of paging requests we send
This is a band aid and not a proper fix. Reduce the time between two IPA commands even if it is breaking rugby sized BTSs, limit the paging commands we send during one iteration through the event loop. This should prevent us from killing ourselves in a RACH loop.
Diffstat (limited to 'openbsc/src/paging.c')
-rw-r--r--openbsc/src/paging.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/openbsc/src/paging.c b/openbsc/src/paging.c
index a0cdc55ce..07683ad64 100644
--- a/openbsc/src/paging.c
+++ b/openbsc/src/paging.c
@@ -116,6 +116,10 @@ static void paging_handle_pending_requests(struct gsm_bts_paging_state *paging_b
struct gsm_paging_request *initial_request = NULL;
struct gsm_paging_request *current_request = NULL;
+ /* BAND AID to throttle the paging requests we send. Not more than 10. */
+ int req = 0;
+ static const int REQ_LIMIT = 5;
+
/*
* Determine if the pending_requests list is empty and
* return then.
@@ -155,7 +159,8 @@ static void paging_handle_pending_requests(struct gsm_bts_paging_state *paging_b
current_request = llist_entry(paging_bts->pending_requests.next,
struct gsm_paging_request, entry);
} while (paging_bts->available_slots > 0
- && initial_request != current_request);
+ && initial_request != current_request
+ && req++ < REQ_LIMIT);
bsc_schedule_timer(&paging_bts->work_timer, 2, 0);
}