diff --git a/openbsc/include/openbsc/sgsn.h b/openbsc/include/openbsc/sgsn.h index 59126fe9b..19496cbf8 100644 --- a/openbsc/include/openbsc/sgsn.h +++ b/openbsc/include/openbsc/sgsn.h @@ -22,6 +22,10 @@ enum sgsn_auth_policy { enum sgsn_rate_ctr_keys { + CTR_LLC_DL_BYTES, + CTR_LLC_UL_BYTES, + CTR_LLC_DL_PACKETS, + CTR_LLC_UL_PACKETS, CTR_GPRS_ATTACH_REQUEST, CTR_GPRS_ATTACH_ACKED, CTR_GPRS_ATTACH_REJECTED, diff --git a/openbsc/src/gprs/gprs_llc.c b/openbsc/src/gprs/gprs_llc.c index 7724ebb5b..c77fc0580 100644 --- a/openbsc/src/gprs/gprs_llc.c +++ b/openbsc/src/gprs/gprs_llc.c @@ -29,6 +29,7 @@ #include #include #include +#include #include #include @@ -331,6 +332,9 @@ int gprs_llc_tx_u(struct msgb *msg, uint8_t sapi, int command, /* Identifiers passed down: (BVCI, NSEI) */ + rate_ctr_inc(&sgsn->rate_ctrs->ctr[CTR_LLC_DL_PACKETS]); + rate_ctr_add(&sgsn->rate_ctrs->ctr[CTR_LLC_DL_BYTES], msg->len); + /* Send BSSGP-DL-UNITDATA.req */ return _bssgp_tx_dl_ud(msg, NULL); } @@ -673,6 +677,9 @@ int gprs_llc_rcvmsg(struct msgb *msg, struct tlv_parsed *tv) if (rc < 0) return rc; + rate_ctr_inc(&sgsn->rate_ctrs->ctr[CTR_LLC_UL_PACKETS]); + rate_ctr_add(&sgsn->rate_ctrs->ctr[CTR_LLC_UL_BYTES], msg->len); + /* llhp.data is only set when we need to send LL_[UNIT]DATA_IND up */ if (llhp.cmd == GPRS_LLC_UI && llhp.data && llhp.data_len) { msgb_gmmh(msg) = llhp.data; diff --git a/openbsc/src/gprs/gprs_sgsn.c b/openbsc/src/gprs/gprs_sgsn.c index 502ba4a98..038e6f0eb 100644 --- a/openbsc/src/gprs/gprs_sgsn.c +++ b/openbsc/src/gprs/gprs_sgsn.c @@ -91,6 +91,10 @@ static const struct rate_ctr_group_desc pdpctx_ctrg_desc = { }; static const struct rate_ctr_desc sgsn_ctr_description[] = { + { "llc.dl_bytes", "Count sent LLC bytes before giving it to the bssgp layer" }, + { "llc.ul_bytes", "Count sucessful received LLC bytes (encrypt & fcs correct)" }, + { "llc.dl_packets", "Count sucessful sent LLC packets before giving it to the bssgp layer" }, + { "llc.ul_packets", "Count sucessful received LLC packets (encrypt & fcs correct)" }, { "gprs.attach_requested", "Received attach requests" }, { "gprs.attach_accepted", "Sent attach accepts" }, { "gprs.attach_rejected", "Sent attach rejects" },