From d04d43098dd9017517e149016d3bcbcf4906c50c Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Mon, 27 Jun 2011 23:51:02 +0200 Subject: [PATCH] paging: add paging_reset() function --- include/osmo-bts/paging.h | 2 ++ src/common/paging.c | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/include/osmo-bts/paging.h b/include/osmo-bts/paging.h index 793a2a144..a7951884d 100644 --- a/include/osmo-bts/paging.h +++ b/include/osmo-bts/paging.h @@ -11,6 +11,8 @@ struct paging_state; struct paging_state *paging_init(void *ctx, unsigned int num_paging_max, unsigned int paging_lifetime); +void paging_reset(struct paging_state *ps); + /* update with new SYSTEM INFORMATION parameters */ int paging_si_update(struct paging_state *ps, struct gsm48_control_channel_descr *chan_desc); diff --git a/src/common/paging.c b/src/common/paging.c index 0f51d7534..6276b1d03 100644 --- a/src/common/paging.c +++ b/src/common/paging.c @@ -438,3 +438,23 @@ struct paging_state *paging_init(void *ctx, unsigned int num_paging_max, } return ps; } + +void paging_reset(struct paging_state *ps) +{ + int i; + + for (i = 0; i < ARRAY_SIZE(ps->paging_queue); i++) { + struct llist_head *queue = &ps->paging_queue[i]; + struct paging_record *pr, *pr2; + llist_for_each_entry_safe(pr, pr2, queue, list) { + llist_del(&pr->list); + talloc_free(pr); + ps->num_paging--; + } + } + + if (ps->num_paging != 0) + LOGP(DPAG, LOGL_NOTICE, "num_paging != 0 after flushing all records?!?\n"); + + ps->num_paging = 0; +}