add chreq:successful_<reason> rate counters
Related: SYS#4878 Change-Id: I32c2c197a6199617a82986480b686c515fa40d62
This commit is contained in:
parent
5dbed8160f
commit
96887554f9
|
@ -27,6 +27,13 @@ enum bts_counter_id {
|
|||
BTS_CTR_CHREQ_ATTEMPTED_OTHER,
|
||||
BTS_CTR_CHREQ_ATTEMPTED_UNKNOWN,
|
||||
BTS_CTR_CHREQ_SUCCESSFUL,
|
||||
BTS_CTR_CHREQ_SUCCESSFUL_EMERG,
|
||||
BTS_CTR_CHREQ_SUCCESSFUL_CALL,
|
||||
BTS_CTR_CHREQ_SUCCESSFUL_LOCATION_UPD,
|
||||
BTS_CTR_CHREQ_SUCCESSFUL_PAG,
|
||||
BTS_CTR_CHREQ_SUCCESSFUL_PDCH,
|
||||
BTS_CTR_CHREQ_SUCCESSFUL_OTHER,
|
||||
BTS_CTR_CHREQ_SUCCESSFUL_UNKNOWN,
|
||||
BTS_CTR_CHREQ_NO_CHANNEL,
|
||||
BTS_CTR_CHREQ_MAX_DELAY_EXCEEDED,
|
||||
BTS_CTR_CHAN_RF_FAIL,
|
||||
|
|
|
@ -617,6 +617,8 @@ enum imm_ass_time {
|
|||
|
||||
struct lchan_activate_info {
|
||||
enum lchan_activate_for activ_for;
|
||||
/* If activ_for == ACTIVATE_FOR_MS_CHANNEL_REQUEST, the original CHREQ reason. */
|
||||
enum gsm_chreq_reason_t chreq_reason;
|
||||
struct gsm_subscriber_connection *for_conn;
|
||||
struct channel_mode_and_rate ch_mode_rate;
|
||||
struct gsm_encr encr;
|
||||
|
|
|
@ -2097,6 +2097,7 @@ void abis_rsl_chan_rqd_queue_poll(struct gsm_bts *bts)
|
|||
gsm_chreq_name(rqd->reason), rqd->ref.ra, rqd->ta);
|
||||
info = (struct lchan_activate_info){
|
||||
.activ_for = ACTIVATE_FOR_MS_CHANNEL_REQUEST,
|
||||
.chreq_reason = rqd->reason,
|
||||
.ch_mode_rate = {
|
||||
.chan_mode = GSM48_CMODE_SIGN,
|
||||
.chan_rate = CH_RATE_SDCCH,
|
||||
|
@ -2112,6 +2113,35 @@ void abis_rsl_chan_rqd_queue_poll(struct gsm_bts *bts)
|
|||
return;
|
||||
}
|
||||
|
||||
static void imm_ass_rate_ctr(struct gsm_lchan *lchan)
|
||||
{
|
||||
struct gsm_bts *bts = lchan->ts->trx->bts;
|
||||
rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CHREQ_SUCCESSFUL));
|
||||
switch (lchan->activate.info.chreq_reason) {
|
||||
case GSM_CHREQ_REASON_EMERG:
|
||||
rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CHREQ_ATTEMPTED_EMERG));
|
||||
break;
|
||||
case GSM_CHREQ_REASON_CALL:
|
||||
rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CHREQ_ATTEMPTED_CALL));
|
||||
break;
|
||||
case GSM_CHREQ_REASON_LOCATION_UPD:
|
||||
rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CHREQ_ATTEMPTED_LOCATION_UPD));
|
||||
break;
|
||||
case GSM_CHREQ_REASON_PAG:
|
||||
rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CHREQ_ATTEMPTED_PAG));
|
||||
break;
|
||||
case GSM_CHREQ_REASON_PDCH:
|
||||
rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CHREQ_ATTEMPTED_PDCH));
|
||||
break;
|
||||
case GSM_CHREQ_REASON_OTHER:
|
||||
rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CHREQ_ATTEMPTED_OTHER));
|
||||
break;
|
||||
default:
|
||||
rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CHREQ_ATTEMPTED_UNKNOWN));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
int rsl_tx_imm_assignment(struct gsm_lchan *lchan)
|
||||
{
|
||||
int rc;
|
||||
|
@ -2156,7 +2186,7 @@ int rsl_tx_imm_assignment(struct gsm_lchan *lchan)
|
|||
rc = rsl_imm_assign_cmd(bts, sizeof(*ia)+ia->mob_alloc_len, (uint8_t *) ia);
|
||||
|
||||
if (!rc)
|
||||
rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CHREQ_SUCCESSFUL));
|
||||
imm_ass_rate_ctr(lchan);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
|
|
@ -849,6 +849,27 @@ const struct rate_ctr_desc bts_ctr_description[] = {
|
|||
[BTS_CTR_CHREQ_SUCCESSFUL] = \
|
||||
{ "chreq:successful",
|
||||
"Successful channel requests (immediate assign sent)" },
|
||||
[BTS_CTR_CHREQ_SUCCESSFUL_EMERG] = \
|
||||
{ "chreq:successful_emerg",
|
||||
"Sent Immediate Assignment for EMERG" },
|
||||
[BTS_CTR_CHREQ_SUCCESSFUL_CALL] = \
|
||||
{ "chreq:successful_call",
|
||||
"Sent Immediate Assignment for CALL" },
|
||||
[BTS_CTR_CHREQ_SUCCESSFUL_LOCATION_UPD] = \
|
||||
{ "chreq:successful_location_upd",
|
||||
"Sent Immediate Assignment for LOCATION_UPD" },
|
||||
[BTS_CTR_CHREQ_SUCCESSFUL_PAG] = \
|
||||
{ "chreq:successful_pag",
|
||||
"Sent Immediate Assignment for PAG" },
|
||||
[BTS_CTR_CHREQ_SUCCESSFUL_PDCH] = \
|
||||
{ "chreq:successful_pdch",
|
||||
"Sent Immediate Assignment for PDCH" },
|
||||
[BTS_CTR_CHREQ_SUCCESSFUL_OTHER] = \
|
||||
{ "chreq:successful_other",
|
||||
"Sent Immediate Assignment for OTHER" },
|
||||
[BTS_CTR_CHREQ_SUCCESSFUL_UNKNOWN] = \
|
||||
{ "chreq:successful_unknown",
|
||||
"Sent Immediate Assignment for UNKNOWN" },
|
||||
[BTS_CTR_CHREQ_NO_CHANNEL] = \
|
||||
{ "chreq:no_channel",
|
||||
"Sent to MS no channel available" },
|
||||
|
|
|
@ -632,6 +632,10 @@ static void lchan_fsm_unused(struct osmo_fsm_inst *fi, uint32_t event, void *dat
|
|||
lchan->release.requested = false;
|
||||
|
||||
lchan->activate.info = *info;
|
||||
/* To avoid confusion, invalidate info.chreq_reason value if it isn't for a CHREQ */
|
||||
if (lchan->activate.info.activ_for != ACTIVATE_FOR_MS_CHANNEL_REQUEST)
|
||||
lchan->activate.info.chreq_reason = -1;
|
||||
|
||||
lchan->activate.concluded = false;
|
||||
lchan_fsm_state_chg(LCHAN_ST_WAIT_TS_READY);
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue