Change in osmo-pcu[master]: bts: Drop specific functions to increase counters

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

pespin gerrit-no-reply at lists.osmocom.org
Tue May 12 20:11:38 UTC 2020


pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-pcu/+/18226 )


Change subject: bts: Drop specific functions to increase counters
......................................................................

bts: Drop specific functions to increase counters

Most of the commit was generated by following sh snippet:
"""
 #!/bin/bash
grep -r -l ^CREATE_COUNT_INLINE . | xargs cat | grep "^CREATE_COUNT_INLINE("| tr -d ",;" | tr "()" " " | awk '{ print $2 " " $3 }' >/tmp/hello

while read -r func_name ctr_name
do
 #echo "$func_name -> $ctr_name"
files="$(grep -r -l "${func_name}()" .)"
for f in $files; do
echo "$f: $func_name -> $ctr_name";
sed -i "s#${func_name}()#do_rate_ctr_inc(${ctr_name})#g" $f
done;
done < /tmp/hello

grep -r -l "void do_rate_ctr_inc" | xargs sed -i "/void do_rate_ctr_inc(CTR/d"
grep -r -l "CREATE_COUNT_INLINE" | xargs sed -i "/^CREATE_COUNT_INLINE/d"
"""

Change-Id: I360e322a30edf639aefb3c0f0e4354d98c9035a3
---
M src/bts.cpp
M src/bts.h
M src/gprs_rlcmac_sched.cpp
M src/gprs_rlcmac_ts_alloc.cpp
M src/llc.cpp
M src/pdch.cpp
M src/rlc.cpp
M src/sba.cpp
M src/tbf.cpp
M src/tbf_dl.cpp
M src/tbf_ul.cpp
11 files changed, 188 insertions(+), 339 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/26/18226/1

diff --git a/src/bts.cpp b/src/bts.cpp
index 2916ee7..2cf219a 100644
--- a/src/bts.cpp
+++ b/src/bts.cpp
@@ -344,7 +344,7 @@
 		LOGP(DRLCMAC, LOGL_NOTICE,
 			"Late RLC block, FN delta: %d FN: %d curFN: %d\n",
 			delay, fn, current_frame_number());
-		rlc_late_block();
+		do_rate_ctr_inc(CTR_RLC_LATE_BLOCK);
 	}
 
 	m_cur_blk_fn = fn;
@@ -755,10 +755,10 @@
 	bool failure = false;
 	GprsMs *ms;
 
-	rach_frame();
+	do_rate_ctr_inc(CTR_RACH_REQUESTS);
 
 	if (is_11bit)
-		rach_frame_11bit();
+		do_rate_ctr_inc(CTR_11BIT_RACH_REQUESTS);
 
 	/* Determine full frame number */
 	Fn = rfn_to_fn(Fn);
@@ -831,7 +831,7 @@
 		plen = Encoding::write_immediate_assignment_reject(
 			immediate_assignment, ra, Fn,
 			burst_type);
-		immediate_assignment_reject();
+		do_rate_ctr_inc(CTR_IMMEDIATE_ASSIGN_REJ);
 	}
 	else {
 		LOGP(DRLCMAC, LOGL_DEBUG,
@@ -845,7 +845,7 @@
 	}
 
 	if (plen >= 0) {
-		immediate_assignment_ul_tbf();
+		do_rate_ctr_inc(CTR_IMMEDIATE_ASSIGN_UL_TBF);
 		pcu_l1if_tx_agch(immediate_assignment, plen);
 	}
 
@@ -920,7 +920,7 @@
 						    tbf->poll_fn, m_bts.alpha, m_bts.gamma, -1,
 						    GSM_L1_BURST_TYPE_ACCESS_0);
 	if (plen >= 0) {
-		immediate_assignment_dl_tbf();
+		do_rate_ctr_inc(CTR_IMMEDIATE_ASSIGN_DL_TBF);
 		pcu_l1if_tx_pch(immediate_assignment, plen, pgroup);
 	}
 
diff --git a/src/bts.h b/src/bts.h
index 4fddc0b..76a6073 100644
--- a/src/bts.h
+++ b/src/bts.h
@@ -175,7 +175,97 @@
 	uint32_t app_info_pending; /* Count of MS with active TBF, to which we did not send app_info yet */
 };
 
+enum {
+	CTR_TBF_DL_ALLOCATED,
+	CTR_TBF_DL_FREED,
+	CTR_TBF_DL_ABORTED,
+	CTR_TBF_UL_ALLOCATED,
+	CTR_TBF_UL_FREED,
+	CTR_TBF_UL_ABORTED,
+	CTR_TBF_REUSED,
+	CTR_TBF_ALLOC_ALGO_A,
+	CTR_TBF_ALLOC_ALGO_B,
+	CTR_TBF_FAILED_EGPRS_ONLY,
+	CTR_RLC_SENT,
+	CTR_RLC_RESENT,
+	CTR_RLC_RESTARTED,
+	CTR_RLC_STALLED,
+	CTR_RLC_NACKED,
+	CTR_RLC_FINAL_BLOCK_RESENT,
+	CTR_RLC_ASS_TIMEDOUT,
+	CTR_RLC_ASS_FAILED,
+	CTR_RLC_ACK_TIMEDOUT,
+	CTR_RLC_ACK_FAILED,
+	CTR_RLC_REL_TIMEDOUT,
+	CTR_RLC_LATE_BLOCK,
+	CTR_RLC_SENT_DUMMY,
+	CTR_RLC_SENT_CONTROL,
+	CTR_RLC_DL_BYTES,
+	CTR_RLC_DL_PAYLOAD_BYTES,
+	CTR_RLC_UL_BYTES,
+	CTR_RLC_UL_PAYLOAD_BYTES,
+	CTR_DECODE_ERRORS,
+	CTR_SBA_ALLOCATED,
+	CTR_SBA_FREED,
+	CTR_SBA_TIMEDOUT,
+	CTR_LLC_FRAME_TIMEDOUT,
+	CTR_LLC_FRAME_DROPPED,
+	CTR_LLC_FRAME_SCHED,
+	CTR_LLC_DL_BYTES,
+	CTR_LLC_UL_BYTES,
+	CTR_RACH_REQUESTS,
+	CTR_11BIT_RACH_REQUESTS,
+	CTR_SPB_UL_FIRST_SEGMENT,
+	CTR_SPB_UL_SECOND_SEGMENT,
+	CTR_SPB_DL_FIRST_SEGMENT,
+	CTR_SPB_DL_SECOND_SEGMENT,
+	CTR_IMMEDIATE_ASSIGN_UL_TBF,
+	CTR_IMMEDIATE_ASSIGN_REJ,
+	CTR_IMMEDIATE_ASSIGN_DL_TBF,
+	CTR_CHANNEL_REQUEST_DESCRIPTION,
+	CTR_PKT_UL_ASSIGNMENT,
+	CTR_PKT_ACCESS_REJ,
+	CTR_PKT_DL_ASSIGNMENT,
+	CTR_RLC_RECV_CONTROL,
+	CTR_PUA_POLL_TIMEDOUT,
+	CTR_PUA_POLL_FAILED,
+	CTR_PDA_POLL_TIMEDOUT,
+	CTR_PDA_POLL_FAILED,
+	CTR_PUAN_POLL_TIMEDOUT,
+	CTR_PUAN_POLL_FAILED,
+	CTR_PDAN_POLL_TIMEDOUT,
+	CTR_PDAN_POLL_FAILED,
+	CTR_GPRS_DL_CS1,
+	CTR_GPRS_DL_CS2,
+	CTR_GPRS_DL_CS3,
+	CTR_GPRS_DL_CS4,
+	CTR_EGPRS_DL_MCS1,
+	CTR_EGPRS_DL_MCS2,
+	CTR_EGPRS_DL_MCS3,
+	CTR_EGPRS_DL_MCS4,
+	CTR_EGPRS_DL_MCS5,
+	CTR_EGPRS_DL_MCS6,
+	CTR_EGPRS_DL_MCS7,
+	CTR_EGPRS_DL_MCS8,
+	CTR_EGPRS_DL_MCS9,
+	CTR_GPRS_UL_CS1,
+	CTR_GPRS_UL_CS2,
+	CTR_GPRS_UL_CS3,
+	CTR_GPRS_UL_CS4,
+	CTR_EGPRS_UL_MCS1,
+	CTR_EGPRS_UL_MCS2,
+	CTR_EGPRS_UL_MCS3,
+	CTR_EGPRS_UL_MCS4,
+	CTR_EGPRS_UL_MCS5,
+	CTR_EGPRS_UL_MCS6,
+	CTR_EGPRS_UL_MCS7,
+	CTR_EGPRS_UL_MCS8,
+	CTR_EGPRS_UL_MCS9,
+};
+
 #ifdef __cplusplus
