This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
neels gerrit-no-reply at lists.osmocom.orgneels has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-bsc/+/26142 ) Change subject: implement bts.N.cm_serv_rej:<cause> rate counters ...................................................................... implement bts.N.cm_serv_rej:<cause> rate counters Related: I0214b27da18af87eca9715ebf7eeeff945e3e12a (osmo-ttcn3-hacks) Related: SYS#4878 Change-Id: I79b1261e5a281d9797eaaf9c27d90edd8e27c78b --- M include/osmocom/bsc/bts.h M src/osmo-bsc/abis_rsl.c M src/osmo-bsc/bts.c 3 files changed, 202 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/42/26142/1 diff --git a/include/osmocom/bsc/bts.h b/include/osmocom/bsc/bts.h index 7e73acd..8e168ec 100644 --- a/include/osmocom/bsc/bts.h +++ b/include/osmocom/bsc/bts.h @@ -158,6 +158,31 @@ BTS_CTR_SRVCC_TIMEOUT, BTS_CTR_SRVCC_FAILED, BTS_CTR_SRVCC_ERROR, + BTS_CTR_CM_SERVICE_REJECT, + BTS_CTR_CM_SERV_REJ_IMSI_UNKNOWN_IN_HLR, + BTS_CTR_CM_SERV_REJ_ILLEGAL_MS, + BTS_CTR_CM_SERV_REJ_IMSI_UNKNOWN_IN_VLR, + BTS_CTR_CM_SERV_REJ_IMEI_NOT_ACCEPTED, + BTS_CTR_CM_SERV_REJ_ILLEGAL_ME, + BTS_CTR_CM_SERV_REJ_PLMN_NOT_ALLOWED, + BTS_CTR_CM_SERV_REJ_LOC_NOT_ALLOWED, + BTS_CTR_CM_SERV_REJ_ROAMING_NOT_ALLOWED, + BTS_CTR_CM_SERV_REJ_NETWORK_FAILURE, + BTS_CTR_CM_SERV_REJ_SYNCH_FAILURE, + BTS_CTR_CM_SERV_REJ_CONGESTION, + BTS_CTR_CM_SERV_REJ_SRV_OPT_NOT_SUPPORTED, + BTS_CTR_CM_SERV_REJ_RQD_SRV_OPT_NOT_SUPPORTED, + BTS_CTR_CM_SERV_REJ_SRV_OPT_TMP_OUT_OF_ORDER, + BTS_CTR_CM_SERV_REJ_CALL_CAN_NOT_BE_IDENTIFIED, + BTS_CTR_CM_SERV_REJ_INCORRECT_MESSAGE, + BTS_CTR_CM_SERV_REJ_INVALID_MANDANTORY_INF, + BTS_CTR_CM_SERV_REJ_MSG_TYPE_NOT_IMPLEMENTED, + BTS_CTR_CM_SERV_REJ_MSG_TYPE_NOT_COMPATIBLE, + BTS_CTR_CM_SERV_REJ_INF_ELEME_NOT_IMPLEMENTED, + BTS_CTR_CM_SERV_REJ_CONDTIONAL_IE_ERROR, + BTS_CTR_CM_SERV_REJ_MSG_NOT_COMPATIBLE, + BTS_CTR_CM_SERV_REJ_PROTOCOL_ERROR, + BTS_CTR_CM_SERV_REJ_RETRY_IN_NEW_CELL, }; extern const struct rate_ctr_desc bts_ctr_description[]; diff --git a/src/osmo-bsc/abis_rsl.c b/src/osmo-bsc/abis_rsl.c index cdd57c2..b6f11a9 100644 --- a/src/osmo-bsc/abis_rsl.c +++ b/src/osmo-bsc/abis_rsl.c @@ -1021,6 +1021,106 @@ } +/* For 3GPP TS 52.402 unsuccReqsForService, we need to decode the DTAP and count CM Service Reject messages. */ +static void count_unsucc_reqs_for_service(struct msgb *msg) +{ + struct gsm_bts *bts = msg->lchan->ts->trx->bts; + struct gsm48_hdr *gh; + uint8_t pdisc, mtype; + uint8_t cause; + + if (msgb_l3len(msg) < sizeof(*gh)) + return; + + gh = msgb_l3(msg); + pdisc = gsm48_hdr_pdisc(gh); + mtype = gsm48_hdr_msg_type(gh); + + if (pdisc != GSM48_PDISC_MM || mtype != GSM48_MT_MM_CM_SERV_REJ) + return; + + rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERVICE_REJECT)); + + cause = gh->data[0]; + switch (cause) { + case GSM48_REJECT_IMSI_UNKNOWN_IN_HLR: + rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_IMSI_UNKNOWN_IN_HLR)); + break; + case GSM48_REJECT_ILLEGAL_MS: + rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_ILLEGAL_MS)); + break; + case GSM48_REJECT_IMSI_UNKNOWN_IN_VLR: + rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_IMSI_UNKNOWN_IN_VLR)); + break; + case GSM48_REJECT_IMEI_NOT_ACCEPTED: + rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_IMEI_NOT_ACCEPTED)); + break; + case GSM48_REJECT_ILLEGAL_ME: + rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_ILLEGAL_ME)); + break; + case GSM48_REJECT_PLMN_NOT_ALLOWED: + rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_PLMN_NOT_ALLOWED)); + break; + case GSM48_REJECT_LOC_NOT_ALLOWED: + rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_LOC_NOT_ALLOWED)); + break; + case GSM48_REJECT_ROAMING_NOT_ALLOWED: + rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_ROAMING_NOT_ALLOWED)); + break; + case GSM48_REJECT_NETWORK_FAILURE: + rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_NETWORK_FAILURE)); + break; + case GSM48_REJECT_SYNCH_FAILURE: + rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_SYNCH_FAILURE)); + break; + case GSM48_REJECT_CONGESTION: + rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_CONGESTION)); + break; + case GSM48_REJECT_SRV_OPT_NOT_SUPPORTED: + rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_SRV_OPT_NOT_SUPPORTED)); + break; + case GSM48_REJECT_RQD_SRV_OPT_NOT_SUPPORTED: + rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_RQD_SRV_OPT_NOT_SUPPORTED)); + break; + case GSM48_REJECT_SRV_OPT_TMP_OUT_OF_ORDER: + rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_SRV_OPT_TMP_OUT_OF_ORDER)); + break; + case GSM48_REJECT_CALL_CAN_NOT_BE_IDENTIFIED: + rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_CALL_CAN_NOT_BE_IDENTIFIED)); + break; + case GSM48_REJECT_INCORRECT_MESSAGE: + rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_INCORRECT_MESSAGE)); + break; + case GSM48_REJECT_INVALID_MANDANTORY_INF: + rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_INVALID_MANDANTORY_INF)); + break; + case GSM48_REJECT_MSG_TYPE_NOT_IMPLEMENTED: + rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_MSG_TYPE_NOT_IMPLEMENTED)); + break; + case GSM48_REJECT_MSG_TYPE_NOT_COMPATIBLE: + rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_MSG_TYPE_NOT_COMPATIBLE)); + break; + case GSM48_REJECT_INF_ELEME_NOT_IMPLEMENTED: + rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_INF_ELEME_NOT_IMPLEMENTED)); + break; + case GSM48_REJECT_CONDTIONAL_IE_ERROR: + rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_CONDTIONAL_IE_ERROR)); + break; + case GSM48_REJECT_MSG_NOT_COMPATIBLE: + rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_MSG_NOT_COMPATIBLE)); + break; + default: + if (cause >= 48 && cause <= 63) { + rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_RETRY_IN_NEW_CELL)); + break; + } + /* else fall thru */ + case GSM48_REJECT_PROTOCOL_ERROR: + rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_PROTOCOL_ERROR)); + break; + } +} + /* Send "DATA REQUEST" message with given L3 Info payload */ /* Chapter 8.3.1 */ int rsl_data_request(struct msgb *msg, uint8_t link_id) @@ -1033,6 +1133,8 @@ return -EINVAL; } + count_unsucc_reqs_for_service(msg); + chan_nr = gsm_lchan2chan_nr(msg->lchan, true); if (chan_nr < 0) { msgb_free(msg); diff --git a/src/osmo-bsc/bts.c b/src/osmo-bsc/bts.c index 83adcc4..d13f3b7 100644 --- a/src/osmo-bsc/bts.c +++ b/src/osmo-bsc/bts.c @@ -1249,6 +1249,81 @@ [BTS_CTR_SRVCC_ERROR] = \ { "srvcc:error", "Re-assignment failed for other reason" }, + + [BTS_CTR_CM_SERVICE_REJECT] = + { "cm_serv_rej", "MSC sent CM Service Reject" }, + [BTS_CTR_CM_SERV_REJ_IMSI_UNKNOWN_IN_HLR] = + { "cm_serv_rej:imsi_unknown_in_hlr", + "MSC sent CM Service Reject with cause IMSI_UNKNOWN_IN_HLR" }, + [BTS_CTR_CM_SERV_REJ_ILLEGAL_MS] = + { "cm_serv_rej:illegal_ms", + "MSC sent CM Service Reject with cause ILLEGAL_MS" }, + [BTS_CTR_CM_SERV_REJ_IMSI_UNKNOWN_IN_VLR] = + { "cm_serv_rej:imsi_unknown_in_vlr", + "MSC sent CM Service Reject with cause IMSI_UNKNOWN_IN_VLR" }, + [BTS_CTR_CM_SERV_REJ_IMEI_NOT_ACCEPTED] = + { "cm_serv_rej:imei_not_accepted", + "MSC sent CM Service Reject with cause IMEI_NOT_ACCEPTED" }, + [BTS_CTR_CM_SERV_REJ_ILLEGAL_ME] = + { "cm_serv_rej:illegal_me", + "MSC sent CM Service Reject with cause ILLEGAL_ME" }, + [BTS_CTR_CM_SERV_REJ_PLMN_NOT_ALLOWED] = + { "cm_serv_rej:plmn_not_allowed", + "MSC sent CM Service Reject with cause PLMN_NOT_ALLOWED" }, + [BTS_CTR_CM_SERV_REJ_LOC_NOT_ALLOWED] = + { "cm_serv_rej:loc_not_allowed", + "MSC sent CM Service Reject with cause LOC_NOT_ALLOWED" }, + [BTS_CTR_CM_SERV_REJ_ROAMING_NOT_ALLOWED] = + { "cm_serv_rej:roaming_not_allowed", + "MSC sent CM Service Reject with cause ROAMING_NOT_ALLOWED" }, + [BTS_CTR_CM_SERV_REJ_NETWORK_FAILURE] = + { "cm_serv_rej:network_failure", + "MSC sent CM Service Reject with cause NETWORK_FAILURE" }, + [BTS_CTR_CM_SERV_REJ_SYNCH_FAILURE] = + { "cm_serv_rej:synch_failure", + "MSC sent CM Service Reject with cause SYNCH_FAILURE" }, + [BTS_CTR_CM_SERV_REJ_CONGESTION] = + { "cm_serv_rej:congestion", + "MSC sent CM Service Reject with cause CONGESTION" }, + [BTS_CTR_CM_SERV_REJ_SRV_OPT_NOT_SUPPORTED] = + { "cm_serv_rej:srv_opt_not_supported", + "MSC sent CM Service Reject with cause SRV_OPT_NOT_SUPPORTED" }, + [BTS_CTR_CM_SERV_REJ_RQD_SRV_OPT_NOT_SUPPORTED] = + { "cm_serv_rej:rqd_srv_opt_not_supported", + "MSC sent CM Service Reject with cause RQD_SRV_OPT_NOT_SUPPORTED" }, + [BTS_CTR_CM_SERV_REJ_SRV_OPT_TMP_OUT_OF_ORDER] = + { "cm_serv_rej:srv_opt_tmp_out_of_order", + "MSC sent CM Service Reject with cause SRV_OPT_TMP_OUT_OF_ORDER" }, + [BTS_CTR_CM_SERV_REJ_CALL_CAN_NOT_BE_IDENTIFIED] = + { "cm_serv_rej:call_can_not_be_identified", + "MSC sent CM Service Reject with cause CALL_CAN_NOT_BE_IDENTIFIED" }, + [BTS_CTR_CM_SERV_REJ_INCORRECT_MESSAGE] = + { "cm_serv_rej:incorrect_message", + "MSC sent CM Service Reject with cause INCORRECT_MESSAGE" }, + [BTS_CTR_CM_SERV_REJ_INVALID_MANDANTORY_INF] = + { "cm_serv_rej:invalid_mandantory_inf", + "MSC sent CM Service Reject with cause INVALID_MANDANTORY_INF" }, + [BTS_CTR_CM_SERV_REJ_MSG_TYPE_NOT_IMPLEMENTED] = + { "cm_serv_rej:msg_type_not_implemented", + "MSC sent CM Service Reject with cause MSG_TYPE_NOT_IMPLEMENTED" }, + [BTS_CTR_CM_SERV_REJ_MSG_TYPE_NOT_COMPATIBLE] = + { "cm_serv_rej:msg_type_not_compatible", + "MSC sent CM Service Reject with cause MSG_TYPE_NOT_COMPATIBLE" }, + [BTS_CTR_CM_SERV_REJ_INF_ELEME_NOT_IMPLEMENTED] = + { "cm_serv_rej:inf_eleme_not_implemented", + "MSC sent CM Service Reject with cause INF_ELEME_NOT_IMPLEMENTED" }, + [BTS_CTR_CM_SERV_REJ_CONDTIONAL_IE_ERROR] = + { "cm_serv_rej:condtional_ie_error", + "MSC sent CM Service Reject with cause CONDTIONAL_IE_ERROR" }, + [BTS_CTR_CM_SERV_REJ_MSG_NOT_COMPATIBLE] = + { "cm_serv_rej:msg_not_compatible", + "MSC sent CM Service Reject with cause MSG_NOT_COMPATIBLE" }, + [BTS_CTR_CM_SERV_REJ_PROTOCOL_ERROR] = + { "cm_serv_rej:protocol_error", + "MSC sent CM Service Reject with cause PROTOCOL_ERROR" }, + [BTS_CTR_CM_SERV_REJ_RETRY_IN_NEW_CELL] = + { "cm_serv_rej:retry_in_new_cell", + "MSC sent CM Service Reject with cause 00110000..00111111, Retry upon entry in a new cell" }, }; const struct rate_ctr_group_desc bts_ctrg_desc = { -- To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/26142 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Change-Id: I79b1261e5a281d9797eaaf9c27d90edd8e27c78b Gerrit-Change-Number: 26142 Gerrit-PatchSet: 1 Gerrit-Owner: neels <nhofmeyr at sysmocom.de> Gerrit-MessageType: newchange -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20211107/f7cc2d1d/attachment.htm>