[paging] Send paging requests as response to the PAGING LOAD indicator

Kill the paging timer and send paging upon paging load notifications.
This commit is contained in:
Holger Freyther 2009-02-11 01:49:15 +00:00
parent ed2aea8ac1
commit b1ffbb62ee
2 changed files with 4 additions and 13 deletions

View File

@ -208,9 +208,6 @@ struct gsm_bts_paging_state {
/* load */
u_int16_t available_slots;
/* tick timer */
struct timer_list paging_timer;
};
/* One BTS */

View File

@ -99,9 +99,8 @@ static void page_ms(struct gsm_paging_request *request)
request->chan_type);
}
static void paging_handle_pending_requests(void *data) {
struct gsm_bts_paging_state *paging_bts =
(struct gsm_bts_paging_state *)data;
static void paging_handle_pending_requests(struct gsm_bts_paging_state *paging_bts)
{
struct gsm_paging_request *request = NULL;
if (!paging_bts->last_request)
@ -121,19 +120,15 @@ static void paging_handle_pending_requests(void *data) {
(struct gsm_paging_request *)paging_bts->last_request->entry.next;
if (&paging_bts->last_request->entry == &paging_bts->pending_requests)
paging_bts->last_request = NULL;
schedule_timer(&paging_bts->paging_timer, PAGING_TIMEOUT);
}
void paging_init(struct gsm_bts *bts)
{
bts->paging.bts = bts;
INIT_LLIST_HEAD(&bts->paging.pending_requests);
bts->paging.paging_timer.cb = paging_handle_pending_requests;
bts->paging.paging_timer.data = &bts->paging;
/* Large number, until we get a proper message */
bts->paging.available_slots = 0xffff;
bts->paging.available_slots = 0x0;
}
static int paging_pending_request(struct gsm_bts_paging_state *bts,
@ -174,8 +169,6 @@ void paging_request(struct gsm_bts *bts, struct gsm_subscriber *subscr, int type
if (!paging_pending_request(bts_entry, subscr)) {
llist_add_tail(&req->entry, &bts_entry->pending_requests);
if (!timer_pending(&bts_entry->paging_timer))
schedule_timer(&bts_entry->paging_timer, PAGING_TIMEOUT);
} else {
DEBUGP(DPAG, "Paging request already pending\n");
}
@ -199,4 +192,5 @@ void paging_request_stop(struct gsm_bts *bts, struct gsm_subscriber *subscr)
void paging_update_buffer_space(struct gsm_bts *bts, u_int16_t free_slots)
{
bts->paging.available_slots = free_slots;
paging_handle_pending_requests(&bts->paging);
}