add rlc metrics to rlc_um

master
Francisco Paisana 4 years ago
parent 82eb31f70f
commit 53116a99fc

@ -13,6 +13,7 @@
#ifndef SRSLTE_RLC_UM_BASE_H #ifndef SRSLTE_RLC_UM_BASE_H
#define SRSLTE_RLC_UM_BASE_H #define SRSLTE_RLC_UM_BASE_H
#include "srslte/adt/accumulators.h"
#include "srslte/common/buffer_pool.h" #include "srslte/common/buffer_pool.h"
#include "srslte/common/common.h" #include "srslte/common/common.h"
#include "srslte/common/log.h" #include "srslte/common/log.h"
@ -84,6 +85,7 @@ protected:
byte_buffer_pool* pool = nullptr; byte_buffer_pool* pool = nullptr;
srslte::log_ref log; srslte::log_ref log;
std::string rb_name; std::string rb_name;
rlc_um_base* parent = nullptr;
rlc_config_t cfg = {}; rlc_config_t cfg = {};
@ -94,6 +96,11 @@ protected:
// Mutexes // Mutexes
std::mutex mutex; std::mutex mutex;
// Metrics
#ifdef ENABLE_TIMESTAMP
srslte::rolling_average<double> mean_pdu_latency_us;
#endif
virtual int build_data_pdu(unique_byte_buffer_t pdu, uint8_t* payload, uint32_t nof_bytes) = 0; virtual int build_data_pdu(unique_byte_buffer_t pdu, uint8_t* payload, uint32_t nof_bytes) = 0;
// helper functions // helper functions

@ -13,7 +13,6 @@
#ifndef SRSLTE_RLC_UM_LTE_H #ifndef SRSLTE_RLC_UM_LTE_H
#define SRSLTE_RLC_UM_LTE_H #define SRSLTE_RLC_UM_LTE_H
#include "srslte/adt/accumulators.h"
#include "srslte/common/buffer_pool.h" #include "srslte/common/buffer_pool.h"
#include "srslte/common/common.h" #include "srslte/common/common.h"
#include "srslte/common/log.h" #include "srslte/common/log.h"
@ -65,9 +64,6 @@ private:
uint32_t vt_us = 0; // Send state. SN to be assigned for next PDU. uint32_t vt_us = 0; // Send state. SN to be assigned for next PDU.
// Metrics // Metrics
#ifdef ENABLE_TIMESTAMP
srslte::rolling_average<double> mean_pdu_latency_us;
#endif
void debug_state(); void debug_state();
}; };

@ -20,12 +20,7 @@ rlc_um_base::rlc_um_base(srslte::log_ref log_,
srsue::pdcp_interface_rlc* pdcp_, srsue::pdcp_interface_rlc* pdcp_,
srsue::rrc_interface_rlc* rrc_, srsue::rrc_interface_rlc* rrc_,
srslte::timer_handler* timers_) : srslte::timer_handler* timers_) :
log(log_), log(log_), lcid(lcid_), pdcp(pdcp_), rrc(rrc_), timers(timers_), pool(byte_buffer_pool::get_instance())
lcid(lcid_),
pdcp(pdcp_),
rrc(rrc_),
timers(timers_),
pool(byte_buffer_pool::get_instance())
{} {}
rlc_um_base::~rlc_um_base() {} rlc_um_base::~rlc_um_base() {}
@ -202,7 +197,9 @@ rlc_um_base::rlc_um_base_rx::~rlc_um_base_rx() {}
* Tx subclass implementation (base) * Tx subclass implementation (base)
***************************************************************************/ ***************************************************************************/
rlc_um_base::rlc_um_base_tx::rlc_um_base_tx(rlc_um_base* parent_) : log(parent_->log), pool(parent_->pool) {} rlc_um_base::rlc_um_base_tx::rlc_um_base_tx(rlc_um_base* parent_) :
log(parent_->log), pool(parent_->pool), parent(parent_)
{}
rlc_um_base::rlc_um_base_tx::~rlc_um_base_tx() {} rlc_um_base::rlc_um_base_tx::~rlc_um_base_tx() {}
@ -303,7 +300,11 @@ int rlc_um_base::rlc_um_base_tx::build_data_pdu(uint8_t* payload, uint32_t nof_b
return 0; return 0;
} }
} }
return build_data_pdu(std::move(pdu), payload, nof_bytes); int len = build_data_pdu(std::move(pdu), payload, nof_bytes);
if (len > 0) {
parent->metrics.sdu_tx_latency_us = mean_pdu_latency_us.value();
}
return len;
} }
} // namespace srslte } // namespace srslte

Loading…
Cancel
Save