+
+
 /**
  * I represent a GSM BTS. I have one or more TRX, I know the current
  * GSM time and I have controllers that help with allocating resources
@@ -184,94 +274,6 @@
 struct BTS {
 public:
 	enum {
-		CTR_TBF_DL_ALLOCATED,
-		CTR_TBF_DL_FREED,
-		CTR_TBF_DL_ABORTED,
-		CTR_TBF_UL_ALLOCATED,
-		CTR_TBF_UL_FREED,
-		CTR_TBF_UL_ABORTED,
-		CTR_TBF_REUSED,
-		CTR_TBF_ALLOC_ALGO_A,
-		CTR_TBF_ALLOC_ALGO_B,
-		CTR_TBF_FAILED_EGPRS_ONLY,
-		CTR_RLC_SENT,
-		CTR_RLC_RESENT,
-		CTR_RLC_RESTARTED,
-		CTR_RLC_STALLED,
-		CTR_RLC_NACKED,
-		CTR_RLC_FINAL_BLOCK_RESENT,
-		CTR_RLC_ASS_TIMEDOUT,
-		CTR_RLC_ASS_FAILED,
-		CTR_RLC_ACK_TIMEDOUT,
-		CTR_RLC_ACK_FAILED,
-		CTR_RLC_REL_TIMEDOUT,
-		CTR_RLC_LATE_BLOCK,
-		CTR_RLC_SENT_DUMMY,
-		CTR_RLC_SENT_CONTROL,
-		CTR_RLC_DL_BYTES,
-		CTR_RLC_DL_PAYLOAD_BYTES,
-		CTR_RLC_UL_BYTES,
-		CTR_RLC_UL_PAYLOAD_BYTES,
-		CTR_DECODE_ERRORS,
-		CTR_SBA_ALLOCATED,
-		CTR_SBA_FREED,
-		CTR_SBA_TIMEDOUT,
-		CTR_LLC_FRAME_TIMEDOUT,
-		CTR_LLC_FRAME_DROPPED,
-		CTR_LLC_FRAME_SCHED,
-		CTR_LLC_DL_BYTES,
-		CTR_LLC_UL_BYTES,
-		CTR_RACH_REQUESTS,
-		CTR_11BIT_RACH_REQUESTS,
-		CTR_SPB_UL_FIRST_SEGMENT,
-		CTR_SPB_UL_SECOND_SEGMENT,
-		CTR_SPB_DL_FIRST_SEGMENT,
-		CTR_SPB_DL_SECOND_SEGMENT,
-		CTR_IMMEDIATE_ASSIGN_UL_TBF,
-		CTR_IMMEDIATE_ASSIGN_REJ,
-		CTR_IMMEDIATE_ASSIGN_DL_TBF,
-		CTR_CHANNEL_REQUEST_DESCRIPTION,
-		CTR_PKT_UL_ASSIGNMENT,
-		CTR_PKT_ACCESS_REJ,
-		CTR_PKT_DL_ASSIGNMENT,
-		CTR_RLC_RECV_CONTROL,
-		CTR_PUA_POLL_TIMEDOUT,
-		CTR_PUA_POLL_FAILED,
-		CTR_PDA_POLL_TIMEDOUT,
-		CTR_PDA_POLL_FAILED,
-		CTR_PUAN_POLL_TIMEDOUT,
-		CTR_PUAN_POLL_FAILED,
-		CTR_PDAN_POLL_TIMEDOUT,
-		CTR_PDAN_POLL_FAILED,
-		CTR_GPRS_DL_CS1,
-		CTR_GPRS_DL_CS2,
-		CTR_GPRS_DL_CS3,
-		CTR_GPRS_DL_CS4,
-		CTR_EGPRS_DL_MCS1,
-		CTR_EGPRS_DL_MCS2,
-		CTR_EGPRS_DL_MCS3,
-		CTR_EGPRS_DL_MCS4,
-		CTR_EGPRS_DL_MCS5,
-		CTR_EGPRS_DL_MCS6,
-		CTR_EGPRS_DL_MCS7,
-		CTR_EGPRS_DL_MCS8,
-		CTR_EGPRS_DL_MCS9,
-		CTR_GPRS_UL_CS1,
-		CTR_GPRS_UL_CS2,
-		CTR_GPRS_UL_CS3,
-		CTR_GPRS_UL_CS4,
-		CTR_EGPRS_UL_MCS1,
-		CTR_EGPRS_UL_MCS2,
-		CTR_EGPRS_UL_MCS3,
-		CTR_EGPRS_UL_MCS4,
-		CTR_EGPRS_UL_MCS5,
-		CTR_EGPRS_UL_MCS6,
-		CTR_EGPRS_UL_MCS7,
-		CTR_EGPRS_UL_MCS8,
-		CTR_EGPRS_UL_MCS9,
-	};
-
-	enum {
 		STAT_MS_PRESENT,
 	};
 
@@ -320,91 +322,12 @@
 	/*
 	 * Statistics
 	 */
-	void tbf_dl_created();
-	void tbf_dl_freed();
-	void tbf_dl_aborted();
-	void tbf_ul_created();
-	void tbf_ul_freed();
-	void tbf_ul_aborted();
-	void tbf_reused();
-	void tbf_alloc_algo_a();
-	void tbf_alloc_algo_b();
-	void tbf_failed_egprs_only();
-	void rlc_sent();
-	void rlc_resent();
-	void rlc_restarted();
-	void rlc_stalled();
-	void rlc_nacked();
-	void rlc_final_block_resent();
-	void rlc_ass_timedout();
-	void rlc_ass_failed();
-	void rlc_ack_timedout();
-	void rlc_ack_failed();
-	void rlc_rel_timedout();
-	void rlc_late_block();
-	void rlc_sent_dummy();
-	void rlc_sent_control();
 	void rlc_dl_bytes(int bytes);
 	void rlc_dl_payload_bytes(int bytes);
 	void rlc_ul_bytes(int bytes);
 	void rlc_ul_payload_bytes(int bytes);
-	void decode_error();
-	void sba_allocated();
-	void sba_freed();
-	void sba_timedout();
-	void llc_timedout_frame();
-	void llc_dropped_frame();
-	void llc_frame_sched();
 	void llc_dl_bytes(int bytes);
 	void llc_ul_bytes(int bytes);
