From a4d43c249e75abed0156000105dafdc9dfb641f5 Mon Sep 17 00:00:00 2001 From: Roberto Louro Magueta Date: Thu, 16 Feb 2023 17:33:26 +0000 Subject: [PATCH] Update the ad_shift, considering the previous improvement --- openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c b/openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c index ddc20bd055..24b4e21e3a 100644 --- a/openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c +++ b/openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c @@ -1925,7 +1925,13 @@ void nr_rx_pusch(PHY_VARS_gNB *gNB, int off = ((rel15_ul->rb_size&1) == 1)? 4:0; uint32_t rxdataF_ext_offset = 0; uint8_t shift_ch_ext = rel15_ul->nrOfLayers > 1 ? log2_approx(max_ch >> 11) : 0; - uint8_t ad_shift = 1 + log2_approx(frame_parms->nb_antennas_rx >> 2) + (rel15_ul->nrOfLayers == 2); + + int ad_shift = 0; + if (rel15_ul->nrOfLayers == 1) { + ad_shift = 1 + log2_approx(frame_parms->nb_antennas_rx >> 2); + } else { + ad_shift = -3; // For 2-layers, we are already doing a bit shift in the nr_ulsch_zero_forcing_rx_2layers() function, so we can use more bits + } for(uint8_t symbol = rel15_ul->start_symbol_index; symbol < (rel15_ul->start_symbol_index + rel15_ul->nr_of_symbols); symbol++) { uint8_t dmrs_symbol_flag = (rel15_ul->ul_dmrs_symb_pos >> symbol) & 0x01; @@ -1994,7 +2000,10 @@ void nr_rx_pusch(PHY_VARS_gNB *gNB, for (aarx=0;aarxnb_antennas_rx;aarx++) avgs = cmax(avgs,avg[aatx*frame_parms->nb_antennas_rx+aarx]); - gNB->pusch_vars[ulsch_id]->log2_maxh = (log2_approx(avgs) / 2) + ad_shift; + gNB->pusch_vars[ulsch_id]->log2_maxh = (log2_approx(avgs) >> 1) + ad_shift; + if (gNB->pusch_vars[ulsch_id]->log2_maxh < 0) { + gNB->pusch_vars[ulsch_id]->log2_maxh = 0; + } gNB->pusch_vars[ulsch_id]->cl_done = 1; }