Wrong UL BLER Calculations at Low SNR
Check BLER calculations in OAI at low SNRs, sometimes on terminal, a BLER value > 1 In addition, assume the re-transmission (ul_harq_round_max) has been configured to 4 (the default value), the UL BLER calculations are based on the first two rounds only. Look to the below code:
- Path: …/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
- Function: get_mcs_from_bler
- Code:
- // last update is longer than x frames ago
const int dtx = (int)(stats->rounds[0] - bler_stats->rounds[0]);
const int dretx = (int)(stats->rounds[1] - bler_stats->rounds[1]);
const float bler_window = dtx > 0 ? (float) dretx / dtx : bler_stats->bler;
float bler_old = bler_stats->bler;
bler_stats->bler = BLER_FILTER * bler_stats->bler + (1 - BLER_FILTER) * bler_window;
You can see in the above code, only the statistics of rounds[0] and rounds[1] have been taken into account only