-	void rach_frame();
-	void rach_frame_11bit();
-	void spb_uplink_first_segment();
-	void spb_uplink_second_segment();
-	void spb_downlink_first_segment();
-	void spb_downlink_second_segment();
-	void immediate_assignment_ul_tbf();
-	void immediate_assignment_reject();
-	void immediate_assignment_dl_tbf();
-	void channel_request_description();
-	void pkt_ul_assignment();
-	void pkt_access_reject();
-	void pkt_dl_assignemnt();
-	void rlc_rcvd_control();
-	void pua_poll_timedout();
-	void pua_poll_failed();
-	void pda_poll_timedout();
-	void pda_poll_failed();
-	void pkt_ul_ack_nack_poll_timedout();
-	void pkt_ul_ack_nack_poll_failed();
-	void pkt_dl_ack_nack_poll_timedout();
-	void pkt_dl_ack_nack_poll_failed();
-	void gprs_dl_cs1();
-	void gprs_dl_cs2();
-	void gprs_dl_cs3();
-	void gprs_dl_cs4();
-	void egprs_dl_mcs1();
-	void egprs_dl_mcs2();
-	void egprs_dl_mcs3();
-	void egprs_dl_mcs4();
-	void egprs_dl_mcs5();
-	void egprs_dl_mcs6();
-	void egprs_dl_mcs7();
-	void egprs_dl_mcs8();
-	void egprs_dl_mcs9();
-	void gprs_ul_cs1();
-	void gprs_ul_cs2();
-	void gprs_ul_cs3();
-	void gprs_ul_cs4();
-	void egprs_ul_mcs1();
-	void egprs_ul_mcs2();
-	void egprs_ul_mcs3();
-	void egprs_ul_mcs4();
-	void egprs_ul_mcs5();
-	void egprs_ul_mcs6();
-	void egprs_ul_mcs7();
-	void egprs_ul_mcs8();
-	void egprs_ul_mcs9();
 
 	void ms_present(int32_t n);
 	int32_t ms_present_get();
@@ -414,6 +337,7 @@
 	 */
 	struct rate_ctr_group *rate_counters() const;
 	struct osmo_stat_item_group *stat_items() const;
+	void do_rate_ctr_inc(unsigned int ctr_id);
 
 	LListHead<gprs_rlcmac_tbf>& ul_tbfs();
 	LListHead<gprs_rlcmac_tbf>& dl_tbfs();
@@ -483,6 +407,10 @@
 	return m_statg;
 }
 
+inline void BTS::do_rate_ctr_inc(unsigned int ctr_id) {
+	rate_ctr_inc(&m_ratectrs->ctr[ctr_id]);
+}
+
 #define CREATE_COUNT_ADD_INLINE(func_name, ctr_name) \
 	inline void BTS::func_name(int inc) {\
 		rate_ctr_add(&m_ratectrs->ctr[ctr_name], inc); \
@@ -493,91 +421,12 @@
 		rate_ctr_inc(&m_ratectrs->ctr[ctr_name]); \
 	}
 
-CREATE_COUNT_INLINE(tbf_dl_created, CTR_TBF_DL_ALLOCATED)
-CREATE_COUNT_INLINE(tbf_dl_freed, CTR_TBF_DL_FREED)
-CREATE_COUNT_INLINE(tbf_dl_aborted, CTR_TBF_DL_ABORTED)
-CREATE_COUNT_INLINE(tbf_ul_created, CTR_TBF_UL_ALLOCATED)
-CREATE_COUNT_INLINE(tbf_ul_freed, CTR_TBF_UL_FREED)
-CREATE_COUNT_INLINE(tbf_ul_aborted, CTR_TBF_UL_ABORTED)
-CREATE_COUNT_INLINE(tbf_reused, CTR_TBF_REUSED)
-CREATE_COUNT_INLINE(tbf_alloc_algo_a, CTR_TBF_ALLOC_ALGO_A)
-CREATE_COUNT_INLINE(tbf_alloc_algo_b, CTR_TBF_ALLOC_ALGO_B)
-CREATE_COUNT_INLINE(tbf_failed_egprs_only, CTR_TBF_FAILED_EGPRS_ONLY)
-CREATE_COUNT_INLINE(rlc_sent, CTR_RLC_SENT)
-CREATE_COUNT_INLINE(rlc_resent, CTR_RLC_RESENT)
-CREATE_COUNT_INLINE(rlc_restarted, CTR_RLC_RESTARTED)
-CREATE_COUNT_INLINE(rlc_stalled, CTR_RLC_STALLED)
-CREATE_COUNT_INLINE(rlc_nacked, CTR_RLC_NACKED)
-CREATE_COUNT_INLINE(rlc_final_block_resent, CTR_RLC_FINAL_BLOCK_RESENT);
-CREATE_COUNT_INLINE(rlc_ass_timedout, CTR_RLC_ASS_TIMEDOUT);
-CREATE_COUNT_INLINE(rlc_ass_failed, CTR_RLC_ASS_FAILED);
-CREATE_COUNT_INLINE(rlc_ack_timedout, CTR_RLC_ACK_TIMEDOUT);
-CREATE_COUNT_INLINE(rlc_ack_failed, CTR_RLC_ACK_FAILED);
-CREATE_COUNT_INLINE(rlc_rel_timedout, CTR_RLC_REL_TIMEDOUT);
-CREATE_COUNT_INLINE(rlc_late_block, CTR_RLC_LATE_BLOCK);
-CREATE_COUNT_INLINE(rlc_sent_dummy, CTR_RLC_SENT_DUMMY);
-CREATE_COUNT_INLINE(rlc_sent_control, CTR_RLC_SENT_CONTROL);
 CREATE_COUNT_ADD_INLINE(rlc_dl_bytes, CTR_RLC_DL_BYTES);
 CREATE_COUNT_ADD_INLINE(rlc_dl_payload_bytes, CTR_RLC_DL_PAYLOAD_BYTES);
 CREATE_COUNT_ADD_INLINE(rlc_ul_bytes, CTR_RLC_UL_BYTES);
 CREATE_COUNT_ADD_INLINE(rlc_ul_payload_bytes, CTR_RLC_UL_PAYLOAD_BYTES);
-CREATE_COUNT_INLINE(decode_error, CTR_DECODE_ERRORS)
-CREATE_COUNT_INLINE(sba_allocated, CTR_SBA_ALLOCATED)
-CREATE_COUNT_INLINE(sba_freed, CTR_SBA_FREED)
-CREATE_COUNT_INLINE(sba_timedout, CTR_SBA_TIMEDOUT)
-CREATE_COUNT_INLINE(llc_timedout_frame, CTR_LLC_FRAME_TIMEDOUT);
-CREATE_COUNT_INLINE(llc_dropped_frame, CTR_LLC_FRAME_DROPPED);
-CREATE_COUNT_INLINE(llc_frame_sched, CTR_LLC_FRAME_SCHED);
 CREATE_COUNT_ADD_INLINE(llc_dl_bytes, CTR_LLC_DL_BYTES);
 CREATE_COUNT_ADD_INLINE(llc_ul_bytes, CTR_LLC_UL_BYTES);
