aboutsummaryrefslogtreecommitdiffstats
path: root/src/tbf.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/tbf.cpp')
-rw-r--r--src/tbf.cpp45
1 files changed, 44 insertions, 1 deletions
diff --git a/src/tbf.cpp b/src/tbf.cpp
index 60fba68..0e4d6cc 100644
--- a/src/tbf.cpp
+++ b/src/tbf.cpp
@@ -66,6 +66,25 @@ static const struct rate_ctr_desc tbf_dl_egprs_ctr_description[] = {
{ "egprs.downlink.mcs9", "MCS9 " },
};
+static const struct rate_ctr_desc tbf_ul_gprs_ctr_description[] = {
+ { "gprs.uplink.cs1", "CS1 " },
+ { "gprs.uplink.cs2", "CS2 " },
+ { "gprs.uplink.cs3", "CS3 " },
+ { "gprs.uplink.cs4", "CS4 " },
+};
+
+static const struct rate_ctr_desc tbf_ul_egprs_ctr_description[] = {
+ { "egprs.uplink.mcs1", "MCS1 " },
+ { "egprs.uplink.mcs2", "MCS2 " },
+ { "egprs.uplink.mcs3", "MCS3 " },
+ { "egprs.uplink.mcs4", "MCS4 " },
+ { "egprs.uplink.mcs5", "MCS5 " },
+ { "egprs.uplink.mcs6", "MCS6 " },
+ { "egprs.uplink.mcs7", "MCS7 " },
+ { "egprs.uplink.mcs8", "MCS8 " },
+ { "egprs.uplink.mcs9", "MCS9 " },
+};
+
static const struct rate_ctr_group_desc tbf_ctrg_desc = {
"pcu.tbf",
"TBF Statistics",
@@ -90,6 +109,22 @@ static const struct rate_ctr_group_desc tbf_dl_egprs_ctrg_desc = {
tbf_dl_egprs_ctr_description,
};
+static const struct rate_ctr_group_desc tbf_ul_gprs_ctrg_desc = {
+ "tbf.gprs",
+ "Data Blocks",
+ OSMO_STATS_CLASS_SUBSCRIBER,
+ ARRAY_SIZE(tbf_ul_gprs_ctr_description),
+ tbf_ul_gprs_ctr_description,
+};
+
+static const struct rate_ctr_group_desc tbf_ul_egprs_ctrg_desc = {
+ "tbf.egprs",
+ "Data Blocks",
+ OSMO_STATS_CLASS_SUBSCRIBER,
+ ARRAY_SIZE(tbf_ul_egprs_ctr_description),
+ tbf_ul_egprs_ctr_description,
+};
+
gprs_rlcmac_tbf::Meas::Meas() :
rssi_sum(0),
rssi_num(0)
@@ -370,9 +405,12 @@ void tbf_free(struct gprs_rlcmac_tbf *tbf)
{
/* update counters */
if (tbf->direction == GPRS_RLCMAC_UL_TBF) {
+ gprs_rlcmac_ul_tbf *ul_tbf = as_ul_tbf(tbf);
tbf->bts->tbf_ul_freed();
if (tbf->state_is(GPRS_RLCMAC_FLOW))
tbf->bts->tbf_ul_aborted();
+ rate_ctr_group_free(ul_tbf->m_ul_egprs_ctrs);
+ rate_ctr_group_free(ul_tbf->m_ul_gprs_ctrs);
} else {
gprs_rlcmac_dl_tbf *dl_tbf = as_dl_tbf(tbf);
if (tbf->is_egprs_enabled()) {
@@ -713,7 +751,9 @@ gprs_rlcmac_ul_tbf::gprs_rlcmac_ul_tbf(BTS *bts_) :
m_rx_counter(0),
m_n3103(0),
m_contention_resolution_done(0),
- m_final_ack_sent(0)
+ m_final_ack_sent(0),
+ m_ul_gprs_ctrs(NULL),
+ m_ul_egprs_ctrs(NULL)
{
memset(&m_usf, 0, sizeof(m_usf));
}
@@ -782,6 +822,9 @@ struct gprs_rlcmac_ul_tbf *tbf_alloc_ul_tbf(struct gprs_rlcmac_bts *bts,
return NULL;
}
+ tbf->m_ul_egprs_ctrs = rate_ctr_group_alloc(tbf, &tbf_ul_egprs_ctrg_desc, 0);
+ tbf->m_ul_gprs_ctrs = rate_ctr_group_alloc(tbf, &tbf_ul_gprs_ctrg_desc, 0);
+
llist_add(&tbf->list(), &bts->bts->ul_tbfs());
tbf->bts->tbf_ul_created();