From caf24567d134e3e783ca8f271c7cd9b21237ee35 Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Mon, 19 Apr 2010 21:54:35 +0800 Subject: 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. --- openbsc/src/input/ipaccess.c | 3 ++- openbsc/src/paging.c | 7 ++++++- 2 files changed, 8 insertions(+), 2 deletions(-) (limited to 'openbsc/src') diff --git a/openbsc/src/input/ipaccess.c b/openbsc/src/input/ipaccess.c index 8a8a1987d..faa172b38 100644 --- a/openbsc/src/input/ipaccess.c +++ b/openbsc/src/input/ipaccess.c @@ -572,7 +572,8 @@ static int handle_ts1_write(struct bsc_fd *bfd) e1i_ts->sign.tx_timer.data = e1i_ts; /* Reducing this might break the nanoBTS 900 init. */ - bsc_schedule_timer(&e1i_ts->sign.tx_timer, 0, 100000); + /* BAND AID for paging problem */ + bsc_schedule_timer(&e1i_ts->sign.tx_timer, 0, 100); return ret; } 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); } -- cgit v1.2.3