-CREATE_COUNT_INLINE(rach_frame, CTR_RACH_REQUESTS);
-CREATE_COUNT_INLINE(rach_frame_11bit, CTR_11BIT_RACH_REQUESTS);
-CREATE_COUNT_INLINE(spb_uplink_first_segment, CTR_SPB_UL_FIRST_SEGMENT);
-CREATE_COUNT_INLINE(spb_uplink_second_segment, CTR_SPB_UL_SECOND_SEGMENT);
-CREATE_COUNT_INLINE(spb_downlink_first_segment, CTR_SPB_DL_FIRST_SEGMENT);
-CREATE_COUNT_INLINE(spb_downlink_second_segment, CTR_SPB_DL_SECOND_SEGMENT);
-CREATE_COUNT_INLINE(immediate_assignment_ul_tbf, CTR_IMMEDIATE_ASSIGN_UL_TBF);
-CREATE_COUNT_INLINE(immediate_assignment_reject, CTR_IMMEDIATE_ASSIGN_REJ);
-CREATE_COUNT_INLINE(immediate_assignment_dl_tbf, CTR_IMMEDIATE_ASSIGN_DL_TBF);
-CREATE_COUNT_INLINE(channel_request_description, CTR_CHANNEL_REQUEST_DESCRIPTION);
-CREATE_COUNT_INLINE(pkt_ul_assignment, CTR_PKT_UL_ASSIGNMENT);
-CREATE_COUNT_INLINE(pkt_access_reject, CTR_PKT_ACCESS_REJ);
-CREATE_COUNT_INLINE(pkt_dl_assignemnt, CTR_PKT_DL_ASSIGNMENT);
-CREATE_COUNT_INLINE(rlc_rcvd_control, CTR_RLC_RECV_CONTROL);
-CREATE_COUNT_INLINE(pua_poll_timedout, CTR_PUA_POLL_TIMEDOUT);
-CREATE_COUNT_INLINE(pua_poll_failed, CTR_PUA_POLL_FAILED);
-CREATE_COUNT_INLINE(pda_poll_timedout, CTR_PDA_POLL_TIMEDOUT);
-CREATE_COUNT_INLINE(pda_poll_failed, CTR_PDA_POLL_FAILED);
-CREATE_COUNT_INLINE(pkt_ul_ack_nack_poll_timedout, CTR_PUAN_POLL_TIMEDOUT);
-CREATE_COUNT_INLINE(pkt_ul_ack_nack_poll_failed, CTR_PUAN_POLL_FAILED);
-CREATE_COUNT_INLINE(pkt_dl_ack_nack_poll_timedout, CTR_PDAN_POLL_TIMEDOUT);
-CREATE_COUNT_INLINE(pkt_dl_ack_nack_poll_failed, CTR_PDAN_POLL_FAILED);
-CREATE_COUNT_INLINE(gprs_dl_cs1, CTR_GPRS_DL_CS1);
-CREATE_COUNT_INLINE(gprs_dl_cs2, CTR_GPRS_DL_CS2);
-CREATE_COUNT_INLINE(gprs_dl_cs3, CTR_GPRS_DL_CS3);
-CREATE_COUNT_INLINE(gprs_dl_cs4, CTR_GPRS_DL_CS4);
-CREATE_COUNT_INLINE(egprs_dl_mcs1, CTR_EGPRS_DL_MCS1);
-CREATE_COUNT_INLINE(egprs_dl_mcs2, CTR_EGPRS_DL_MCS2);
-CREATE_COUNT_INLINE(egprs_dl_mcs3, CTR_EGPRS_DL_MCS3);
-CREATE_COUNT_INLINE(egprs_dl_mcs4, CTR_EGPRS_DL_MCS4);
-CREATE_COUNT_INLINE(egprs_dl_mcs5, CTR_EGPRS_DL_MCS5);
-CREATE_COUNT_INLINE(egprs_dl_mcs6, CTR_EGPRS_DL_MCS6);
-CREATE_COUNT_INLINE(egprs_dl_mcs7, CTR_EGPRS_DL_MCS7);
-CREATE_COUNT_INLINE(egprs_dl_mcs8, CTR_EGPRS_DL_MCS8);
-CREATE_COUNT_INLINE(egprs_dl_mcs9, CTR_EGPRS_DL_MCS9);
-CREATE_COUNT_INLINE(gprs_ul_cs1, CTR_GPRS_UL_CS1);
-CREATE_COUNT_INLINE(gprs_ul_cs2, CTR_GPRS_UL_CS2);
-CREATE_COUNT_INLINE(gprs_ul_cs3, CTR_GPRS_UL_CS3);
-CREATE_COUNT_INLINE(gprs_ul_cs4, CTR_GPRS_UL_CS4);
-CREATE_COUNT_INLINE(egprs_ul_mcs1, CTR_EGPRS_UL_MCS1);
-CREATE_COUNT_INLINE(egprs_ul_mcs2, CTR_EGPRS_UL_MCS2);
-CREATE_COUNT_INLINE(egprs_ul_mcs3, CTR_EGPRS_UL_MCS3);
-CREATE_COUNT_INLINE(egprs_ul_mcs4, CTR_EGPRS_UL_MCS4);
-CREATE_COUNT_INLINE(egprs_ul_mcs5, CTR_EGPRS_UL_MCS5);
-CREATE_COUNT_INLINE(egprs_ul_mcs6, CTR_EGPRS_UL_MCS6);
-CREATE_COUNT_INLINE(egprs_ul_mcs7, CTR_EGPRS_UL_MCS7);
-CREATE_COUNT_INLINE(egprs_ul_mcs8, CTR_EGPRS_UL_MCS8);
-CREATE_COUNT_INLINE(egprs_ul_mcs9, CTR_EGPRS_UL_MCS9);
 
 #undef CREATE_COUNT_INLINE
 
diff --git a/src/gprs_rlcmac_sched.cpp b/src/gprs_rlcmac_sched.cpp
index fe6f159..6a53468 100644
--- a/src/gprs_rlcmac_sched.cpp
+++ b/src/gprs_rlcmac_sched.cpp
@@ -357,18 +357,18 @@
 
 	switch(cat) {
 	case PCU_GSMTAP_C_DL_CTRL:
-		bts->bts->rlc_sent_control();
+		bts->bts->do_rate_ctr_inc(CTR_RLC_SENT_CONTROL);
 		bts->bts->send_gsmtap(PCU_GSMTAP_C_DL_CTRL, false, trx, ts, GSMTAP_CHANNEL_PACCH, fn, msg->data,
 				      msg->len);
 		break;
 	case PCU_GSMTAP_C_DL_DATA_GPRS:
-		bts->bts->rlc_sent();
+		bts->bts->do_rate_ctr_inc(CTR_RLC_SENT);
 		/* FIXME: distinguish between GPRS and EGPRS */
 		bts->bts->send_gsmtap(PCU_GSMTAP_C_DL_DATA_GPRS, false, trx, ts, GSMTAP_CHANNEL_PDTCH, fn, msg->data,
 				      msg->len);
 		break;
 	case PCU_GSMTAP_C_DL_DUMMY:
-		bts->bts->rlc_sent_dummy();
+		bts->bts->do_rate_ctr_inc(CTR_RLC_SENT_DUMMY);
 		bts->bts->send_gsmtap(PCU_GSMTAP_C_DL_DUMMY, false, trx, ts, GSMTAP_CHANNEL_PACCH, fn, msg->data,
 				      msg->len);
 		break;
diff --git a/src/gprs_rlcmac_ts_alloc.cpp b/src/gprs_rlcmac_ts_alloc.cpp
index cf3f9a9..c4fbbad 100644
--- a/src/gprs_rlcmac_ts_alloc.cpp
+++ b/src/gprs_rlcmac_ts_alloc.cpp
@@ -423,7 +423,7 @@
 	ms_->set_reserved_slots(trx, 1 << ts, 1 << ts);
 
 	tbf_->upgrade_to_multislot = 0;
-	bts->bts->tbf_alloc_algo_a();
+	bts->bts->do_rate_ctr_inc(CTR_TBF_ALLOC_ALGO_A);
 	return 0;
 }
 
