diff options
author | Alexander Chemeris <Alexander.Chemeris@gmail.com> | 2020-06-06 12:52:34 +0300 |
---|---|---|
committer | keith <keith@rhizomatica.org> | 2021-04-12 17:56:55 +0000 |
commit | e9a44fdedda15dd181b49fa37b28fb2fae8207af (patch) | |
tree | 50da11a1e8a14c8a9ad23e822a4300fbaedd9e6c | |
parent | cd622e0f5f6daf2a9111d149ebfb85da3d84e472 (diff) |
stats: Count transitions from BORKEN state due to LCHAN_EV_TS_ERROR signal.
Change-Id: Ice3379020039dc3634aa3887939740729d720dee
-rw-r--r-- | include/osmocom/bsc/bts.h | 1 | ||||
-rw-r--r-- | src/osmo-bsc/bts.c | 3 | ||||
-rw-r--r-- | src/osmo-bsc/lchan_fsm.c | 7 |
3 files changed, 11 insertions, 0 deletions
diff --git a/include/osmocom/bsc/bts.h b/include/osmocom/bsc/bts.h index c03c75ed6..d88357089 100644 --- a/include/osmocom/bsc/bts.h +++ b/include/osmocom/bsc/bts.h @@ -64,6 +64,7 @@ enum bts_counter_id { BTS_CTR_LCHAN_BORKEN_EV_RF_CHAN_REL_ACK, BTS_CTR_LCHAN_BORKEN_EV_VTY, BTS_CTR_LCHAN_BORKEN_EV_TEARDOWN, + BTS_CTR_LCHAN_BORKEN_EV_TS_ERROR, BTS_CTR_LCHAN_BORKEN_FROM_WAIT_RR_CHAN_MODE_MODIFY_ACK, BTS_CTR_LCHAN_BORKEN_FROM_WAIT_RSL_CHAN_MODE_MODIFY_ACK, BTS_CTR_TS_BORKEN_FROM_NOT_INITIALIZED, diff --git a/src/osmo-bsc/bts.c b/src/osmo-bsc/bts.c index b5b7136cc..7abc1265f 100644 --- a/src/osmo-bsc/bts.c +++ b/src/osmo-bsc/bts.c @@ -885,6 +885,9 @@ const struct rate_ctr_desc bts_ctr_description[] = { [BTS_CTR_LCHAN_BORKEN_EV_TEARDOWN] = \ { "lchan_borken:event:teardown", "lchan in a BORKEN state is shutting down (BTS disconnected?)" }, + [BTS_CTR_LCHAN_BORKEN_EV_TS_ERROR] = \ + { "lchan_borken:event:ts_error", + "LCHAN_EV_TS_ERROR received in a BORKEN state" }, [BTS_CTR_TS_BORKEN_FROM_NOT_INITIALIZED] = \ { "ts_borken:from_state:not_initialized", "Transitions from TS NOT_INITIALIZED state to BORKEN state" }, diff --git a/src/osmo-bsc/lchan_fsm.c b/src/osmo-bsc/lchan_fsm.c index 6f0fd63da..ffcf2b13f 100644 --- a/src/osmo-bsc/lchan_fsm.c +++ b/src/osmo-bsc/lchan_fsm.c @@ -1537,8 +1537,15 @@ static void lchan_fsm_allstate_action(struct osmo_fsm_inst *fi, uint32_t event, switch (event) { case LCHAN_EV_TS_ERROR: + { + struct gsm_lchan *lchan = lchan_fi_lchan(fi); + if (fi->state == LCHAN_ST_BORKEN) { + rate_ctr_inc(&lchan->ts->trx->bts->bts_ctrs->ctr[BTS_CTR_LCHAN_BORKEN_EV_TS_ERROR]); + osmo_stat_item_dec(lchan->ts->trx->bts->bts_statg->items[BTS_STAT_LCHAN_BORKEN], 1); + } lchan_fail_to(LCHAN_ST_UNUSED, "LCHAN_EV_TS_ERROR"); return; + } case LCHAN_EV_RLL_ERR_IND: /* let's just ignore this. We are already logging the |