aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/osmocom/bsc/gsm_data.h18
-rw-r--r--src/libbsc/bsc_vty.c5
-rw-r--r--src/libbsc/paging.c10
3 files changed, 23 insertions, 10 deletions
diff --git a/include/osmocom/bsc/gsm_data.h b/include/osmocom/bsc/gsm_data.h
index a6c8198d6..3fdc82690 100644
--- a/include/osmocom/bsc/gsm_data.h
+++ b/include/osmocom/bsc/gsm_data.h
@@ -197,6 +197,10 @@ enum {
BTS_CTR_CODEC_EFR,
BTS_CTR_CODEC_V1_FR,
BTS_CTR_CODEC_V1_HR,
+ BTS_CTR_PAGING_ATTEMPTED,
+ BTS_CTR_PAGING_ALREADY,
+ BTS_CTR_PAGING_RESPONDED,
+ BTS_CTR_PAGING_EXPIRED,
};
static const struct rate_ctr_desc bts_ctr_description[] = {
@@ -211,6 +215,11 @@ static const struct rate_ctr_desc bts_ctr_description[] = {
[BTS_CTR_CODEC_EFR] = {"codec:efr", "Count the usage of EFR codec by channel mode requested."},
[BTS_CTR_CODEC_V1_FR] = {"codec:fr", "Count the usage of FR codec by channel mode requested."},
[BTS_CTR_CODEC_V1_HR] = {"codec:hr", "Count the usage of HR codec by channel mode requested."},
+
+ [BTS_CTR_PAGING_ATTEMPTED] = {"paging:attempted", "Paging attempts for a subscriber."},
+ [BTS_CTR_PAGING_ALREADY] = {"paging:already", "Paging attempts ignored as subsciber was already being paged."},
+ [BTS_CTR_PAGING_RESPONDED] = {"paging:responded", "Paging attempts with successful paging response."},
+ [BTS_CTR_PAGING_EXPIRED] = {"paging:expired", "Paging Request expired because of timeout T3113."},
};
static const struct rate_ctr_group_desc bts_ctrg_desc = {
@@ -229,8 +238,7 @@ enum {
BSC_CTR_HANDOVER_FAILED,
BSC_CTR_PAGING_ATTEMPTED,
BSC_CTR_PAGING_DETACHED,
- BSC_CTR_PAGING_COMPLETED,
- BSC_CTR_PAGING_EXPIRED,
+ BSC_CTR_PAGING_RESPONDED,
};
static const struct rate_ctr_desc bsc_ctr_description[] = {
@@ -239,10 +247,10 @@ static const struct rate_ctr_desc bsc_ctr_description[] = {
[BSC_CTR_HANDOVER_TIMEOUT] = {"handover:timeout", "Count the amount of timeouts of timer T3103."},
[BSC_CTR_HANDOVER_COMPLETED] = {"handover:completed", "Received handover completed."},
[BSC_CTR_HANDOVER_FAILED] = {"handover:failed", "Receive HO FAIL messages."},
- [BSC_CTR_PAGING_ATTEMPTED] = {"paging:attempted", "Paging attempts for a MS."},
+
+ [BSC_CTR_PAGING_ATTEMPTED] = {"paging:attempted", "Paging attempts for a subscriber."},
[BSC_CTR_PAGING_DETACHED] = {"paging:detached", "Counts the amount of paging attempts which couldn't sent out any paging request because no responsible bts found."},
- [BSC_CTR_PAGING_COMPLETED] = {"paging:completed", "Paging successful completed."},
- [BSC_CTR_PAGING_EXPIRED] = {"paging:expired", "Paging Request expired because of timeout T3113."},
+ [BSC_CTR_PAGING_RESPONDED] = {"paging:responded", "Paging attempts with successful response."},
};
diff --git a/src/libbsc/bsc_vty.c b/src/libbsc/bsc_vty.c
index 42b71650a..950064592 100644
--- a/src/libbsc/bsc_vty.c
+++ b/src/libbsc/bsc_vty.c
@@ -3794,10 +3794,9 @@ DEFUN(cfg_ts_e1_subslot,
void openbsc_vty_print_statistics(struct vty *vty, struct gsm_network *net)
{
- vty_out(vty, "Paging : %"PRIu64" attempted, %"PRIu64" complete, %"PRIu64" expired%s",
+ vty_out(vty, "Paging : %"PRIu64" attempted, %"PRIu64" responded%s",
net->bsc_ctrs->ctr[BSC_CTR_PAGING_ATTEMPTED].current,
- net->bsc_ctrs->ctr[BSC_CTR_PAGING_COMPLETED].current,
- net->bsc_ctrs->ctr[BSC_CTR_PAGING_EXPIRED].current,
+ net->bsc_ctrs->ctr[BSC_CTR_PAGING_RESPONDED].current,
VTY_NEWLINE);
}
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) {