@@ -950,7 +950,7 @@
 	else
 		assign_ul_tbf_slots(as_ul_tbf(tbf_), trx, ul_slots, tfi, usf);
 
-	bts->bts->tbf_alloc_algo_b();
+	bts->bts->do_rate_ctr_inc(CTR_TBF_ALLOC_ALGO_B);
 
 	return 0;
 }
diff --git a/src/llc.cpp b/src/llc.cpp
index 8ef7a53..e2d01c2 100644
--- a/src/llc.cpp
+++ b/src/llc.cpp
@@ -128,7 +128,7 @@
 
 	while ((msg = msgb_dequeue(&m_queue))) {
 		if (bts)
-			bts->llc_dropped_frame();
+			bts->do_rate_ctr_inc(CTR_LLC_FRAME_DROPPED);
 		msgb_free(msg);
 	}
 
diff --git a/src/pdch.cpp b/src/pdch.cpp
index 88d5d31..202f642 100644
--- a/src/pdch.cpp
+++ b/src/pdch.cpp
@@ -115,7 +115,7 @@
 
 static inline void sched_ul_ass_or_rej(BTS *bts, gprs_rlcmac_bts *bts_data, struct gprs_rlcmac_dl_tbf *tbf)
 {
-	bts->channel_request_description();
+	bts->do_rate_ctr_inc(CTR_CHANNEL_REQUEST_DESCRIPTION);
 
 	/* This call will register the new TBF with the MS on success */
 	gprs_rlcmac_ul_tbf *ul_tbf = tbf_alloc_ul(bts_data, tbf->ms(), tbf->trx->trx_no, tbf->tlli());
@@ -715,7 +715,7 @@
 	}
 	LOGP(DRLCMAC, LOGL_DEBUG, "------------------------- RX : Uplink Control Block -------------------------\n");
 
-	bts()->rlc_rcvd_control();
+	bts()->do_rate_ctr_inc(CTR_RLC_RECV_CONTROL);
 	switch (ul_control_block->u.MESSAGE_TYPE) {
 	case MT_PACKET_CONTROL_ACK:
 		rcv_control_ack(&ul_control_block->u.Packet_Control_Acknowledgement, fn);
@@ -736,7 +736,7 @@
 		/* ignoring it. change the SI to not force sending these? */
 		break;
 	default:
-		bts()->decode_error();
+		bts()->do_rate_ctr_inc(CTR_DECODE_ERRORS);
 		LOGP(DRLCMAC, LOGL_NOTICE,
 			"RX: [PCU <- BTS] unknown control block(%d) received\n",
 			ul_control_block->u.MESSAGE_TYPE);
@@ -753,7 +753,7 @@
 {
 	GprsCodingScheme cs = GprsCodingScheme::getBySizeUL(len);
 	if (!cs) {
-		bts()->decode_error();
+		bts()->do_rate_ctr_inc(CTR_DECODE_ERRORS);
 		LOGP(DRLCMACUL, LOGL_ERROR, "Dropping data block with invalid"
 			"length: %d)\n", len);
 		return -EINVAL;
@@ -770,7 +770,7 @@
 	if (mcs_is_edge(cs))
 		return rcv_data_block(data, len, fn, meas, cs);
 
-	bts()->decode_error();
+	bts()->do_rate_ctr_inc(CTR_DECODE_ERRORS);
 	LOGP(DRLCMACUL, LOGL_ERROR, "Unsupported coding scheme %s\n",
 		mcs_name(cs));
 	return -EINVAL;
@@ -809,7 +809,7 @@
 		LOGP(DRLCMACUL, LOGL_ERROR,
 			"Got %s RLC block but header parsing has failed\n",
 			mcs_name(cs));
-		bts()->decode_error();
+		bts()->do_rate_ctr_inc(CTR_DECODE_ERRORS);
 		return rc;
 	}
 
diff --git a/src/rlc.cpp b/src/rlc.cpp
index c6d4330..c44d27e 100644
--- a/src/rlc.cpp
+++ b/src/rlc.cpp
@@ -159,7 +159,7 @@
 		} else {
 			LOGP(DRLCMACDL, LOGL_DEBUG, "- got NACK for BSN=%d\n", bsn);
 			m_v_b.mark_nacked(bsn);
-			bts->rlc_nacked();
+			bts->do_rate_ctr_inc(CTR_RLC_NACKED);
 			*lost += 1;
 		}
 	}
@@ -183,7 +183,7 @@
 		} else {
 			LOGP(DRLCMACDL, LOGL_DEBUG, "- got NACK for BSN=%d\n", bsn);
 			m_v_b.mark_nacked(bsn);
-			bts->rlc_nacked();
+			bts->do_rate_ctr_inc(CTR_RLC_NACKED);
 			*lost += 1;
 		}
 	}
diff --git a/src/sba.cpp b/src/sba.cpp
index 32735e8..cc58405 100644
--- a/src/sba.cpp
+++ b/src/sba.cpp
@@ -86,7 +86,7 @@
 	sba->ta = ta;
 
 	llist_add(&sba->list, &m_sbas);
-	m_bts.sba_allocated();
+	m_bts.do_rate_ctr_inc(CTR_SBA_ALLOCATED);
 
 	*_trx = trx;
 	*_ts = ts;
@@ -132,14 +132,14 @@
 	LOGP(DRLCMAC, LOGL_NOTICE,
 	     "Poll timeout for SBA (TRX=%u, TS=%u, FN=%u, TA=%u)\n", sba->trx_no,
 	     sba->ts_no, sba->fn, sba->ta);
-	m_bts.sba_timedout();
+	m_bts.do_rate_ctr_inc(CTR_SBA_TIMEDOUT);
 	free_sba(sba);
 	return 0;
 }
 
 void SBAController::free_sba(gprs_rlcmac_sba *sba)
 {
-	m_bts.sba_freed();
+	m_bts.do_rate_ctr_inc(CTR_SBA_FREED);
 	llist_del(&sba->list);
 	talloc_free(sba);
 }
diff --git a/src/tbf.cpp b/src/tbf.cpp
index 2693223..ccf257d 100644
--- a/src/tbf.cpp
+++ b/src/tbf.cpp
@@ -456,9 +456,9 @@
 	/* update counters */
 	if (tbf->direction == GPRS_RLCMAC_UL_TBF) {
 		gprs_rlcmac_ul_tbf *ul_tbf = as_ul_tbf(tbf);
-		tbf->bts->tbf_ul_freed();
+		tbf->bts->do_rate_ctr_inc(CTR_TBF_UL_FREED);
 		if (tbf->state_is(GPRS_RLCMAC_FLOW))
-			tbf->bts->tbf_ul_aborted();
+			tbf->bts->do_rate_ctr_inc(CTR_TBF_UL_ABORTED);
 		rate_ctr_group_free(ul_tbf->m_ul_egprs_ctrs);
 		rate_ctr_group_free(ul_tbf->m_ul_gprs_ctrs);
 	} else {
@@ -468,9 +468,9 @@
 		} else {
 			rate_ctr_group_free(dl_tbf->m_dl_gprs_ctrs);
 		}
-		tbf->bts->tbf_dl_freed();
+		tbf->bts->do_rate_ctr_inc(CTR_TBF_DL_FREED);
 		if (tbf->state_is(GPRS_RLCMAC_FLOW))
-			tbf->bts->tbf_dl_aborted();
+			tbf->bts->do_rate_ctr_inc(CTR_TBF_DL_ABORTED);
 	}
 
 	/* Give final measurement report */
