From fee0351dd3acc762df5449ae63730e35a7164eaf Mon Sep 17 00:00:00 2001 From: Andre Puschmann Date: Wed, 8 Dec 2021 17:27:24 +0100 Subject: [PATCH] Revert "Modify PUSCH power normalization" This reverts commit a4b86e5a0a236567e0de3b794a587a1e738176a4 which causes low UL throughput against Amarisoft (max MCS not achieved over RF). See issue #3723. We need to investigate this again and revert the revert. --- lib/src/phy/ue/ue_ul_nr.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/src/phy/ue/ue_ul_nr.c b/lib/src/phy/ue/ue_ul_nr.c index 16f8a15d2..a93a2e5a2 100644 --- a/lib/src/phy/ue/ue_ul_nr.c +++ b/lib/src/phy/ue/ue_ul_nr.c @@ -133,9 +133,12 @@ int srsran_ue_ul_nr_encode_pusch(srsran_ue_ul_nr_t* q, // Generate signal srsran_ofdm_tx_sf(&q->ifft); - // Scale iFFT output to compensate for iFFT amplification (due to FFTW implementation). - float scaling = 1 / sqrtf(q->ifft.cfg.symbol_sz); - srsran_vec_sc_prod_cfc(q->ifft.cfg.out_buffer, scaling, q->ifft.cfg.out_buffer, q->ifft.sf_sz); + // Normalise to peak + uint32_t max_idx = srsran_vec_max_abs_ci(q->ifft.cfg.out_buffer, q->ifft.sf_sz); + float max_peak = cabsf(q->ifft.cfg.out_buffer[max_idx]); + if (isnormal(max_peak)) { + srsran_vec_sc_prod_cfc(q->ifft.cfg.out_buffer, 0.99f / max_peak, q->ifft.cfg.out_buffer, q->ifft.sf_sz); + } // Apply frequency offset if (isnormal(q->freq_offset_hz)) {