Increased RLC UL buffer size

master
Ismael Gomez 6 years ago
parent cf5a6f0580
commit 19ac35d933

@ -43,7 +43,7 @@ void rlc_entity::init(rlc_mode_t mode_,
{
if (buffer_size <= 0) {
buffer_size = 16;
buffer_size = 64;
}
// Create the RLC instance the first time init() is called.
// If called to reestablished, the entity is stopped but not destroyed

@ -111,6 +111,7 @@ public:
uint32_t get_pending_ul_old_data();
uint32_t get_pending_dl_new_data_total(uint32_t tti);
void reset_timeout_dl_harq(uint32_t tti);
dl_harq_proc *get_pending_dl_harq(uint32_t tti);
dl_harq_proc *get_empty_dl_harq();
ul_harq_proc *get_ul_harq(uint32_t tti);

@ -9,7 +9,7 @@ mac_cnfg =
ulsch_cnfg =
{
max_harq_tx = 4;
periodic_bsr_timer = 40; // in ms
periodic_bsr_timer = 20; // in ms
retx_bsr_timer = 320; // in ms
};
@ -26,9 +26,9 @@ phy_cnfg =
pusch_cnfg_ded =
{
beta_offset_ack_idx = 10;
beta_offset_ri_idx = 5;
beta_offset_cqi_idx = 10;
beta_offset_ack_idx = 6;
beta_offset_ri_idx = 6;
beta_offset_cqi_idx = 6;
};
// PUCCH-SR resources are scheduled on time-frequeny domain first, then multiplexed in the same resource.

@ -47,13 +47,13 @@ sib2 =
high_speed_flag = false;
prach_config_index = 3;
prach_freq_offset = 2;
zero_correlation_zone_config = 11;
zero_correlation_zone_config = 5;
};
};
pdsch_cnfg =
{
p_b = 0;
rs_power = -10;
rs_power = 0;
};
pusch_cnfg =
{

@ -332,7 +332,7 @@ int mac::ack_info(uint32_t tti, uint16_t rnti, uint32_t tb_idx, bool ack)
if (ack) {
if (nof_bytes > 64) { // do not count RLC status messages only
rrc_h->set_activity_user(rnti);
log_h->info("DL activity rnti=0x%x, n_bytes=%d\n", rnti, nof_bytes);
log_h->debug("DL activity rnti=0x%x, n_bytes=%d\n", rnti, nof_bytes);
}
}
pthread_rwlock_unlock(&rwlock);

@ -679,8 +679,14 @@ int sched::dl_sched_data(dl_sched_data_t data[MAX_DATA_LIST])
}
Warning("SCHED: Could not schedule DL DCI for rnti=0x%x, pid=%d, cfi=%d\n", rnti, h->get_id(), current_cfi);
}
}
}
}
// Reset blocked PIDs
user->reset_timeout_dl_harq(current_tti);
}
return nof_data_elems;
}

@ -383,7 +383,7 @@ void sched_ue::ul_recv_len(uint32_t lcid, uint32_t len)
if (lch[lcid].bsr > (int) len) {
lch[lcid].bsr -= len;
} else {
lch[lcid].bsr = 0;
lch[lcid].bsr = 0;
}
}
}
@ -987,6 +987,19 @@ bool sched_ue::is_sr_triggered()
return sr;
}
void sched_ue::reset_timeout_dl_harq(uint32_t tti) {
for (int i=0;i<SCHED_MAX_HARQ_PROC;i++) {
if (!(dl_harq[i].is_empty(0) && dl_harq[i].is_empty(1))) {
log_h->info("SCHED: pid=%d is empty\n", i);
if (srslte_tti_interval(tti, dl_harq[i].get_tti()) > 50) {
log_h->info("SCHED: pid=%d is old. tti_pid=%d, now is %d, resetting\n", i, dl_harq[i].get_tti(), tti);
dl_harq[i].reset(0);
dl_harq[i].reset(1);
}
}
}
}
/* Gets HARQ process with oldest pending retx */
dl_harq_proc* sched_ue::get_pending_dl_harq(uint32_t tti)
{

@ -188,12 +188,12 @@ void ue::process_pdu(uint8_t* pdu, uint32_t nof_bytes, srslte::pdu_queue::channe
}
// Indicate scheduler to update BSR counters
sched->ul_recv_len(rnti, mac_msg_ul.get()->get_sdu_lcid(), mac_msg_ul.get()->get_payload_size());
//sched->ul_recv_len(rnti, mac_msg_ul.get()->get_sdu_lcid(), mac_msg_ul.get()->get_payload_size());
// Indicate RRC about successful activity if valid RLC message is received
if (mac_msg_ul.get()->get_payload_size() > 64) { // do not count RLC status messages only
rrc->set_activity_user(rnti);
log_h->info("UL activity rnti=0x%x, n_bytes=%d\n", rnti, nof_bytes);
log_h->debug("UL activity rnti=0x%x, n_bytes=%d\n", rnti, nof_bytes);
}
if ((int) mac_msg_ul.get()->get_payload_size() > most_data) {

@ -209,7 +209,11 @@ bool bsr_proc::generate_bsr(bsr_t *bsr, uint32_t nof_padding_bytes) {
if (nof_lcg > 1) {
bsr->format = LONG_BSR;
}
}
}
Info("BSR: Type %s, Format %s, Value=%d,%d,%d,%d\n",
bsr_type_tostring(triggered_bsr_type), bsr_format_tostring(bsr->format),
bsr->buff_size[0], bsr->buff_size[1], bsr->buff_size[2], bsr->buff_size[3]);
return ret;
}
@ -337,10 +341,7 @@ bool bsr_proc::generate_padding_bsr(uint32_t nof_padding_bytes, bsr_t *bsr)
}
generate_bsr(bsr, nof_padding_bytes);
ret = true;
Info("BSR: Type %s, Format %s, Value=%d,%d,%d,%d\n",
bsr_type_tostring(triggered_bsr_type), bsr_format_tostring(bsr->format),
bsr->buff_size[0], bsr->buff_size[1], bsr->buff_size[2], bsr->buff_size[3]);
if (timers_db->get(timer_periodic_id)->get_timeout() && bsr->format != TRUNC_BSR) {
timers_db->get(timer_periodic_id)->reset();
timers_db->get(timer_periodic_id)->run();

Loading…
Cancel
Save