@@ -821,11 +821,11 @@
 			LOGPTBF(this, LOGL_NOTICE, "Timeout for polling PACKET CONTROL ACK for PACKET UPLINK ACK\n");
 			rlcmac_diag();
 		}
-		bts->rlc_ack_timedout();
-		bts->pkt_ul_ack_nack_poll_timedout();
+		bts->do_rate_ctr_inc(CTR_RLC_ACK_TIMEDOUT);
+		bts->do_rate_ctr_inc(CTR_PUAN_POLL_TIMEDOUT);
 		if (state_is(GPRS_RLCMAC_FINISHED)) {
 			if (ul_tbf->n_inc(N3103)) {
-				bts->pkt_ul_ack_nack_poll_failed();
+				bts->do_rate_ctr_inc(CTR_PUAN_POLL_FAILED);
 				TBF_SET_STATE(ul_tbf, GPRS_RLCMAC_RELEASING);
 				T_START(ul_tbf, T3169, 3169, "MAX N3103 reached", false);
 				return;
@@ -842,13 +842,13 @@
 			state_flags |= (1 << GPRS_RLCMAC_FLAG_TO_UL_ASS);
 		}
 		ul_ass_state = GPRS_RLCMAC_UL_ASS_NONE;
-		bts->rlc_ass_timedout();
-		bts->pua_poll_timedout();
+		bts->do_rate_ctr_inc(CTR_RLC_ASS_TIMEDOUT);
+		bts->do_rate_ctr_inc(CTR_PUA_POLL_TIMEDOUT);
 		if (n_inc(N3105)) {
 			TBF_SET_STATE(this, GPRS_RLCMAC_RELEASING);
 			T_START(this, T3195, 3195, "MAX N3105 reached", true);
-			bts->rlc_ass_failed();
-			bts->pua_poll_failed();
+			bts->do_rate_ctr_inc(CTR_RLC_ASS_FAILED);
+			bts->do_rate_ctr_inc(CTR_PUA_POLL_FAILED);
 			return;
 		}
 		/* reschedule UL assignment */
@@ -861,13 +861,13 @@
 			state_flags |= (1 << GPRS_RLCMAC_FLAG_TO_DL_ASS);
 		}
 		dl_ass_state = GPRS_RLCMAC_DL_ASS_NONE;
-		bts->rlc_ass_timedout();
-		bts->pda_poll_timedout();
+		bts->do_rate_ctr_inc(CTR_RLC_ASS_TIMEDOUT);
+		bts->do_rate_ctr_inc(CTR_PDA_POLL_TIMEDOUT);
 		if (n_inc(N3105)) {
 			TBF_SET_STATE(this, GPRS_RLCMAC_RELEASING);
 			T_START(this, T3195, 3195, "MAX N3105 reached", true);
-			bts->rlc_ass_failed();
-			bts->pda_poll_failed();
+			bts->do_rate_ctr_inc(CTR_RLC_ASS_FAILED);
+			bts->do_rate_ctr_inc(CTR_PDA_POLL_FAILED);
 			return;
 		}
 		/* reschedule DL assignment */
@@ -883,17 +883,17 @@
 		}
 
 		if (dl_tbf->state_is(GPRS_RLCMAC_RELEASING))
-			bts->rlc_rel_timedout();
+			bts->do_rate_ctr_inc(CTR_RLC_REL_TIMEDOUT);
 		else {
-			bts->rlc_ack_timedout();
-			bts->pkt_dl_ack_nack_poll_timedout();
+			bts->do_rate_ctr_inc(CTR_RLC_ACK_TIMEDOUT);
+			bts->do_rate_ctr_inc(CTR_PDAN_POLL_TIMEDOUT);
 		}
 
 		if (dl_tbf->n_inc(N3105)) {
 			TBF_SET_STATE(dl_tbf, GPRS_RLCMAC_RELEASING);
 			T_START(dl_tbf, T3195, 3195, "MAX N3105 reached", true);
-			bts->pkt_dl_ack_nack_poll_failed();
-			bts->rlc_ack_failed();
+			bts->do_rate_ctr_inc(CTR_PDAN_POLL_FAILED);
+			bts->do_rate_ctr_inc(CTR_RLC_ACK_FAILED);
 			return;
 		}
 		/* resend IMM.ASS on CCCH on timeout */
@@ -984,7 +984,7 @@
 
 	if (ms->egprs_ms_class() == 0 && bts->egprs_enabled) {
 		LOGP(DTBF, LOGL_NOTICE, "Not accepting non-EGPRS phone in EGPRS-only mode\n");
-		bts->bts->tbf_failed_egprs_only();
+		bts->bts->do_rate_ctr_inc(CTR_TBF_FAILED_EGPRS_ONLY);
 		return NULL;
 	}
 
@@ -1026,7 +1026,7 @@
 	}
 
 	llist_add(&tbf->list(), &bts->bts->ul_tbfs());
-	tbf->bts->tbf_ul_created();
+	tbf->bts->do_rate_ctr_inc(CTR_TBF_UL_ALLOCATED);
 
 	return tbf;
 }
@@ -1057,7 +1057,7 @@
 	if (ms->egprs_ms_class() == 0 && bts->egprs_enabled) {
 		if (ms->ms_class() > 0) {
 			LOGP(DTBF, LOGL_NOTICE, "Not accepting non-EGPRS phone in EGPRS-only mode\n");
-			bts->bts->tbf_failed_egprs_only();
+			bts->bts->do_rate_ctr_inc(CTR_TBF_FAILED_EGPRS_ONLY);
 			return NULL;
 		}
 		ms->set_egprs_ms_class(1);
@@ -1109,7 +1109,7 @@
 	}
 
 	llist_add(&tbf->list(), &bts->bts->dl_tbfs());
-	tbf->bts->tbf_dl_created();
+	tbf->bts->do_rate_ctr_inc(CTR_TBF_DL_ALLOCATED);
 
 	tbf->m_last_dl_poll_fn = -1;
 	tbf->m_last_dl_drained_fn = -1;
@@ -1276,7 +1276,7 @@
 		goto free_ret;
 	}
 	LOGP(DTBF, LOGL_DEBUG, "------------------------- TX : Packet Downlink Assignment -------------------------\n");
-	bts->pkt_dl_assignemnt();
+	bts->do_rate_ctr_inc(CTR_PKT_DL_ASSIGNMENT);
 	bitvec_pack(ass_vec, msgb_put(msg, 23));
 
 	if (poll_ass_dl) {
@@ -1315,7 +1315,7 @@
 	Encoding::write_packet_access_reject(
 		packet_access_rej, tlli());
 
-	bts->pkt_access_reject();
+	bts->do_rate_ctr_inc(CTR_PKT_ACCESS_REJ);
 
 	bitvec_pack(packet_access_rej, msgb_put(msg, 23));
 
@@ -1382,7 +1382,7 @@
 		goto free_ret;
 	}
 	LOGP(DTBF, LOGL_DEBUG, "------------------------- TX : Packet Uplink Assignment -------------------------\n");
-	bts->pkt_ul_assignment();
+	bts->do_rate_ctr_inc(CTR_PKT_UL_ASSIGNMENT);
 
 	set_polling(new_poll_fn, ts, GPRS_RLCMAC_POLL_UL_ASS);
 
