From b2b47d2c472c85da6eb1fd02c28248c909c5869e Mon Sep 17 00:00:00 2001 From: Daniel Willmann Date: Wed, 21 Jul 2021 14:26:26 +0200 Subject: bts: Clear BTS_STAT_CHAN_*_{TOTAL,USED} on bts disconnect Adds gsm_bts_stats_reset() to clear the stats and calls it from the different models. Change-Id: Ic42687cd73e3546edaa99fb1268a5960ffa43b12 Related: SYS#5541 --- include/osmocom/bsc/bts.h | 2 ++ src/osmo-bsc/bts.c | 20 ++++++++++++++++++++ src/osmo-bsc/bts_ericsson_rbs2000.c | 1 + src/osmo-bsc/bts_ipaccess_nanobts.c | 2 ++ src/osmo-bsc/bts_nokia_site.c | 1 + src/osmo-bsc/bts_siemens_bs11.c | 1 + 6 files changed, 27 insertions(+) diff --git a/include/osmocom/bsc/bts.h b/include/osmocom/bsc/bts.h index 9ec936438..72ef8d974 100644 --- a/include/osmocom/bsc/bts.h +++ b/include/osmocom/bsc/bts.h @@ -704,6 +704,8 @@ int gsm_bts_set_system_infos(struct gsm_bts *bts); int gsm_bts_set_c0_power_red(struct gsm_bts *bts, const uint8_t red); +void gsm_bts_stats_reset(struct gsm_bts *bts); + int gsm_bts_model_register(struct gsm_bts_model *model); struct gsm_bts_model *bts_model_find(enum gsm_bts_type type); diff --git a/src/osmo-bsc/bts.c b/src/osmo-bsc/bts.c index d03f092df..ec29ac80e 100644 --- a/src/osmo-bsc/bts.c +++ b/src/osmo-bsc/bts.c @@ -796,6 +796,26 @@ int gsm_bts_set_c0_power_red(struct gsm_bts *bts, const uint8_t red) return 0; } +void gsm_bts_stats_reset(struct gsm_bts *bts) +{ + osmo_stat_item_set(osmo_stat_item_group_get_item(bts->bts_statg, BTS_STAT_CHAN_CCCH_SDCCH4_USED), 0); + osmo_stat_item_set(osmo_stat_item_group_get_item(bts->bts_statg, BTS_STAT_CHAN_CCCH_SDCCH4_TOTAL), 0); + osmo_stat_item_set(osmo_stat_item_group_get_item(bts->bts_statg, BTS_STAT_CHAN_TCH_F_USED), 0); + osmo_stat_item_set(osmo_stat_item_group_get_item(bts->bts_statg, BTS_STAT_CHAN_TCH_F_TOTAL), 0); + osmo_stat_item_set(osmo_stat_item_group_get_item(bts->bts_statg, BTS_STAT_CHAN_TCH_H_USED), 0); + osmo_stat_item_set(osmo_stat_item_group_get_item(bts->bts_statg, BTS_STAT_CHAN_TCH_H_TOTAL), 0); + osmo_stat_item_set(osmo_stat_item_group_get_item(bts->bts_statg, BTS_STAT_CHAN_SDCCH8_USED), 0); + osmo_stat_item_set(osmo_stat_item_group_get_item(bts->bts_statg, BTS_STAT_CHAN_SDCCH8_TOTAL), 0); + osmo_stat_item_set(osmo_stat_item_group_get_item(bts->bts_statg, BTS_STAT_CHAN_TCH_F_PDCH_USED), 0); + osmo_stat_item_set(osmo_stat_item_group_get_item(bts->bts_statg, BTS_STAT_CHAN_TCH_F_PDCH_TOTAL), 0); + osmo_stat_item_set(osmo_stat_item_group_get_item(bts->bts_statg, BTS_STAT_CHAN_CCCH_SDCCH4_CBCH_USED), 0); + osmo_stat_item_set(osmo_stat_item_group_get_item(bts->bts_statg, BTS_STAT_CHAN_CCCH_SDCCH4_CBCH_TOTAL), 0); + osmo_stat_item_set(osmo_stat_item_group_get_item(bts->bts_statg, BTS_STAT_CHAN_SDCCH8_CBCH_USED), 0); + osmo_stat_item_set(osmo_stat_item_group_get_item(bts->bts_statg, BTS_STAT_CHAN_SDCCH8_CBCH_TOTAL), 0); + osmo_stat_item_set(osmo_stat_item_group_get_item(bts->bts_statg, BTS_STAT_CHAN_OSMO_DYN_USED), 0); + osmo_stat_item_set(osmo_stat_item_group_get_item(bts->bts_statg, BTS_STAT_CHAN_OSMO_DYN_TOTAL), 0); +} + const struct rate_ctr_desc bts_ctr_description[] = { [BTS_CTR_CHREQ_TOTAL] = \ { "chreq:total", diff --git a/src/osmo-bsc/bts_ericsson_rbs2000.c b/src/osmo-bsc/bts_ericsson_rbs2000.c index 7d296576b..b3d79b4b5 100644 --- a/src/osmo-bsc/bts_ericsson_rbs2000.c +++ b/src/osmo-bsc/bts_ericsson_rbs2000.c @@ -52,6 +52,7 @@ static void bootstrap_om_trx(struct gsm_bts_trx *trx) static int shutdown_om(struct gsm_bts *bts) { gsm_bts_all_ts_dispatch(bts, TS_EV_OML_DOWN, NULL); + gsm_bts_stats_reset(bts); /* FIXME */ return 0; diff --git a/src/osmo-bsc/bts_ipaccess_nanobts.c b/src/osmo-bsc/bts_ipaccess_nanobts.c index 26e219604..27f6aeee5 100644 --- a/src/osmo-bsc/bts_ipaccess_nanobts.c +++ b/src/osmo-bsc/bts_ipaccess_nanobts.c @@ -32,6 +32,7 @@ #include #include #include +#include #include #include #include @@ -557,6 +558,7 @@ void ipaccess_drop_oml(struct gsm_bts *bts, const char *reason) bts->oml_link = NULL; bts->uptime = 0; osmo_stat_item_dec(osmo_stat_item_group_get_item(bts->bts_statg, BTS_STAT_OML_CONNECTED), 1); + gsm_bts_stats_reset(bts); /* Also drop the associated OSMO link */ e1inp_sign_link_destroy(bts->osmo_link); diff --git a/src/osmo-bsc/bts_nokia_site.c b/src/osmo-bsc/bts_nokia_site.c index 3820eaddf..75ffa95e4 100644 --- a/src/osmo-bsc/bts_nokia_site.c +++ b/src/osmo-bsc/bts_nokia_site.c @@ -80,6 +80,7 @@ static void bootstrap_om_trx(struct gsm_bts_trx *trx) static int shutdown_om(struct gsm_bts *bts) { + gsm_bts_stats_reset(bts); /* TODO !? */ return 0; } diff --git a/src/osmo-bsc/bts_siemens_bs11.c b/src/osmo-bsc/bts_siemens_bs11.c index 0d71ce2f4..818d84a40 100644 --- a/src/osmo-bsc/bts_siemens_bs11.c +++ b/src/osmo-bsc/bts_siemens_bs11.c @@ -552,6 +552,7 @@ static int shutdown_om(struct gsm_bts *bts) /* Reset BTS Site manager resource */ abis_nm_bs11_reset_resource(bts); + gsm_bts_stats_reset(bts); gsm_bts_all_ts_dispatch(bts, TS_EV_OML_DOWN, NULL); return 0; -- cgit v1.2.3