From 158776411b13cdda080dd3b72296fb97a0141d64 Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Sun, 27 Oct 2013 09:50:15 +0100 Subject: bts: Provide the first set of counters --- src/bts.cpp | 3 +++ src/bts.h | 25 +++++++++++++++++++++++++ src/tbf.cpp | 13 +++++++++++-- 3 files changed, 39 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/bts.cpp b/src/bts.cpp index 29e5834..39c1fd5 100644 --- a/src/bts.cpp +++ b/src/bts.cpp @@ -664,6 +664,7 @@ int gprs_rlcmac_pdch::rcv_data_block_acknowledged(uint8_t *data, uint8_t len, in case 23: break; default: + bts()->decode_error(); LOGP(DRLCMACUL, LOGL_ERROR, "Dropping data block with invalid" "length: %d)\n", len); return -EINVAL; @@ -696,6 +697,7 @@ int gprs_rlcmac_pdch::rcv_data_block_acknowledged(uint8_t *data, uint8_t len, in } rc = Decoding::tlli_from_ul_data(data, len, &tbf->tlli); if (rc) { + bts()->decode_error(); LOGP(DRLCMACUL, LOGL_NOTICE, "Failed to decode TLLI " "of UL DATA TBF=%d.\n", rh->tfi); return 0; @@ -1101,6 +1103,7 @@ int gprs_rlcmac_pdch::rcv_control_block( gprs_rlcmac_meas_rep(&ul_control_block->u.Packet_Measurement_Report); break; default: + bts()->decode_error(); LOGP(DRLCMAC, LOGL_NOTICE, "RX: [PCU <- BTS] unknown control block received\n"); } talloc_free(ul_control_block); diff --git a/src/bts.h b/src/bts.h index af51e47..eec3493 100644 --- a/src/bts.h +++ b/src/bts.h @@ -237,6 +237,31 @@ inline struct rate_ctr_group *BTS::rate_counters() const return m_ratectrs; } +inline void BTS::tbf_dl_created() +{ + rate_ctr_inc(&m_ratectrs->ctr[CTR_TBF_DL_ALLOCATED]); +} + +inline void BTS::tbf_dl_freed() +{ + rate_ctr_inc(&m_ratectrs->ctr[CTR_TBF_DL_FREED]); +} + +inline void BTS::tbf_ul_created() +{ + rate_ctr_inc(&m_ratectrs->ctr[CTR_TBF_UL_ALLOCATED]); +} + +inline void BTS::tbf_ul_freed() +{ + rate_ctr_inc(&m_ratectrs->ctr[CTR_TBF_UL_FREED]); +} + +inline void BTS::decode_error() +{ + rate_ctr_inc(&m_ratectrs->ctr[CTR_DECODE_ERRORS]); +} + inline gprs_rlcmac_bts *gprs_rlcmac_pdch::bts_data() const { return trx->bts->bts_data(); diff --git a/src/tbf.cpp b/src/tbf.cpp index eb76ab8..cdd8098 100644 --- a/src/tbf.cpp +++ b/src/tbf.cpp @@ -328,6 +328,12 @@ void tbf_free(struct gprs_rlcmac_tbf *tbf) msgb_free(msg); tbf_unlink_pdch(tbf); llist_del(&tbf->list); + + if (tbf->direction == GPRS_RLCMAC_UL_TBF) + tbf->bts->tbf_ul_freed(); + else + tbf->bts->tbf_dl_freed(); + LOGP(DRLCMAC, LOGL_DEBUG, "********** TBF ends here **********\n"); talloc_free(tbf); } @@ -602,10 +608,13 @@ next_diagram: gettimeofday(&tbf->meas.dl_loss_tv, NULL); INIT_LLIST_HEAD(&tbf->llc_queue); - if (dir == GPRS_RLCMAC_UL_TBF) + if (dir == GPRS_RLCMAC_UL_TBF) { llist_add(&tbf->list, &bts->ul_tbfs); - else + tbf->bts->tbf_ul_created(); + } else { llist_add(&tbf->list, &bts->dl_tbfs); + tbf->bts->tbf_dl_created(); + } debug_diagram(bts->bts, tbf->diag, "+-----------------+"); debug_diagram(bts->bts, tbf->diag, "|NEW %s TBF TFI=%2d|", -- cgit v1.2.3