laforge has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-hnbgw/+/36083?usp=email )
Change subject: Various new per-hnb RANAP and RUA counters ......................................................................
Various new per-hnb RANAP and RUA counters
Related: SYS#6773 Change-Id: I61bd4f51ec88fd93d8640d39228ac85f5ac5b69b --- M include/osmocom/hnbgw/hnbgw.h M src/osmo-hnbgw/hnbgw.c M src/osmo-hnbgw/hnbgw_ranap.c M src/osmo-hnbgw/hnbgw_rua.c 4 files changed, 90 insertions(+), 1 deletion(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-hnbgw refs/changes/83/36083/1
diff --git a/include/osmocom/hnbgw/hnbgw.h b/include/osmocom/hnbgw/hnbgw.h index aa2ff47..f0b53f6 100644 --- a/include/osmocom/hnbgw/hnbgw.h +++ b/include/osmocom/hnbgw/hnbgw.h @@ -74,6 +74,28 @@
enum hnb_rate_ctr { HNB_CTR_IUH_ESTABLISHED, + HNB_CTR_RANAP_PS_ERR_IND_UL, + HNB_CTR_RANAP_CS_ERR_IND_UL, + HNB_CTR_RANAP_PS_RESET_REQ_UL, + HNB_CTR_RANAP_CS_RESET_REQ_UL, + + HNB_CTR_RUA_ERR_IND, + + HNB_CTR_RUA_PS_CONNECT_UL, + HNB_CTR_RUA_CS_CONNECT_UL, + + HNB_CTR_RUA_PS_DISCONNECT_UL, + HNB_CTR_RUA_CS_DISCONNECT_UL, + HNB_CTR_RUA_PS_DISCONNECT_DL, + HNB_CTR_RUA_CS_DISCONNECT_DL, + + HNB_CTR_RUA_PS_DT_UL, + HNB_CTR_RUA_CS_DT_UL, + HNB_CTR_RUA_PS_DT_DL, + HNB_CTR_RUA_CS_DT_DL, + + HNB_CTR_RUA_UDT_UL, + HNB_CTR_RUA_UDT_DL, };
enum hnb_stat { diff --git a/src/osmo-hnbgw/hnbgw.c b/src/osmo-hnbgw/hnbgw.c index 91c2930..8bde72c 100644 --- a/src/osmo-hnbgw/hnbgw.c +++ b/src/osmo-hnbgw/hnbgw.c @@ -285,6 +285,47 @@ const struct rate_ctr_desc hnb_ctr_description[] = { [HNB_CTR_IUH_ESTABLISHED] = { "iuh:established", "Number of times Iuh link was established" }, + + [HNB_CTR_RANAP_PS_ERR_IND_UL] = { + "ranap:ps:error_ind:ul", "Received ERROR Indications in Uplink (PS Domain)" }, + [HNB_CTR_RANAP_CS_ERR_IND_UL] = { + "ranap:cs:error_ind:ul", "Received ERROR Indications in Uplink (PS Domain)" }, + + [HNB_CTR_RANAP_PS_RESET_REQ_UL] = { + "ranap:ps:reset_req:ul", "Received RESET Requests in Uplink (PS Domain)" }, + [HNB_CTR_RANAP_CS_RESET_REQ_UL] = { + "ranap:cs:reset_req:ul", "Received RESET Requests in Uplink (CS Domain)" }, + + [HNB_CTR_RUA_ERR_IND] = { + "rua:error_ind", "Received RUA Error Indications" }, + + [HNB_CTR_RUA_PS_CONNECT_UL] = { + "rua:ps:connect:ul", "Received RUA Connect requests (PS Domain)" }, + [HNB_CTR_RUA_CS_CONNECT_UL] = { + "rua:cs:connect:ul", "Received RUA Connect requests (CS Domain)" }, + + [HNB_CTR_RUA_PS_DISCONNECT_UL] = { + "rua:ps:disconnect:ul", "Received RUA Disconnect requests in uplink (PS Domain)" }, + [HNB_CTR_RUA_CS_DISCONNECT_UL] = { + "rua:cs:disconnect:ul", "Received RUA Disconnect requests in uplink (CS Domain)" }, + [HNB_CTR_RUA_PS_DISCONNECT_DL] = { + "rua:ps:disconnect:dl", "Transmitted RUA Disconnect requests in downlink (PS Domain)" }, + [HNB_CTR_RUA_CS_DISCONNECT_DL] = { + "rua:cs:disconnect:dl", "Transmitted RUA Disconnect requests in downlink (CS Domain)" }, + + [HNB_CTR_RUA_PS_DT_UL] = { + "rua:ps:direct_transfer:ul", "Received RUA DirectTransfer in uplink (PS Domain)" }, + [HNB_CTR_RUA_CS_DT_UL] = { + "rua:cs:direct_transfer:ul", "Received RUA DirectTransfer in uplink (CS Domain)" }, + [HNB_CTR_RUA_PS_DT_DL] = { + "rua:ps:direct_transfer:dl", "Transmitted RUA DirectTransfer in downlink (PS Domain)" }, + [HNB_CTR_RUA_CS_DT_DL] = { + "rua:cs:direct_transfer:dl", "Transmitted RUA DirectTransfer in downlink (CS Domain)" }, + + [HNB_CTR_RUA_UDT_UL] = { + "rua:unit_data:ul", "Received RUA UnitData (UDT) in uplink" }, + [HNB_CTR_RUA_UDT_DL] = { + "rua:unit_data:dl", "Transmitted RUA UnitData (UDT) in downlink" }, };
const struct rate_ctr_group_desc hnb_ctrg_desc = { diff --git a/src/osmo-hnbgw/hnbgw_ranap.c b/src/osmo-hnbgw/hnbgw_ranap.c index 73b5018..2977730 100644 --- a/src/osmo-hnbgw/hnbgw_ranap.c +++ b/src/osmo-hnbgw/hnbgw_ranap.c @@ -66,6 +66,7 @@
LOGHNB(hnb, DRANAP, LOGL_INFO, "Rx RESET.req(%s,%s)\n", is_ps ? "ps" : "cs", ranap_cause_str(&ies.cause)); + HNBP_CTR_INC(hnb->persistent, is_ps ? HNB_CTR_RANAP_PS_RESET_REQ_UL : HNB_CTR_RANAP_CS_RESET_REQ_UL);
/* FIXME: Actually we have to wait for some guard time? */ /* FIXME: Reset all resources related to this HNB/RNC */ @@ -78,15 +79,20 @@ { RANAP_ErrorIndicationIEs_t ies; int rc; + bool is_ps = false;
rc = ranap_decode_errorindicationies(&ies, in); if (rc < 0) return rc;
+ if (ies.cN_DomainIndicator == RANAP_CN_DomainIndicator_ps_domain) + is_ps = true; + if (ies.presenceMask & ERRORINDICATIONIES_RANAP_CAUSE_PRESENT) { LOGHNB(hnb, DRANAP, LOGL_ERROR, "Rx ERROR.ind(%s)\n", ranap_cause_str(&ies.cause)); } else LOGHNB(hnb, DRANAP, LOGL_ERROR, "Rx ERROR.ind\n"); + HNBP_CTR_INC(hnb->persistent, is_ps ? HNB_CTR_RANAP_PS_ERR_IND_UL : HNB_CTR_RANAP_CS_ERR_IND_UL);
return 0; } diff --git a/src/osmo-hnbgw/hnbgw_rua.c b/src/osmo-hnbgw/hnbgw_rua.c index 76e3231..f07c186 100644 --- a/src/osmo-hnbgw/hnbgw_rua.c +++ b/src/osmo-hnbgw/hnbgw_rua.c @@ -83,6 +83,7 @@ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RUA_ConnectionlessTransfer, &out);
LOGHNB(hnb, DRUA, LOGL_DEBUG, "transmitting RUA payload of %u bytes\n", msgb_length(msg)); + HNBP_CTR_INC(hnb->persistent, HNB_CTR_RUA_UDT_DL);
return hnbgw_rua_tx(hnb, msg); } @@ -120,6 +121,7 @@
LOGHNB(hnb, DRUA, LOGL_DEBUG, "transmitting RUA DirectTransfer (cn=%s) payload of %u bytes\n", is_ps ? "ps" : "cs", msgb_length(msg)); + HNBP_CTR_INC(hnb->persistent, is_ps ? HNB_CTR_RUA_PS_DT_DL : HNB_CTR_RUA_CS_DT_DL);
return hnbgw_rua_tx(hnb, msg); } @@ -157,9 +159,9 @@ &out); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RUA_Disconnect, &out);
- LOGHNB(hnb, DRUA, LOGL_DEBUG, "transmitting RUA Disconnect (cn=%s) payload of %u bytes\n", is_ps ? "ps" : "cs", msgb_length(msg)); + HNBP_CTR_INC(hnb->persistent, is_ps ? HNB_CTR_RUA_PS_DISCONNECT_DL : HNB_CTR_RUA_CS_DISCONNECT_DL);
return hnbgw_rua_tx(hnb, msg); } @@ -386,6 +388,8 @@ LOGHNB(hnb, DRUA, LOGL_DEBUG, "RUA %s Connect.req(ctx=0x%x, %s)\n", ranap_domain_name(ies.cN_DomainIndicator), context_id, ies.establishment_Cause == RUA_Establishment_Cause_emergency_call ? "emergency" : "normal"); + HNBP_CTR_INC(hnb->persistent, ies.cN_DomainIndicator == DOMAIN_PS ? + HNB_CTR_RUA_PS_CONNECT_UL : HNB_CTR_RUA_CS_CONNECT_UL);
rc = rua_to_scu(hnb, ies.cN_DomainIndicator, RUA_ProcedureCode_id_Connect, context_id, 0, ies.ranaP_Message.buf, @@ -415,6 +419,8 @@
LOGHNB(hnb, DRUA, LOGL_DEBUG, "RUA Disconnect.req(ctx=0x%x,cause=%s)\n", context_id, rua_cause_str(&ies.cause)); + HNBP_CTR_INC(hnb->persistent, ies.cN_DomainIndicator == DOMAIN_PS ? + HNB_CTR_RUA_PS_DISCONNECT_UL : HNB_CTR_RUA_CS_DISCONNECT_UL);
if (ies.presenceMask & DISCONNECTIES_RUA_RANAP_MESSAGE_PRESENT) { ranap_data = ies.ranaP_Message.buf; @@ -444,6 +450,8 @@ context_id = asn1bitstr_to_u24(&ies.context_ID);
LOGHNB(hnb, DRUA, LOGL_DEBUG, "RUA Data.req(ctx=0x%x)\n", context_id); + HNBP_CTR_INC(hnb->persistent, ies.cN_DomainIndicator == DOMAIN_PS ? + HNB_CTR_RUA_PS_DT_UL : HNB_CTR_RUA_CS_DT_UL);
rc = rua_to_scu(hnb, ies.cN_DomainIndicator, @@ -467,6 +475,7 @@ return rc;
LOGHNB(hnb, DRUA, LOGL_DEBUG, "RUA UData.req()\n"); + HNBP_CTR_INC(hnb->persistent, HNB_CTR_RUA_UDT_UL);
/* according tot the spec, we can primarily receive Overload, * Reset, Reset ACK, Error Indication, reset Resource, Reset @@ -493,6 +502,7 @@ return rc;
LOGHNB(hnb, DRUA, LOGL_ERROR, "RUA UData.ErrorInd(%s)\n", rua_cause_str(&ies.cause)); + HNBP_CTR_INC(hnb->persistent, HNB_CTR_RUA_ERR_IND);
rua_free_errorindicationies(&ies); return rc;