@@ -1422,7 +1422,7 @@
 {
 	struct gprs_rlcmac_dl_tbf *new_tbf = NULL;
 
-	bts->tbf_reused();
+	bts->do_rate_ctr_inc(CTR_TBF_REUSED);
 
 	new_tbf = tbf_alloc_dl_tbf(bts->bts_data(), ms(),
 		this->trx->trx_no, false);
@@ -1577,7 +1577,7 @@
 	ms->set_tlli(tlli);
 
 	llist_add(&ul_tbf->list(), &bts->bts->ul_tbfs());
-	ul_tbf->bts->tbf_ul_created();
+	ul_tbf->bts->do_rate_ctr_inc(CTR_TBF_UL_ALLOCATED);
 	TBF_SET_ASS_ON(ul_tbf, GPRS_RLCMAC_FLAG_PACCH, false);
 
 	ul_tbf->set_ms(ms);
diff --git a/src/tbf_dl.cpp b/src/tbf_dl.cpp
index 591f460..5197717 100644
--- a/src/tbf_dl.cpp
+++ b/src/tbf_dl.cpp
@@ -313,12 +313,12 @@
 				break;
 		}
 
-		bts->llc_timedout_frame();
+		bts->do_rate_ctr_inc(CTR_LLC_FRAME_TIMEDOUT);
 drop_frame:
 		frames++;
 		octets += msg->len;
 		msgb_free(msg);
-		bts->llc_dropped_frame();
+		bts->do_rate_ctr_inc(CTR_LLC_FRAME_DROPPED);
 		continue;
 	}
 
@@ -424,7 +424,7 @@
 		LOGPTBFDL(this, LOGL_DEBUG, "Resending BSN %d\n", bsn);
 		/* re-send block with negative aknowlegement */
 		m_window.m_v_b.mark_unacked(bsn);
-		bts->rlc_resent();
+		bts->do_rate_ctr_inc(CTR_RLC_RESENT);
 	} else if (state_is(GPRS_RLCMAC_FINISHED)) {
 		/* If the TBF is in finished, we already sent all packages at least once.
 		 * If any packages could have been sent (because of unacked) it should have
@@ -432,7 +432,7 @@
 		LOGPTBFDL(this, LOGL_DEBUG,
 			  "Restarting at BSN %d, because all blocks have been transmitted.\n",
 			  m_window.v_a());
-		bts->rlc_restarted();
+		bts->do_rate_ctr_inc(CTR_RLC_RESTARTED);
 		if (restart_bsn_cycle())
 			return take_next_bsn(fn, previous_bsn, may_combine);
 	} else if (dl_window_stalled()) {
@@ -441,7 +441,7 @@
 		LOGPTBFDL(this, LOGL_NOTICE,
 			  "Restarting at BSN %d, because the window is stalled.\n",
 			  m_window.v_a());
-		bts->rlc_stalled();
+		bts->do_rate_ctr_inc(CTR_RLC_STALLED);
 		if (restart_bsn_cycle())
 			return take_next_bsn(fn, previous_bsn, may_combine);
 	} else if (have_data()) {
@@ -459,7 +459,7 @@
 		LOGPTBFDL(this, LOGL_DEBUG,
 			  "Restarting at BSN %d, because all blocks have been transmitted (FLOW).\n",
 			  m_window.v_a());
-		bts->rlc_restarted();
+		bts->do_rate_ctr_inc(CTR_RLC_RESTARTED);
 		if (restart_bsn_cycle())
 			return take_next_bsn(fn, previous_bsn, may_combine);
 	} else {
@@ -476,8 +476,8 @@
 		LOGPTBFDL(this, LOGL_DEBUG,
 			  "Nothing else to send, Re-transmit final block!\n");
 		bsn = m_window.v_s_mod(-1);
-		bts->rlc_final_block_resent();
-		bts->rlc_resent();
+		bts->do_rate_ctr_inc(CTR_RLC_FINAL_BLOCK_RESENT);
+		bts->do_rate_ctr_inc(CTR_RLC_RESENT);
 	}
 
 	*may_combine = num_data_blocks(m_rlc.block(bsn)->cs_current_trans.headerTypeData()) > 1;
@@ -556,7 +556,7 @@
 	LOGPTBFDL(this, LOGL_DEBUG, "Dequeue next LLC (len=%d)\n", msg->len);
 
 	m_llc.put_frame(msg->data, msg->len);
-	bts->llc_frame_sched();
+	bts->do_rate_ctr_inc(CTR_LLC_FRAME_SCHED);
 	msgb_free(msg);
 	m_last_dl_drained_fn = -1;
 }
@@ -1360,15 +1360,15 @@
 		 */
 		if (block_status_dl == EGPRS_RESEG_FIRST_SEG_SENT) {
 			/* statistics */
-			bts->spb_downlink_second_segment();
+			bts->do_rate_ctr_inc(CTR_SPB_DL_SECOND_SEGMENT);
 			return EGPRS_RLCMAC_DL_SEC_SEG;
 		} else if ((ht_cs_init == HEADER_EGPRS_DATA_TYPE_1) ||
 			   (ht_cs_init == HEADER_EGPRS_DATA_TYPE_2)) {
-			bts->spb_downlink_first_segment();
+			bts->do_rate_ctr_inc(CTR_SPB_DL_FIRST_SEGMENT);
 			return EGPRS_RLCMAC_DL_FIRST_SEG;
 		} else if ((cs_init == MCS4) &&
 			   (cs_current_trans == MCS1)) {
-			bts->spb_downlink_first_segment();
+			bts->do_rate_ctr_inc(CTR_SPB_DL_FIRST_SEGMENT);
 			return EGPRS_RLCMAC_DL_FIRST_SEG;
 		}
 	}
