mirror of https://github.com/PentHertz/srsLTE.git
renaming lch_manager -> lch_ue_manager
This commit is contained in:
parent
a348508072
commit
bb96625129
|
@ -28,7 +28,7 @@
|
|||
|
||||
namespace srsenb {
|
||||
|
||||
class lch_manager
|
||||
class lch_ue_manager
|
||||
{
|
||||
constexpr static uint32_t pbr_infinity = -1;
|
||||
constexpr static uint32_t MAX_LC = sched_interface::MAX_LC;
|
||||
|
@ -91,8 +91,10 @@ private:
|
|||
* @param tbidx index of TB
|
||||
* @return allocated bytes, which is always equal or lower than total_tbs
|
||||
*/
|
||||
uint32_t
|
||||
allocate_mac_sdus(sched_interface::dl_sched_data_t* data, lch_manager& lch_handler, uint32_t total_tbs, uint32_t tbidx);
|
||||
uint32_t allocate_mac_sdus(sched_interface::dl_sched_data_t* data,
|
||||
lch_ue_manager& lch_handler,
|
||||
uint32_t total_tbs,
|
||||
uint32_t tbidx);
|
||||
|
||||
/**
|
||||
* Allocate space for pending MAC CEs
|
||||
|
@ -101,7 +103,7 @@ allocate_mac_sdus(sched_interface::dl_sched_data_t* data, lch_manager& lch_handl
|
|||
* @return number of bytes allocated
|
||||
*/
|
||||
uint32_t allocate_mac_ces(sched_interface::dl_sched_data_t* data,
|
||||
lch_manager& lch_handler,
|
||||
lch_ue_manager& lch_handler,
|
||||
uint32_t total_tbs,
|
||||
uint32_t ue_cc_idx);
|
||||
|
||||
|
|
|
@ -254,7 +254,7 @@ private:
|
|||
|
||||
/* Buffer states */
|
||||
bool sr = false;
|
||||
lch_manager lch_handler;
|
||||
lch_ue_manager lch_handler;
|
||||
|
||||
int power_headroom = 0;
|
||||
uint32_t cqi_request_tti = 0;
|
||||
|
|
|
@ -79,14 +79,14 @@ const char* to_string(sched_interface::ue_bearer_cfg_t::direction_t dir)
|
|||
}
|
||||
}
|
||||
|
||||
void lch_manager::set_cfg(const sched_interface::ue_cfg_t& cfg)
|
||||
void lch_ue_manager::set_cfg(const sched_interface::ue_cfg_t& cfg)
|
||||
{
|
||||
for (uint32_t lcid = 0; lcid < sched_interface::MAX_LC; lcid++) {
|
||||
config_lcid(lcid, cfg.ue_bearers[lcid]);
|
||||
}
|
||||
}
|
||||
|
||||
void lch_manager::new_tti()
|
||||
void lch_ue_manager::new_tti()
|
||||
{
|
||||
prio_idx++;
|
||||
for (uint32_t lcid = 0; lcid < sched_interface::MAX_LC; ++lcid) {
|
||||
|
@ -98,7 +98,7 @@ void lch_manager::new_tti()
|
|||
}
|
||||
}
|
||||
|
||||
void lch_manager::config_lcid(uint32_t lc_id, const sched_interface::ue_bearer_cfg_t& bearer_cfg)
|
||||
void lch_ue_manager::config_lcid(uint32_t lc_id, const sched_interface::ue_bearer_cfg_t& bearer_cfg)
|
||||
{
|
||||
if (lc_id >= sched_interface::MAX_LC) {
|
||||
Warning("Adding bearer with invalid logical channel id=%d\n", lc_id);
|
||||
|
@ -128,7 +128,7 @@ void lch_manager::config_lcid(uint32_t lc_id, const sched_interface::ue_bearer_c
|
|||
}
|
||||
}
|
||||
|
||||
void lch_manager::ul_bsr(uint8_t lcg_id, uint32_t bsr)
|
||||
void lch_ue_manager::ul_bsr(uint8_t lcg_id, uint32_t bsr)
|
||||
{
|
||||
if (lcg_id >= sched_interface::MAX_LC_GROUP) {
|
||||
Warning("The provided logical channel group id=%d is not valid\n", lcg_id);
|
||||
|
@ -138,7 +138,7 @@ void lch_manager::ul_bsr(uint8_t lcg_id, uint32_t bsr)
|
|||
Debug("SCHED: bsr=%d, lcg_id=%d, bsr=%s\n", bsr, lcg_id, get_bsr_text().c_str());
|
||||
}
|
||||
|
||||
void lch_manager::ul_buffer_add(uint8_t lcid, uint32_t bytes)
|
||||
void lch_ue_manager::ul_buffer_add(uint8_t lcid, uint32_t bytes)
|
||||
{
|
||||
if (lcid >= sched_interface::MAX_LC) {
|
||||
Warning("The provided lcid=%d is not valid\n", lcid);
|
||||
|
@ -148,7 +148,7 @@ void lch_manager::ul_buffer_add(uint8_t lcid, uint32_t bytes)
|
|||
Debug("SCHED: UL buffer update=%d, lcg_id=%d, bsr=%s\n", bytes, lch[lcid].cfg.group, get_bsr_text().c_str());
|
||||
}
|
||||
|
||||
void lch_manager::dl_buffer_state(uint8_t lcid, uint32_t tx_queue, uint32_t retx_queue)
|
||||
void lch_ue_manager::dl_buffer_state(uint8_t lcid, uint32_t tx_queue, uint32_t retx_queue)
|
||||
{
|
||||
if (lcid >= sched_interface::MAX_LC) {
|
||||
Warning("The provided lcid=%d is not valid\n", lcid);
|
||||
|
@ -159,7 +159,7 @@ void lch_manager::dl_buffer_state(uint8_t lcid, uint32_t tx_queue, uint32_t retx
|
|||
Debug("SCHED: DL lcid=%d buffer_state=%d,%d\n", lcid, tx_queue, retx_queue);
|
||||
}
|
||||
|
||||
int lch_manager::get_max_prio_lcid() const
|
||||
int lch_ue_manager::get_max_prio_lcid() const
|
||||
{
|
||||
int min_prio_val = std::numeric_limits<int>::max(), prio_lcid = -1;
|
||||
|
||||
|
@ -208,7 +208,7 @@ int lch_manager::get_max_prio_lcid() const
|
|||
}
|
||||
|
||||
/// Allocates first available RLC PDU
|
||||
int lch_manager::alloc_rlc_pdu(sched_interface::dl_sched_pdu_t* rlc_pdu, int rem_bytes)
|
||||
int lch_ue_manager::alloc_rlc_pdu(sched_interface::dl_sched_pdu_t* rlc_pdu, int rem_bytes)
|
||||
{
|
||||
int alloc_bytes = 0;
|
||||
int lcid = get_max_prio_lcid();
|
||||
|
@ -237,7 +237,7 @@ int lch_manager::alloc_rlc_pdu(sched_interface::dl_sched_pdu_t* rlc_pdu, int rem
|
|||
return alloc_bytes;
|
||||
}
|
||||
|
||||
int lch_manager::alloc_retx_bytes(uint8_t lcid, int rem_bytes)
|
||||
int lch_ue_manager::alloc_retx_bytes(uint8_t lcid, int rem_bytes)
|
||||
{
|
||||
const int rlc_overhead = (lcid == 0) ? 0 : RLC_MAX_HEADER_SIZE_NO_LI;
|
||||
if (rem_bytes <= rlc_overhead) {
|
||||
|
@ -249,7 +249,7 @@ int lch_manager::alloc_retx_bytes(uint8_t lcid, int rem_bytes)
|
|||
return alloc + (alloc > 0 ? rlc_overhead : 0);
|
||||
}
|
||||
|
||||
int lch_manager::alloc_tx_bytes(uint8_t lcid, int rem_bytes)
|
||||
int lch_ue_manager::alloc_tx_bytes(uint8_t lcid, int rem_bytes)
|
||||
{
|
||||
const int rlc_overhead = (lcid == 0) ? 0 : RLC_MAX_HEADER_SIZE_NO_LI;
|
||||
if (rem_bytes <= rlc_overhead) {
|
||||
|
@ -265,22 +265,22 @@ int lch_manager::alloc_tx_bytes(uint8_t lcid, int rem_bytes)
|
|||
return alloc + (alloc > 0 ? rlc_overhead : 0);
|
||||
}
|
||||
|
||||
bool lch_manager::is_bearer_active(uint32_t lcid) const
|
||||
bool lch_ue_manager::is_bearer_active(uint32_t lcid) const
|
||||
{
|
||||
return lch[lcid].cfg.direction != sched_interface::ue_bearer_cfg_t::IDLE;
|
||||
}
|
||||
|
||||
bool lch_manager::is_bearer_ul(uint32_t lcid) const
|
||||
bool lch_ue_manager::is_bearer_ul(uint32_t lcid) const
|
||||
{
|
||||
return is_bearer_active(lcid) and lch[lcid].cfg.direction != sched_interface::ue_bearer_cfg_t::DL;
|
||||
}
|
||||
|
||||
bool lch_manager::is_bearer_dl(uint32_t lcid) const
|
||||
bool lch_ue_manager::is_bearer_dl(uint32_t lcid) const
|
||||
{
|
||||
return is_bearer_active(lcid) and lch[lcid].cfg.direction != sched_interface::ue_bearer_cfg_t::UL;
|
||||
}
|
||||
|
||||
bool lch_manager::has_pending_dl_txs() const
|
||||
bool lch_ue_manager::has_pending_dl_txs() const
|
||||
{
|
||||
if (not pending_ces.empty()) {
|
||||
return true;
|
||||
|
@ -293,7 +293,7 @@ bool lch_manager::has_pending_dl_txs() const
|
|||
return false;
|
||||
}
|
||||
|
||||
int lch_manager::get_dl_tx_total() const
|
||||
int lch_ue_manager::get_dl_tx_total() const
|
||||
{
|
||||
int sum = 0;
|
||||
for (size_t lcid = 0; lcid < lch.size(); ++lcid) {
|
||||
|
@ -302,48 +302,50 @@ int lch_manager::get_dl_tx_total() const
|
|||
return sum;
|
||||
}
|
||||
|
||||
int lch_manager::get_dl_tx_total_with_overhead(uint32_t lcid) const
|
||||
int lch_ue_manager::get_dl_tx_total_with_overhead(uint32_t lcid) const
|
||||
{
|
||||
return get_dl_retx_with_overhead(lcid) + get_dl_tx_with_overhead(lcid);
|
||||
}
|
||||
|
||||
int lch_manager::get_dl_tx(uint32_t lcid) const
|
||||
int lch_ue_manager::get_dl_tx(uint32_t lcid) const
|
||||
{
|
||||
return is_bearer_dl(lcid) ? lch[lcid].buf_tx : 0;
|
||||
}
|
||||
int lch_manager::get_dl_tx_with_overhead(uint32_t lcid) const
|
||||
int lch_ue_manager::get_dl_tx_with_overhead(uint32_t lcid) const
|
||||
{
|
||||
return get_mac_sdu_size_with_overhead(lcid, get_dl_tx(lcid));
|
||||
}
|
||||
|
||||
int lch_manager::get_dl_retx(uint32_t lcid) const
|
||||
int lch_ue_manager::get_dl_retx(uint32_t lcid) const
|
||||
{
|
||||
return is_bearer_dl(lcid) ? lch[lcid].buf_retx : 0;
|
||||
}
|
||||
int lch_manager::get_dl_retx_with_overhead(uint32_t lcid) const
|
||||
int lch_ue_manager::get_dl_retx_with_overhead(uint32_t lcid) const
|
||||
{
|
||||
return get_mac_sdu_size_with_overhead(lcid, get_dl_retx(lcid));
|
||||
}
|
||||
|
||||
int lch_manager::get_bsr(uint32_t lcid) const
|
||||
int lch_ue_manager::get_bsr(uint32_t lcid) const
|
||||
{
|
||||
return is_bearer_ul(lcid) ? lcg_bsr[lch[lcid].cfg.group] : 0;
|
||||
}
|
||||
int lch_manager::get_bsr_with_overhead(uint32_t lcid) const
|
||||
int lch_ue_manager::get_bsr_with_overhead(uint32_t lcid) const
|
||||
{
|
||||
int bsr = get_bsr(lcid);
|
||||
return bsr + (bsr == 0 ? 0 : ((lcid == 0) ? 0 : RLC_MAX_HEADER_SIZE_NO_LI));
|
||||
}
|
||||
|
||||
std::string lch_manager::get_bsr_text() const
|
||||
std::string lch_ue_manager::get_bsr_text() const
|
||||
{
|
||||
std::stringstream ss;
|
||||
ss << "{" << lcg_bsr[0] << ", " << lcg_bsr[1] << ", " << lcg_bsr[2] << ", " << lcg_bsr[3] << "}";
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
uint32_t
|
||||
allocate_mac_sdus(sched_interface::dl_sched_data_t* data, lch_manager& lch_handler, uint32_t total_tbs, uint32_t tbidx)
|
||||
uint32_t allocate_mac_sdus(sched_interface::dl_sched_data_t* data,
|
||||
lch_ue_manager& lch_handler,
|
||||
uint32_t total_tbs,
|
||||
uint32_t tbidx)
|
||||
{
|
||||
uint32_t rem_tbs = total_tbs;
|
||||
|
||||
|
@ -363,7 +365,7 @@ allocate_mac_sdus(sched_interface::dl_sched_data_t* data, lch_manager& lch_handl
|
|||
}
|
||||
|
||||
uint32_t allocate_mac_ces(sched_interface::dl_sched_data_t* data,
|
||||
lch_manager& lch_handler,
|
||||
lch_ue_manager& lch_handler,
|
||||
uint32_t total_tbs,
|
||||
uint32_t ue_cc_idx)
|
||||
{
|
||||
|
|
|
@ -264,9 +264,9 @@ void sched_ue::dl_buffer_state(uint8_t lc_id, uint32_t tx_queue, uint32_t retx_q
|
|||
|
||||
void sched_ue::mac_buffer_state(uint32_t ce_code, uint32_t nof_cmds)
|
||||
{
|
||||
auto cmd = (lch_manager::ce_cmd)ce_code;
|
||||
auto cmd = (lch_ue_manager::ce_cmd)ce_code;
|
||||
for (uint32_t i = 0; i < nof_cmds; ++i) {
|
||||
if (cmd == lch_manager::ce_cmd::CON_RES_ID) {
|
||||
if (cmd == lch_ue_manager::ce_cmd::CON_RES_ID) {
|
||||
lch_handler.pending_ces.push_front(cmd);
|
||||
} else {
|
||||
lch_handler.pending_ces.push_back(cmd);
|
||||
|
@ -946,7 +946,7 @@ srslte::interval<uint32_t> sched_ue::get_requested_dl_bytes(uint32_t ue_cc_idx)
|
|||
// Wait for SRB0 data to be available for Msg4 before scheduling the ConRes CE
|
||||
return {};
|
||||
}
|
||||
for (const lch_manager::ce_cmd& ce : lch_handler.pending_ces) {
|
||||
for (const lch_ue_manager::ce_cmd& ce : lch_handler.pending_ces) {
|
||||
sum_ce_data += srslte::ce_total_size(ce);
|
||||
}
|
||||
}
|
||||
|
@ -958,7 +958,7 @@ srslte::interval<uint32_t> sched_ue::get_requested_dl_bytes(uint32_t ue_cc_idx)
|
|||
|
||||
/* Set Minimum boundary */
|
||||
min_data = srb0_data;
|
||||
if (not lch_handler.pending_ces.empty() and lch_handler.pending_ces.front() == lch_manager::ce_cmd::CON_RES_ID) {
|
||||
if (not lch_handler.pending_ces.empty() and lch_handler.pending_ces.front() == lch_ue_manager::ce_cmd::CON_RES_ID) {
|
||||
min_data += srslte::ce_total_size(lch_handler.pending_ces.front());
|
||||
}
|
||||
if (min_data == 0) {
|
||||
|
|
|
@ -28,7 +28,7 @@ using namespace srsenb;
|
|||
const uint32_t seed = std::chrono::system_clock::now().time_since_epoch().count();
|
||||
|
||||
/// Tests if a PDU was allocated with lcid and pdu_size bytes
|
||||
int test_pdu_alloc_successful(srsenb::lch_manager& lch_handler,
|
||||
int test_pdu_alloc_successful(srsenb::lch_ue_manager& lch_handler,
|
||||
sched_interface::dl_sched_pdu_t& pdu,
|
||||
int lcid,
|
||||
uint32_t pdu_size)
|
||||
|
@ -40,7 +40,7 @@ int test_pdu_alloc_successful(srsenb::lch_manager& lch_handler,
|
|||
return SRSLTE_SUCCESS;
|
||||
}
|
||||
|
||||
int test_retx_until_empty(srsenb::lch_manager& lch_handler, int lcid, uint32_t pdu_size)
|
||||
int test_retx_until_empty(srsenb::lch_ue_manager& lch_handler, int lcid, uint32_t pdu_size)
|
||||
{
|
||||
uint32_t nof_pdus = lch_handler.get_dl_retx(lcid) / pdu_size;
|
||||
sched_interface::dl_sched_pdu_t pdu;
|
||||
|
@ -52,7 +52,7 @@ int test_retx_until_empty(srsenb::lch_manager& lch_handler, int lcid, uint32_t p
|
|||
return nof_pdus * pdu_size;
|
||||
}
|
||||
|
||||
int test_newtx_until_empty(srsenb::lch_manager& lch_handler, int lcid, uint32_t pdu_size)
|
||||
int test_newtx_until_empty(srsenb::lch_ue_manager& lch_handler, int lcid, uint32_t pdu_size)
|
||||
{
|
||||
uint32_t nof_pdus = lch_handler.get_dl_tx(lcid) / pdu_size;
|
||||
sched_interface::dl_sched_pdu_t pdu;
|
||||
|
@ -66,7 +66,7 @@ int test_newtx_until_empty(srsenb::lch_manager& lch_handler, int lcid, uint32_t
|
|||
|
||||
int test_lc_ch_pbr_infinity()
|
||||
{
|
||||
srsenb::lch_manager lch_handler;
|
||||
srsenb::lch_ue_manager lch_handler;
|
||||
|
||||
srsenb::sched_interface::ue_cfg_t ue_cfg = generate_default_ue_cfg();
|
||||
ue_cfg = generate_setup_ue_cfg(ue_cfg);
|
||||
|
@ -115,7 +115,7 @@ int test_lc_ch_pbr_infinity()
|
|||
|
||||
int test_lc_ch_pbr_finite()
|
||||
{
|
||||
srsenb::lch_manager lch_handler;
|
||||
srsenb::lch_ue_manager lch_handler;
|
||||
sched_interface::dl_sched_pdu_t pdu;
|
||||
|
||||
srsenb::sched_interface::ue_cfg_t ue_cfg = generate_default_ue_cfg();
|
||||
|
|
Loading…
Reference in New Issue