stats: Add a BTS counter for paging requests responded elsewhere.

If we have several BTS in a single LAC, only one of them will respond
to the paging. Without this counter this situation will lead to
"lost" paging requests, i.e. in disparity between attempted pagings
and expired/responded/etc pagings. Now the sum of all paging
response counters should actually match the attempted counter.

Change-Id: I4b27a0559ef2762e62bc3ac30000f17b89b0ed48
This commit is contained in:
Alexander Chemeris 2020-05-22 21:26:32 +03:00 committed by Kirill Zakharenko
parent d3cb71b551
commit 1062f88f83
2 changed files with 5 additions and 1 deletions

View File

@ -1397,6 +1397,7 @@ enum bts_counter_id {
BTS_CTR_PAGING_ATTEMPTED,
BTS_CTR_PAGING_ALREADY,
BTS_CTR_PAGING_RESPONDED,
BTS_CTR_PAGING_RESPONDED_ELSEWHERE,
BTS_CTR_PAGING_EXPIRED,
BTS_CTR_PAGING_NO_ACTIVE_PAGING,
BTS_CTR_PAGING_MSC_FLUSH,
@ -1444,6 +1445,7 @@ static const struct rate_ctr_desc bts_ctr_description[] = {
[BTS_CTR_PAGING_ATTEMPTED] = {"paging:attempted", "Paging attempts for a subscriber."},
[BTS_CTR_PAGING_ALREADY] = {"paging:already", "Paging attempts ignored as subscriber was already being paged."},
[BTS_CTR_PAGING_RESPONDED] = {"paging:responded", "Paging attempts with successful paging response."},
[BTS_CTR_PAGING_RESPONDED_ELSEWHERE] = {"paging:responded_elsewhere", "Paging attempts with paging response received on another BTS with the same LAC."},
[BTS_CTR_PAGING_EXPIRED] = {"paging:expired", "Paging Request expired because of timeout T3113."},
[BTS_CTR_PAGING_NO_ACTIVE_PAGING] = {"paging:no_active_paging", "Paging response without an active paging request (arrived after paging expiration?)."},
[BTS_CTR_PAGING_MSC_FLUSH] = {"paging:msc_flush", "Paging flushed due to MSC Reset BSSMAP message."},

View File

@ -441,7 +441,9 @@ void paging_request_stop(struct llist_head *bts_list,
/* Sort of an optimization. */
if (bts == _bts)
continue;
_paging_request_stop(bts, bsub, NULL, NULL);
if (_paging_request_stop(bts, bsub, NULL, NULL) == 0) {
rate_ctr_inc(&bts->bts_ctrs->ctr[BTS_CTR_PAGING_RESPONDED_ELSEWHERE]);
}
}
log_set_context(LOG_CTX_BSC_SUBSCR, NULL);
}