aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/include
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <zecke@selfish.org>2010-12-23 18:19:17 +0100
committerHolger Hans Peter Freyther <zecke@selfish.org>2010-12-25 21:39:04 +0100
commitd3baf415b1d73ccd84ed0c76ebb50b46540f00cd (patch)
tree78b37e09498f90455cfeedbcff3d0d1e63091673 /openbsc/include
parentee139e725386b1df7e482ea76b143fc931a48470 (diff)
paging: Introduce a GSM_PAGING_BUSY event for a special timeout
Start counting the attempts of each paging request and call the callback with the PAGING_BUSY type when the paging request timed out but the subscriber was not paged at all. This can only happen with a huge paging backlog. In case the system has so many pending paging
Diffstat (limited to 'openbsc/include')
-rw-r--r--openbsc/include/openbsc/gsm_data.h1
-rw-r--r--openbsc/include/openbsc/paging.h3
-rw-r--r--openbsc/include/openbsc/signal.h2
3 files changed, 6 insertions, 0 deletions
diff --git a/openbsc/include/openbsc/gsm_data.h b/openbsc/include/openbsc/gsm_data.h
index f42ae1b4a..5badde260 100644
--- a/openbsc/include/openbsc/gsm_data.h
+++ b/openbsc/include/openbsc/gsm_data.h
@@ -83,6 +83,7 @@ enum gsm_paging_event {
GSM_PAGING_SUCCEEDED,
GSM_PAGING_EXPIRED,
GSM_PAGING_OOM,
+ GSM_PAGING_BUSY,
};
enum bts_gprs_mode {
diff --git a/openbsc/include/openbsc/paging.h b/openbsc/include/openbsc/paging.h
index 68d8a6a95..a78eb8e9d 100644
--- a/openbsc/include/openbsc/paging.h
+++ b/openbsc/include/openbsc/paging.h
@@ -46,6 +46,9 @@ struct gsm_paging_request {
/* Timer 3113: how long do we try to page? */
struct timer_list T3113;
+ /* How often did we ask the BTS to page? */
+ int attempts;
+
/* callback to be called in case paging completes */
gsm_cbfn *cbfn;
void *cbfn_param;
diff --git a/openbsc/include/openbsc/signal.h b/openbsc/include/openbsc/signal.h
index 40766dbf2..fd95c1e82 100644
--- a/openbsc/include/openbsc/signal.h
+++ b/openbsc/include/openbsc/signal.h
@@ -140,6 +140,8 @@ struct paging_signal_data {
struct gsm_subscriber *subscr;
struct gsm_bts *bts;
+ int paging_result;
+
/* NULL in case the paging didn't work */
struct gsm_subscriber_connection *conn;
};