aboutsummaryrefslogtreecommitdiffstats
path: root/src/common/bts.c
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2018-02-24 12:36:52 +0100
committerHarald Welte <laforge@gnumonks.org>2018-02-24 19:26:42 +0100
commitd7f8a1c16e8a6337539b5dae291f435cf0cf426e (patch)
treed394995e58a5101561ed72623519cae54230db9d /src/common/bts.c
parentc1135015135f9c664dd6735f30fc94772c0d9ce8 (diff)
BTS: add rate_ctr about CCCH (paging, agch, pch)
Diffstat (limited to 'src/common/bts.c')
-rw-r--r--src/common/bts.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/common/bts.c b/src/common/bts.c
index 7849d616..60a309e2 100644
--- a/src/common/bts.c
+++ b/src/common/bts.c
@@ -32,6 +32,8 @@
#include <osmocom/core/timer.h>
#include <osmocom/core/msgb.h>
#include <osmocom/core/talloc.h>
+#include <osmocom/core/stats.h>
+#include <osmocom/core/rate_ctr.h>
#include <osmocom/gsm/protocol/gsm_12_21.h>
#include <osmocom/gsm/lapdm.h>
#include <osmocom/trau/osmo_ortp.h>
@@ -79,6 +81,26 @@ static int bts_signal_cbfn(unsigned int subsys, unsigned int signal,
return 0;
}
+static const struct rate_ctr_desc bts_ctr_desc[] = {
+ [BTS_CTR_PAGING_RCVD] = {"paging:rcvd", "Received paging requests (Abis)"},
+ [BTS_CTR_PAGING_DROP] = {"paging:drop", "Dropped paging requests (Abis)"},
+ [BTS_CTR_PAGING_SENT] = {"paging:sent", "Sent paging requests (Um)"},
+
+ [BTS_CTR_RACH_RCVD] = {"rach:rcvd", "Received RACH requests (Um)"},
+ [BTS_CTR_RACH_SENT] = {"rach:sent", "Sent RACH requests (Abis)"},
+
+ [BTS_CTR_AGCH_RCVD] = {"agch:rcvd", "Received AGCH requests (Abis)"},
+ [BTS_CTR_AGCH_SENT] = {"agch:sent", "Sent AGCH requests (Abis)"},
+ [BTS_CTR_AGCH_DELETED] = {"agch:delete", "Sent AGCH DELETE IND (Abis)"},
+};
+static const struct rate_ctr_group_desc bts_ctrg_desc = {
+ "bts",
+ "base transceiver station",
+ OSMO_STATS_CLASS_GLOBAL,
+ ARRAY_SIZE(bts_ctr_desc),
+ bts_ctr_desc
+};
+
/* Initialize the BTS (and TRX) data structures, called before config
* file reading */
int bts_init(struct gsm_bts *bts)
@@ -95,10 +117,13 @@ int bts_init(struct gsm_bts *bts)
bts->band = GSM_BAND_1800;
bts->role = btsb = talloc_zero(bts, struct gsm_bts_role_bts);
+ btsb->bts = bts;
INIT_LLIST_HEAD(&btsb->agch_queue);
btsb->agch_queue_length = 0;
+ bts->ctrs = rate_ctr_group_alloc(bts, &bts_ctrg_desc, bts->nr);
+
/* enable management with default levels,
* raise threshold to GSM_BTS_AGCH_QUEUE_THRESH_LEVEL_DISABLE to
* disable this feature.
@@ -636,6 +661,8 @@ int bts_ccch_copy_msg(struct gsm_bts *bts, uint8_t *out_buf, struct gsm_time *gt
if (!msg)
return rc;
+ rate_ctr_inc2(bts->ctrs, BTS_CTR_AGCH_SENT);
+
/* Copy AGCH message */
memcpy(out_buf, msgb_l3(msg), msgb_l3len(msg));
rc = msgb_l3len(msg);