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.
This commit is contained in:
Holger Hans Peter Freyther
2010-04-19 21:54:35 +08:00
parent 1d34c6ac5a
commit caf24567d1
2 changed files with 8 additions and 2 deletions

View File

@@ -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;
}

View File

@@ -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);
}