aboutsummaryrefslogtreecommitdiffstats
path: root/src/paging.c
diff options
context:
space:
mode:
authorHolger Freyther <zecke@selfish.org>2009-02-11 01:49:15 +0000
committerHolger Freyther <zecke@selfish.org>2009-02-11 01:49:15 +0000
commitb1ffbb62eebba43571ab6758d8a7cb43678d2138 (patch)
treee691ca956c79eb808cc7413aefbbb891a0e8f8c8 /src/paging.c
parented2aea8ac1f10b64bf093970755e5525a1d29b47 (diff)
[paging] Send paging requests as response to the PAGING LOAD indicator
Kill the paging timer and send paging upon paging load notifications.
Diffstat (limited to 'src/paging.c')
-rw-r--r--src/paging.c14
1 files changed, 4 insertions, 10 deletions
diff --git a/src/paging.c b/src/paging.c
index daa8c068d..0734a3f13 100644
--- a/src/paging.c
+++ b/src/paging.c
@@ -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);
}