bugfix, scheduler: effectively disable adaptive mcs when target bler is unspecified

This commit is contained in:
Francisco 2021-05-24 20:15:59 +01:00 committed by Ismael Gomez
parent c75777c618
commit 4627ae9802
2 changed files with 12 additions and 8 deletions

View File

@ -191,8 +191,8 @@ private:
int pending_delta = 0;
int acc_tpc_values = 0;
explicit ul_ch_snr_estim(float target_ul_snr = -1) :
snr_avg(0.1, target_ul_snr), win_tpc_values(FDD_HARQ_DELAY_UL_MS + FDD_HARQ_DELAY_DL_MS)
explicit ul_ch_snr_estim(float initial_snr) :
snr_avg(0.1, initial_snr < 0 ? 5 : initial_snr), win_tpc_values(FDD_HARQ_DELAY_UL_MS + FDD_HARQ_DELAY_DL_MS)
{}
};
std::array<ul_ch_snr_estim, nof_ul_ch_code> snr_estim_list;

View File

@ -184,9 +184,11 @@ int sched_ue_cell::set_ul_crc(tti_point tti_rx, bool crc_res)
return SRSRAN_ERROR;
}
ul_snr_coeff += delta_down - static_cast<float>(not crc_res) * (delta_down + delta_up);
ul_snr_coeff = std::min(std::max(-max_snr_coeff, ul_snr_coeff), max_snr_coeff);
logger.info("SCHED: UL adaptive link: snr_estim=%f, snr_offset=%f", tpc_fsm.get_ul_snr_estim(), ul_snr_coeff);
if (cell_cfg->sched_cfg->target_bler > 0) {
ul_snr_coeff += delta_down - static_cast<float>(not crc_res) * (delta_down + delta_up);
ul_snr_coeff = std::min(std::max(-max_snr_coeff, ul_snr_coeff), max_snr_coeff);
logger.info("SCHED: UL adaptive link: snr_estim=%f, snr_offset=%f", tpc_fsm.get_ul_snr_estim(), ul_snr_coeff);
}
return pid;
}
@ -199,9 +201,11 @@ int sched_ue_cell::set_ack_info(tti_point tti_rx, uint32_t tb_idx, bool ack)
logger.debug(
"SCHED: Set DL ACK=%d for rnti=0x%x, pid=%d, tb=%d, tti=%d", ack, rnti, p2.first, tb_idx, tti_rx.to_uint());
dl_cqi_coeff += delta_down - static_cast<float>(not ack) * (delta_down + delta_up);
dl_cqi_coeff = std::min(std::max(-max_cqi_coeff, dl_cqi_coeff), max_cqi_coeff);
logger.info("SCHED: DL adaptive link: cqi=%d, cqi_offset=%f", dl_cqi_ctxt.get_avg_cqi(), dl_cqi_coeff);
if (cell_cfg->sched_cfg->target_bler > 0) {
dl_cqi_coeff += delta_down - static_cast<float>(not ack) * (delta_down + delta_up);
dl_cqi_coeff = std::min(std::max(-max_cqi_coeff, dl_cqi_coeff), max_cqi_coeff);
logger.info("SCHED: DL adaptive link: cqi=%d, cqi_offset=%f", dl_cqi_ctxt.get_avg_cqi(), dl_cqi_coeff);
}
} else {
logger.warning("SCHED: Received ACK info for unknown TTI=%d", tti_rx.to_uint());
}