Aggregate NSVC stats inside the NSE
Change-Id: Ifa3c85ec52bda14596e9d7a8705baa1fd4ee2010
Related: OS#4998
diff --git a/src/gb/gprs_ns2.c b/src/gb/gprs_ns2.c
index 3eb59e5..fb2965a 100644
--- a/src/gb/gprs_ns2.c
+++ b/src/gb/gprs_ns2.c
@@ -159,7 +159,7 @@
{ 0, NULL }
};
-static const struct rate_ctr_desc nsvc_ctr_description[] = {
+static const struct rate_ctr_desc ns_ctr_description[] = {
[NS_CTR_PKTS_IN] = { "packets:in", "Packets at NS Level ( In)" },
[NS_CTR_PKTS_OUT] = { "packets:out", "Packets at NS Level (Out)" },
[NS_CTR_PKTS_OUT_DROP] = { "packets:out:drop", "Dropped Packets (Out)" },
@@ -177,11 +177,19 @@
[NS_CTR_LOST_RESET] = { "lost:reset", "RESET ACK missing count " },
};
+static const struct rate_ctr_group_desc nse_ctrg_desc = {
+ .group_name_prefix = "ns:nse",
+ .group_description = "NSE Peer Statistics",
+ .num_ctr = ARRAY_SIZE(ns_ctr_description),
+ .ctr_desc = ns_ctr_description,
+ .class_id = OSMO_STATS_CLASS_PEER,
+};
+
static const struct rate_ctr_group_desc nsvc_ctrg_desc = {
.group_name_prefix = "ns:nsvc",
.group_description = "NSVC Peer Statistics",
- .num_ctr = ARRAY_SIZE(nsvc_ctr_description),
- .ctr_desc = nsvc_ctr_description,
+ .num_ctr = ARRAY_SIZE(ns_ctr_description),
+ .ctr_desc = ns_ctr_description,
.class_id = OSMO_STATS_CLASS_PEER,
};
@@ -806,6 +814,12 @@
return NULL;
}
+ nse->ctrg = rate_ctr_group_alloc(nse, &nse_ctrg_desc, nsei);
+ if (!nse->ctrg) {
+ talloc_free(nse);
+ return NULL;
+ }
+
nse->ll = linklayer;
nse->nsei = nsei;
nse->nsi = nsi;
@@ -886,6 +900,7 @@
gprs_ns2_free_nsvcs(nse);
ns2_prim_status_ind(nse, NULL, 0, GPRS_NS2_AFF_CAUSE_FAILURE);
+ rate_ctr_group_free(nse->ctrg);
llist_del(&nse->list);
talloc_free(nse);
@@ -1265,8 +1280,8 @@
log_set_context(LOG_CTX_GB_NSE, nsvc->nse);
log_set_context(LOG_CTX_GB_NSVC, nsvc);
- rate_ctr_inc(rate_ctr_group_get_ctr(nsvc->ctrg, NS_CTR_PKTS_IN));
- rate_ctr_add(rate_ctr_group_get_ctr(nsvc->ctrg, NS_CTR_BYTES_IN), msg->len);
+ RATE_CTR_INC_NS(nsvc, NS_CTR_PKTS_IN);
+ RATE_CTR_ADD_NS(nsvc, NS_CTR_BYTES_IN, msg->len);
if (msg->len < sizeof(struct gprs_ns_hdr)) {
rc = -EINVAL;