Add a new counter "rsl:ipa_nack" to count number of IPA related NACKs
Those NACKs (CRCX/MDCX/PDCH_ACT) shouldn't happen in production, and if they do, you probably want to have a more persistent figure than a line in the log file about it. Having counters allows the user to monitor this efficiently. Change-Id: I5edf979c9a2b4c9a5a60eef9f66c26da54f2bddf
This commit is contained in:
parent
62d9cb0529
commit
581398afab
|
@ -204,6 +204,7 @@ enum {
|
||||||
BTS_CTR_CHAN_ACT_TOTAL,
|
BTS_CTR_CHAN_ACT_TOTAL,
|
||||||
BTS_CTR_CHAN_ACT_NACK,
|
BTS_CTR_CHAN_ACT_NACK,
|
||||||
BTS_CTR_RSL_UNKNOWN,
|
BTS_CTR_RSL_UNKNOWN,
|
||||||
|
BTS_CTR_RSL_IPA_NACK,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct rate_ctr_desc bts_ctr_description[] = {
|
static const struct rate_ctr_desc bts_ctr_description[] = {
|
||||||
|
@ -226,6 +227,7 @@ static const struct rate_ctr_desc bts_ctr_description[] = {
|
||||||
[BTS_CTR_CHAN_ACT_TOTAL] = {"chan_act:total", "Total number of Channel Activations."},
|
[BTS_CTR_CHAN_ACT_TOTAL] = {"chan_act:total", "Total number of Channel Activations."},
|
||||||
[BTS_CTR_CHAN_ACT_NACK] = {"chan_act:nack", "Number of Channel Activations that the BTS NACKed"},
|
[BTS_CTR_CHAN_ACT_NACK] = {"chan_act:nack", "Number of Channel Activations that the BTS NACKed"},
|
||||||
[BTS_CTR_RSL_UNKNOWN] = {"rsl:unknown", "Number of unknown/unsupported RSL messages received from BTS"},
|
[BTS_CTR_RSL_UNKNOWN] = {"rsl:unknown", "Number of unknown/unsupported RSL messages received from BTS"},
|
||||||
|
[BTS_CTR_RSL_IPA_NACK] = {"rsl:ipa_nack", "Number of IPA (RTP/dyn-PDCH) related NACKs received from BTS"},
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct rate_ctr_group_desc bts_ctrg_desc = {
|
static const struct rate_ctr_group_desc bts_ctrg_desc = {
|
||||||
|
|
|
@ -1649,6 +1649,7 @@ static int abis_rsl_rx_dchan(struct msgb *msg)
|
||||||
break;
|
break;
|
||||||
case RSL_MT_IPAC_PDCH_ACT_NACK:
|
case RSL_MT_IPAC_PDCH_ACT_NACK:
|
||||||
LOGP(DRSL, LOGL_ERROR, "%s IPAC PDCH ACT NACK\n", ts_name);
|
LOGP(DRSL, LOGL_ERROR, "%s IPAC PDCH ACT NACK\n", ts_name);
|
||||||
|
rate_ctr_inc(&sign_link->trx->bts->bts_ctrs->ctr[BTS_CTR_RSL_IPA_NACK]);
|
||||||
break;
|
break;
|
||||||
case RSL_MT_IPAC_PDCH_DEACT_ACK:
|
case RSL_MT_IPAC_PDCH_DEACT_ACK:
|
||||||
DEBUGP(DRSL, "%s IPAC PDCH DEACT ACK\n", ts_name);
|
DEBUGP(DRSL, "%s IPAC PDCH DEACT ACK\n", ts_name);
|
||||||
|
@ -1656,6 +1657,7 @@ static int abis_rsl_rx_dchan(struct msgb *msg)
|
||||||
break;
|
break;
|
||||||
case RSL_MT_IPAC_PDCH_DEACT_NACK:
|
case RSL_MT_IPAC_PDCH_DEACT_NACK:
|
||||||
LOGP(DRSL, LOGL_ERROR, "%s IPAC PDCH DEACT NACK\n", ts_name);
|
LOGP(DRSL, LOGL_ERROR, "%s IPAC PDCH DEACT NACK\n", ts_name);
|
||||||
|
rate_ctr_inc(&sign_link->trx->bts->bts_ctrs->ctr[BTS_CTR_RSL_IPA_NACK]);
|
||||||
break;
|
break;
|
||||||
case RSL_MT_PHY_CONTEXT_CONF:
|
case RSL_MT_PHY_CONTEXT_CONF:
|
||||||
case RSL_MT_PREPROC_MEAS_RES:
|
case RSL_MT_PREPROC_MEAS_RES:
|
||||||
|
@ -2551,6 +2553,7 @@ static int abis_rsl_rx_ipacc(struct msgb *msg)
|
||||||
/* somehow the BTS was unable to bind the lchan to its local
|
/* somehow the BTS was unable to bind the lchan to its local
|
||||||
* port?!? */
|
* port?!? */
|
||||||
LOGP(DRSL, LOGL_ERROR, "%s IPAC_CRCX_NACK\n", ts_name);
|
LOGP(DRSL, LOGL_ERROR, "%s IPAC_CRCX_NACK\n", ts_name);
|
||||||
|
rate_ctr_inc(&sign_link->trx->bts->bts_ctrs->ctr[BTS_CTR_RSL_IPA_NACK]);
|
||||||
break;
|
break;
|
||||||
case RSL_MT_IPAC_MDCX_ACK:
|
case RSL_MT_IPAC_MDCX_ACK:
|
||||||
/* the BTS tells us that a connect operation was successful */
|
/* the BTS tells us that a connect operation was successful */
|
||||||
|
@ -2561,6 +2564,7 @@ static int abis_rsl_rx_ipacc(struct msgb *msg)
|
||||||
/* somehow the BTS was unable to connect the lchan to a remote
|
/* somehow the BTS was unable to connect the lchan to a remote
|
||||||
* port */
|
* port */
|
||||||
LOGP(DRSL, LOGL_ERROR, "%s IPAC_MDCX_NACK\n", ts_name);
|
LOGP(DRSL, LOGL_ERROR, "%s IPAC_MDCX_NACK\n", ts_name);
|
||||||
|
rate_ctr_inc(&sign_link->trx->bts->bts_ctrs->ctr[BTS_CTR_RSL_IPA_NACK]);
|
||||||
break;
|
break;
|
||||||
case RSL_MT_IPAC_DLCX_IND:
|
case RSL_MT_IPAC_DLCX_IND:
|
||||||
DEBUGP(DRSL, "%s IPAC_DLCX_IND ", ts_name);
|
DEBUGP(DRSL, "%s IPAC_DLCX_IND ", ts_name);
|
||||||
|
|
Loading…
Reference in New Issue