@@ -1390,55 +1390,55 @@
 {
 	switch (cs) {
 	case CS1:
-		bts->gprs_dl_cs1();
+		bts->do_rate_ctr_inc(CTR_GPRS_DL_CS1);
 		rate_ctr_inc(&m_dl_gprs_ctrs->ctr[TBF_CTR_GPRS_DL_CS1]);
 		break;
 	case CS2:
-		bts->gprs_dl_cs2();
+		bts->do_rate_ctr_inc(CTR_GPRS_DL_CS2);
 		rate_ctr_inc(&m_dl_gprs_ctrs->ctr[TBF_CTR_GPRS_DL_CS2]);
 		break;
 	case CS3:
-		bts->gprs_dl_cs3();
+		bts->do_rate_ctr_inc(CTR_GPRS_DL_CS3);
 		rate_ctr_inc(&m_dl_gprs_ctrs->ctr[TBF_CTR_GPRS_DL_CS3]);
 		break;
 	case CS4:
-		bts->gprs_dl_cs4();
+		bts->do_rate_ctr_inc(CTR_GPRS_DL_CS4);
 		rate_ctr_inc(&m_dl_gprs_ctrs->ctr[TBF_CTR_GPRS_DL_CS4]);
 		break;
 	case MCS1:
-		bts->egprs_dl_mcs1();
+		bts->do_rate_ctr_inc(CTR_EGPRS_DL_MCS1);
 		rate_ctr_inc(&m_dl_egprs_ctrs->ctr[TBF_CTR_EGPRS_DL_MCS1]);
 		break;
 	case MCS2:
-		bts->egprs_dl_mcs2();
+		bts->do_rate_ctr_inc(CTR_EGPRS_DL_MCS2);
 		rate_ctr_inc(&m_dl_egprs_ctrs->ctr[TBF_CTR_EGPRS_DL_MCS2]);
 		break;
 	case MCS3:
-		bts->egprs_dl_mcs3();
+		bts->do_rate_ctr_inc(CTR_EGPRS_DL_MCS3);
 		rate_ctr_inc(&m_dl_egprs_ctrs->ctr[TBF_CTR_EGPRS_DL_MCS3]);
 		break;
 	case MCS4:
-		bts->egprs_dl_mcs4();
+		bts->do_rate_ctr_inc(CTR_EGPRS_DL_MCS4);
 		rate_ctr_inc(&m_dl_egprs_ctrs->ctr[TBF_CTR_EGPRS_DL_MCS4]);
 		break;
 	case MCS5:
-		bts->egprs_dl_mcs5();
+		bts->do_rate_ctr_inc(CTR_EGPRS_DL_MCS5);
 		rate_ctr_inc(&m_dl_egprs_ctrs->ctr[TBF_CTR_EGPRS_DL_MCS5]);
 		break;
 	case MCS6:
-		bts->egprs_dl_mcs6();
+		bts->do_rate_ctr_inc(CTR_EGPRS_DL_MCS6);
 		rate_ctr_inc(&m_dl_egprs_ctrs->ctr[TBF_CTR_EGPRS_DL_MCS6]);
 		break;
 	case MCS7:
-		bts->egprs_dl_mcs7();
+		bts->do_rate_ctr_inc(CTR_EGPRS_DL_MCS7);
 		rate_ctr_inc(&m_dl_egprs_ctrs->ctr[TBF_CTR_EGPRS_DL_MCS7]);
 		break;
 	case MCS8:
-		bts->egprs_dl_mcs8();
+		bts->do_rate_ctr_inc(CTR_EGPRS_DL_MCS8);
 		rate_ctr_inc(&m_dl_egprs_ctrs->ctr[TBF_CTR_EGPRS_DL_MCS8]);
 		break;
 	case MCS9:
-		bts->egprs_dl_mcs9();
+		bts->do_rate_ctr_inc(CTR_EGPRS_DL_MCS9);
 		rate_ctr_inc(&m_dl_egprs_ctrs->ctr[TBF_CTR_EGPRS_DL_MCS9]);
 		break;
 	default:
diff --git a/src/tbf_ul.cpp b/src/tbf_ul.cpp
index 020285e..90cbf8d 100644
--- a/src/tbf_ul.cpp
+++ b/src/tbf_ul.cpp
@@ -288,7 +288,7 @@
 				rdbi, rlc->cs, rlc_data, NULL, 0, &new_tlli);
 
 			if (num_chunks < 0) {
-				bts->decode_error();
+				bts->do_rate_ctr_inc(CTR_DECODE_ERRORS);
 				LOGPTBFUL(this, LOGL_NOTICE,
 					  "Failed to decode TLLI of %s UL DATA TFI=%d.\n",
 					  mcs_name(rlc->cs), rlc->tfi);
@@ -428,7 +428,7 @@
 	union split_block_status *spb_status = &block->spb_status;
 	uint8_t *rlc_data = &block->block[0];
 
-        bts->spb_uplink_second_segment();
+        bts->do_rate_ctr_inc(CTR_SPB_UL_SECOND_SEGMENT);
 
 	if (spb_status->block_status_ul &
 				EGPRS_RESEG_FIRST_SEG_RXD) {
@@ -461,7 +461,7 @@
 	uint8_t *rlc_data = &block->block[0];
 	union split_block_status *spb_status = &block->spb_status;
 
-	bts->spb_uplink_first_segment();
+	bts->do_rate_ctr_inc(CTR_SPB_UL_FIRST_SEGMENT);
 
 	if (spb_status->block_status_ul & EGPRS_RESEG_SECOND_SEG_RXD) {
 		LOGPTBFUL(this, LOGL_DEBUG,
@@ -541,55 +541,55 @@
 {
 	switch (cs) {
 	case CS1:
-		bts->gprs_ul_cs1();
+		bts->do_rate_ctr_inc(CTR_GPRS_UL_CS1);
 		rate_ctr_inc(&m_ul_gprs_ctrs->ctr[TBF_CTR_GPRS_UL_CS1]);
 		break;
 	case CS2:
-		bts->gprs_ul_cs2();
+		bts->do_rate_ctr_inc(CTR_GPRS_UL_CS2);
 		rate_ctr_inc(&m_ul_gprs_ctrs->ctr[TBF_CTR_GPRS_UL_CS2]);
 		break;
 	case CS3:
-		bts->gprs_ul_cs3();
+		bts->do_rate_ctr_inc(CTR_GPRS_UL_CS3);
 		rate_ctr_inc(&m_ul_gprs_ctrs->ctr[TBF_CTR_GPRS_UL_CS3]);
 		break;
 	case CS4:
-		bts->gprs_ul_cs4();
+		bts->do_rate_ctr_inc(CTR_GPRS_UL_CS4);
 		rate_ctr_inc(&m_ul_gprs_ctrs->ctr[TBF_CTR_GPRS_UL_CS4]);
 		break;
 	case MCS1:
-		bts->egprs_ul_mcs1();
+		bts->do_rate_ctr_inc(CTR_EGPRS_UL_MCS1);
 		rate_ctr_inc(&m_ul_egprs_ctrs->ctr[TBF_CTR_EGPRS_UL_MCS1]);
 		break;
 	case MCS2:
-		bts->egprs_ul_mcs2();
+		bts->do_rate_ctr_inc(CTR_EGPRS_UL_MCS2);
 		rate_ctr_inc(&m_ul_egprs_ctrs->ctr[TBF_CTR_EGPRS_UL_MCS2]);
 		break;
 	case MCS3:
-		bts->egprs_ul_mcs3();
+		bts->do_rate_ctr_inc(CTR_EGPRS_UL_MCS3);
 		rate_ctr_inc(&m_ul_egprs_ctrs->ctr[TBF_CTR_EGPRS_UL_MCS3]);
 		break;
 	case MCS4:
-		bts->egprs_ul_mcs4();
+		bts->do_rate_ctr_inc(CTR_EGPRS_UL_MCS4);
 		rate_ctr_inc(&m_ul_egprs_ctrs->ctr[TBF_CTR_EGPRS_UL_MCS4]);
 		break;
 	case MCS5:
-		bts->egprs_ul_mcs5();
+		bts->do_rate_ctr_inc(CTR_EGPRS_UL_MCS5);
 		rate_ctr_inc(&m_ul_egprs_ctrs->ctr[TBF_CTR_EGPRS_UL_MCS5]);
 		break;
 	case MCS6:
-		bts->egprs_ul_mcs6();
+		bts->do_rate_ctr_inc(CTR_EGPRS_UL_MCS6);
 		rate_ctr_inc(&m_ul_egprs_ctrs->ctr[TBF_CTR_EGPRS_UL_MCS6]);
 		break;
 	case MCS7:
-		bts->egprs_ul_mcs7();
+		bts->do_rate_ctr_inc(CTR_EGPRS_UL_MCS7);
 		rate_ctr_inc(&m_ul_egprs_ctrs->ctr[TBF_CTR_EGPRS_UL_MCS7]);
 		break;
 	case MCS8:
-		bts->egprs_ul_mcs8();
+		bts->do_rate_ctr_inc(CTR_EGPRS_UL_MCS8);
 		rate_ctr_inc(&m_ul_egprs_ctrs->ctr[TBF_CTR_EGPRS_UL_MCS8]);
 		break;
 	case MCS9:
-		bts->egprs_ul_mcs9();
+		bts->do_rate_ctr_inc(CTR_EGPRS_UL_MCS9);
 		rate_ctr_inc(&m_ul_egprs_ctrs->ctr[TBF_CTR_EGPRS_UL_MCS9]);
 		break;
 	default:

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-pcu/+/18226
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-pcu
Gerrit-Branch: master
Gerrit-Change-Id: I360e322a30edf639aefb3c0f0e4354d98c9035a3
Gerrit-Change-Number: 18226
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin at sysmocom.de>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20200512/e2f48651/attachment.htm>


More information about the gerrit-log mailing list