aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Iedema <michael@kapsulate.com>2021-02-17 12:04:29 +0000
committerMichael Iedema <michael@kapsulate.com>2021-02-17 15:13:25 +0000
commit456a962c7ece8537bedcd62e72c00a0d532ef826 (patch)
tree54483a925460cb14bfe876d8e7c4f11b2ef35f73
parent0cfed38f07b4eb1bb17463b02d78917270ee8410 (diff)
stats: add SIGN/SPEECH assignment subcategories
-rw-r--r--include/osmocom/bsc/bts.h12
-rw-r--r--src/osmo-bsc/assignment_fsm.c17
-rw-r--r--src/osmo-bsc/bts.c36
3 files changed, 64 insertions, 1 deletions
diff --git a/include/osmocom/bsc/bts.h b/include/osmocom/bsc/bts.h
index 9a226f54c..6b58c7ee7 100644
--- a/include/osmocom/bsc/bts.h
+++ b/include/osmocom/bsc/bts.h
@@ -76,14 +76,26 @@ enum bts_counter_id {
BTS_CTR_TS_BORKEN_EV_PDCH_DEACT_ACK_NACK,
BTS_CTR_TS_BORKEN_EV_TEARDOWN,
BTS_CTR_ASSIGNMENT_ATTEMPTED,
+ BTS_CTR_ASSIGNMENT_ATTEMPTED_SIGN,
+ BTS_CTR_ASSIGNMENT_ATTEMPTED_SPEECH,
BTS_CTR_ASSIGNMENT_COMPLETED,
+ BTS_CTR_ASSIGNMENT_COMPLETED_SIGN,
+ BTS_CTR_ASSIGNMENT_COMPLETED_SPEECH,
BTS_CTR_ASSIGNMENT_STOPPED,
+ BTS_CTR_ASSIGNMENT_STOPPED_SIGN,
+ BTS_CTR_ASSIGNMENT_STOPPED_SPEECH,
BTS_CTR_ASSIGNMENT_NO_CHANNEL,
BTS_CTR_ASSIGNMENT_NO_CHANNEL_SIGN,
BTS_CTR_ASSIGNMENT_NO_CHANNEL_SPEECH,
BTS_CTR_ASSIGNMENT_TIMEOUT,
+ BTS_CTR_ASSIGNMENT_TIMEOUT_SIGN,
+ BTS_CTR_ASSIGNMENT_TIMEOUT_SPEECH,
BTS_CTR_ASSIGNMENT_FAILED,
+ BTS_CTR_ASSIGNMENT_FAILED_SIGN,
+ BTS_CTR_ASSIGNMENT_FAILED_SPEECH,
BTS_CTR_ASSIGNMENT_ERROR,
+ BTS_CTR_ASSIGNMENT_ERROR_SIGN,
+ BTS_CTR_ASSIGNMENT_ERROR_SPEECH,
BTS_CTR_LOCATION_UPDATE_ACCEPT,
BTS_CTR_LOCATION_UPDATE_REJECT,
BTS_CTR_LOCATION_UPDATE_DETACH,
diff --git a/src/osmo-bsc/assignment_fsm.c b/src/osmo-bsc/assignment_fsm.c
index 39219a41e..2f241e3c3 100644
--- a/src/osmo-bsc/assignment_fsm.c
+++ b/src/osmo-bsc/assignment_fsm.c
@@ -82,8 +82,23 @@ static const struct osmo_tdef_state_timeout assignment_fsm_timeouts[32] = {
bsc_ctr_description[BSC_##counter].name, \
bsc_ctr_description[BSC_##counter].description); \
rate_ctr_inc(&conn->network->bsc_ctrs->ctr[BSC_##counter]); \
- if (bts) \
+ if (bts) { \
rate_ctr_inc(&bts->bts_ctrs->ctr[BTS_##counter]); \
+ if (BTS_##counter != BTS_CTR_ASSIGNMENT_NO_CHANNEL) { \
+ switch (conn->lchan->ch_mode_rate.chan_mode) { \
+ case GSM48_CMODE_SIGN: \
+ rate_ctr_inc(&bts->bts_ctrs->ctr[BTS_##counter##_SIGN]); \
+ break; \
+ case GSM48_CMODE_SPEECH_V1: \
+ case GSM48_CMODE_SPEECH_EFR: \
+ case GSM48_CMODE_SPEECH_AMR: \
+ rate_ctr_inc(&bts->bts_ctrs->ctr[BTS_##counter##_SPEECH]); \
+ break; \
+ default: \
+ break; \
+ } \
+ } \
+ } \
} while(0)
#define assignment_count_result(counter) do { \
diff --git a/src/osmo-bsc/bts.c b/src/osmo-bsc/bts.c
index 628d301e8..548d72484 100644
--- a/src/osmo-bsc/bts.c
+++ b/src/osmo-bsc/bts.c
@@ -938,12 +938,30 @@ const struct rate_ctr_desc bts_ctr_description[] = {
[BTS_CTR_ASSIGNMENT_ATTEMPTED] = \
{ "assignment:attempted",
"Assignment attempts" },
+ [BTS_CTR_ASSIGNMENT_ATTEMPTED_SIGN] = \
+ { "assignment:attempted_sign",
+ "Assignment of signaling lchan attempts" },
+ [BTS_CTR_ASSIGNMENT_ATTEMPTED_SPEECH] = \
+ { "assignment:attempted_speech",
+ "Assignment of speech lchan attempts" },
[BTS_CTR_ASSIGNMENT_COMPLETED] = \
{ "assignment:completed",
"Assignment completed" },
+ [BTS_CTR_ASSIGNMENT_COMPLETED_SIGN] = \
+ { "assignment:completed_sign",
+ "Assignment of signaling lchan completed" },
+ [BTS_CTR_ASSIGNMENT_COMPLETED_SPEECH] = \
+ { "assignment:completed_speech",
+ "Assignment if speech lchan completed" },
[BTS_CTR_ASSIGNMENT_STOPPED] = \
{ "assignment:stopped",
"Connection ended during Assignment" },
+ [BTS_CTR_ASSIGNMENT_STOPPED_SIGN] = \
+ { "assignment:stopped_sign",
+ "Connection ended during signaling lchan Assignment" },
+ [BTS_CTR_ASSIGNMENT_STOPPED_SPEECH] = \
+ { "assignment:stopped_speech",
+ "Connection ended during speech lchan Assignment" },
[BTS_CTR_ASSIGNMENT_NO_CHANNEL] = \
{ "assignment:no_channel",
"Failure to allocate lchan for Assignment" },
@@ -956,12 +974,30 @@ const struct rate_ctr_desc bts_ctr_description[] = {
[BTS_CTR_ASSIGNMENT_TIMEOUT] = \
{ "assignment:timeout",
"Assignment timed out" },
+ [BTS_CTR_ASSIGNMENT_TIMEOUT_SIGN] = \
+ { "assignment:timeout_sign",
+ "Assignment of signaling lchan timed out" },
+ [BTS_CTR_ASSIGNMENT_TIMEOUT_SPEECH] = \
+ { "assignment:timeout_speech",
+ "Assignment of speech lchan timed out" },
[BTS_CTR_ASSIGNMENT_FAILED] = \
{ "assignment:failed",
"Received Assignment Failure message" },
+ [BTS_CTR_ASSIGNMENT_FAILED_SIGN] = \
+ { "assignment:failed_sign",
+ "Received Assignment Failure message on signaling lchan" },
+ [BTS_CTR_ASSIGNMENT_FAILED_SPEECH] = \
+ { "assignment:failed_speech",
+ "Received Assignment Failure message on speech lchan" },
[BTS_CTR_ASSIGNMENT_ERROR] = \
{ "assignment:error",
"Assignment failed for other reason" },
+ [BTS_CTR_ASSIGNMENT_ERROR_SIGN] = \
+ { "assignment:error_sign",
+ "Assignment of signaling lchan failed for other reason" },
+ [BTS_CTR_ASSIGNMENT_ERROR_SPEECH] = \
+ { "assignment:error_speech",
+ "Assignment of speech lchan failed for other reason" },
[BTS_CTR_LOCATION_UPDATE_ACCEPT] = \
{ "location_update:accept",
"Location Update Accept" },