diff options
author | Harald Welte <laforge@gnumonks.org> | 2017-12-13 23:17:16 +0100 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2017-12-14 13:06:33 +0100 |
commit | cf9d431e8978c085d0e0992eeb8de817dbeaf9f6 (patch) | |
tree | d01cfc2aa42847e04bf1653a61ac91e5d72a8df2 /src/libbsc/paging.c | |
parent | 2ed22c83dfd8fcc944fd05c854ab4d8de7895b30 (diff) |
libbsc: paging: more reasonable (and detailed) paging statistics
Counting the number of T3113 expirations (one per subscriber per BTS)
vs the number of paging attempts (Bsc global) is a ueseless figure,
as you cannot relate each other.
We count on the BSC level:
* how many PAGING we received from the MSC (total)
* how many of those were for cells/LACs we don't serve
* how many of those resulted in PAGING RESPONSE
We count on the BTS leve:
* how many PAGING CMD we sent to the BTS (total)
* how many of those we ignored as we were already paging
* how many of those resulted in PAGING RESPONSE
* how many were expired due to T3113 expiring
Change-Id: I410bbcbb2621f95f11238f7a5da01ab438f5fee1
Diffstat (limited to 'src/libbsc/paging.c')
-rw-r--r-- | src/libbsc/paging.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/libbsc/paging.c b/src/libbsc/paging.c index 42ecdcf28..314dfddd9 100644 --- a/src/libbsc/paging.c +++ b/src/libbsc/paging.c @@ -277,7 +277,7 @@ static void paging_T3113_expired(void *data) req, bsc_subscr_name(req->bsub)); /* must be destroyed before calling cbfn, to prevent double free */ - rate_ctr_inc(&req->bts->network->bsc_ctrs->ctr[BSC_CTR_PAGING_EXPIRED]); + rate_ctr_inc(&req->bts->bts_ctrs->ctr[BTS_CTR_PAGING_EXPIRED]); /* destroy it now. Do not access req afterwards */ paging_remove_request(&req->bts->paging, req); @@ -295,9 +295,12 @@ static int _paging_request(struct gsm_bts *bts, struct bsc_subscr *bsub, int typ struct gsm_bts_paging_state *bts_entry = &bts->paging; struct gsm_paging_request *req; + rate_ctr_inc(&bts->bts_ctrs->ctr[BTS_CTR_PAGING_ATTEMPTED]); + if (paging_pending_request(bts_entry, bsub)) { LOGP(DPAG, LOGL_INFO, "Paging request already pending for %s\n", bsc_subscr_name(bsub)); + rate_ctr_inc(&bts->bts_ctrs->ctr[BTS_CTR_PAGING_ALREADY]); return -EEXIST; } @@ -423,8 +426,11 @@ void paging_request_stop(struct llist_head *bts_list, log_set_context(LOG_CTX_BSC_SUBSCR, bsub); /* Stop this first and dispatch the request */ - if (_bts) + if (_bts) { _paging_request_stop(_bts, bsub, conn, msg); + rate_ctr_inc(&_bts->bts_ctrs->ctr[BTS_CTR_PAGING_RESPONDED]); + rate_ctr_inc(&_bts->network->bsc_ctrs->ctr[BSC_CTR_PAGING_RESPONDED]); + } /* Make sure to cancel this everywhere else */ llist_for_each_entry(bts, bts_list, list) { |