From e9a44fdedda15dd181b49fa37b28fb2fae8207af Mon Sep 17 00:00:00 2001 From: Alexander Chemeris Date: Sat, 6 Jun 2020 12:52:34 +0300 Subject: stats: Count transitions from BORKEN state due to LCHAN_EV_TS_ERROR signal. Change-Id: Ice3379020039dc3634aa3887939740729d720dee --- include/osmocom/bsc/bts.h | 1 + src/osmo-bsc/bts.c | 3 +++ src/osmo-bsc/lchan_fsm.c | 7 +++++++ 3 files changed, 11 insertions(+) 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 -- cgit v1.2.3