Increased RLC UL buffer size

master
Ismael Gomez 7 years ago
parent cf5a6f0580
commit 19ac35d933

@ -43,7 +43,7 @@ void rlc_entity::init(rlc_mode_t mode_,
{ {
if (buffer_size <= 0) { if (buffer_size <= 0) {
buffer_size = 16; buffer_size = 64;
} }
// Create the RLC instance the first time init() is called. // Create the RLC instance the first time init() is called.
// If called to reestablished, the entity is stopped but not destroyed // 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_ul_old_data();
uint32_t get_pending_dl_new_data_total(uint32_t tti); 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_pending_dl_harq(uint32_t tti);
dl_harq_proc *get_empty_dl_harq(); dl_harq_proc *get_empty_dl_harq();
ul_harq_proc *get_ul_harq(uint32_t tti); ul_harq_proc *get_ul_harq(uint32_t tti);

@ -9,7 +9,7 @@ mac_cnfg =
ulsch_cnfg = ulsch_cnfg =
{ {
max_harq_tx = 4; max_harq_tx = 4;
periodic_bsr_timer = 40; // in ms periodic_bsr_timer = 20; // in ms
retx_bsr_timer = 320; // in ms retx_bsr_timer = 320; // in ms
}; };
@ -26,9 +26,9 @@ phy_cnfg =
pusch_cnfg_ded = pusch_cnfg_ded =
{ {
beta_offset_ack_idx = 10; beta_offset_ack_idx = 6;
beta_offset_ri_idx = 5; beta_offset_ri_idx = 6;
beta_offset_cqi_idx = 10; beta_offset_cqi_idx = 6;
}; };
// PUCCH-SR resources are scheduled on time-frequeny domain first, then multiplexed in the same resource. // 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; high_speed_flag = false;
prach_config_index = 3; prach_config_index = 3;
prach_freq_offset = 2; prach_freq_offset = 2;
zero_correlation_zone_config = 11; zero_correlation_zone_config = 5;
}; };
}; };
pdsch_cnfg = pdsch_cnfg =
{ {
p_b = 0; p_b = 0;
rs_power = -10; rs_power = 0;
}; };
pusch_cnfg = 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 (ack) {
if (nof_bytes > 64) { // do not count RLC status messages only if (nof_bytes > 64) { // do not count RLC status messages only
rrc_h->set_activity_user(rnti); 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); pthread_rwlock_unlock(&rwlock);

@ -680,8 +680,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); 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; return nof_data_elems;
} }

@ -987,6 +987,19 @@ bool sched_ue::is_sr_triggered()
return sr; 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 */ /* Gets HARQ process with oldest pending retx */
dl_harq_proc* sched_ue::get_pending_dl_harq(uint32_t tti) 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 // 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 // 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 if (mac_msg_ul.get()->get_payload_size() > 64) { // do not count RLC status messages only
rrc->set_activity_user(rnti); 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) { if ((int) mac_msg_ul.get()->get_payload_size() > most_data) {

@ -210,6 +210,10 @@ bool bsr_proc::generate_bsr(bsr_t *bsr, uint32_t nof_padding_bytes) {
bsr->format = LONG_BSR; 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; return ret;
} }
@ -337,9 +341,6 @@ bool bsr_proc::generate_padding_bsr(uint32_t nof_padding_bytes, bsr_t *bsr)
} }
generate_bsr(bsr, nof_padding_bytes); generate_bsr(bsr, nof_padding_bytes);
ret = true; 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) { 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)->reset();

Loading…
Cancel
Save