diff options
author | Holger Hans Peter Freyther <zecke@selfish.org> | 2010-12-23 18:19:17 +0100 |
---|---|---|
committer | Holger Hans Peter Freyther <zecke@selfish.org> | 2010-12-25 21:39:04 +0100 |
commit | d3baf415b1d73ccd84ed0c76ebb50b46540f00cd (patch) | |
tree | 78b37e09498f90455cfeedbcff3d0d1e63091673 /openbsc/include | |
parent | ee139e725386b1df7e482ea76b143fc931a48470 (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.h | 1 | ||||
-rw-r--r-- | openbsc/include/openbsc/paging.h | 3 | ||||
-rw-r--r-- | openbsc/include/openbsc/signal.h | 2 |
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; }; |