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" },