Merge remote-tracking branch 'origin/oai_ue_perf_opt' into integration_2026_w24
UE DL Channel compensation and LLR optimization (#142)
- Common channel compensation: Extracted nr_channel_compensation() as a
shared function (AVX2/MRC inline) used by both gNB and UE PDSCH/PUSCH
paths, eliminating duplicated compensation logic.
- Common ML/MMSE 2-layer MIMO: Created shared ML LLR and MMSE routines
for 2-layer spatial multiplexing, shared between gNB and UE
demodulation.
- File segregation: Moved common LLR and channel compensation functions
into dedicated source files for better modularity and reuse.
- nr_dlsim -E flag: Added a command-line argument to enable/disable
ML/MMSE equalization at runtime (MMSE default), enabling side-by-side
performance comparison without recompilation.
- Persistent UE buffer allocation: pdsch_dl_ch_estimates, rxdataF_comp,
dl_ch_mag,dl_ch_magb,dl_ch_magr and rho_dl are now allocated once in
PHY_VARS_NR_UE on first use, resize automatically when dimensions
change (resizeAllowed=true), and are freed at UE teardown in
term_nr_ue_signal. Eliminates per-slot heap allocation/free overhead.
- PTRS restricted to one antenna port: PTRS phase tracking is only valid
for a single port; processing now correctly restricted to avoid
unnecessary computation.
- Reduce rxdataF_comp buffer size: MRC combines all Rx antenna
contributions into a per-layer output, so the first dimension was
reduced from Nl * nb_antennas_rx to Nl, reducing buffer footprint
proportionally.
- 256QAM segfault fix: nr_256qam_llr() on gNB side used a VLA for LLRs
without alignment, causing AVX2 load faults. Fixed with
attribute((aligned(32))).
Reviewed-by:
Sakthivel Velumani <s.velumani@northeastern.edu>
Showing
This diff is collapsed.
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
Please register or sign in to comment