ptrs: limit PTRS processing to one antenna port

The current state of PTRS will not work for multiple antenna ports because the function assumes rxdataF_comp has signal for all antenna ports but it doesn't as we do MRC after DMRS compensation.

Signed-off-by: Rupanjali <rupanjali.srivastava@openairinterface.org>
This commit is contained in:
Rupanjali
2026-06-05 11:43:34 -04:00
parent 039b008676
commit d2bbf09121
3 changed files with 15 additions and 11 deletions

View File

@@ -272,15 +272,14 @@ static void inner_rx(PHY_VARS_gNB *gNB,
rel15_ul->qam_mod_order);
nr_idft((int32_t *)&pusch_vars->rxdataF_comp[0][symbol * buffer_length], pusch_vars->ul_valid_re_per_slot[symbol]);
}
/* PTRS processing for multiple antenna ports is broken because the following
function estimates phase offset from and applies compensation to rxdataF_comp
for each antenna port but rxdataF_comp has MRCed data. */
/* TODO: Move PTRS phase estimation before immediately after DMRS channels
estimation and apply PTRS phase compensation in nr_channel_compensationi() */
if (rel15_ul->pdu_bit_map & PUSCH_PDU_BITMAP_PUSCH_PTRS) {
nr_pusch_ptrs_processing(gNB,
frame_parms,
rel15_ul,
pusch_vars,
slot,
symbol,
nb_rx_ant,
buffer_length);
// rxdataF_comp is MRCed so no point in processing all antenna ports. Fixme.
nr_pusch_ptrs_processing(gNB, frame_parms, rel15_ul, pusch_vars, slot, symbol, 1, buffer_length);
pusch_vars->ul_valid_re_per_slot[symbol] -= pusch_vars->ptrs_re_per_slot;
}
start_meas(ulsch_llr);

View File

@@ -1369,7 +1369,7 @@ void nr_pdsch_ptrs_processing(int nbRx,
int nscid = dlsch_config->nscid;
/* loop over antennas */
for (int aarx = 0; aarx < frame_parms->nb_antennas_rx; aarx++) {
for (int aarx = 0; aarx < nbRx; aarx++) {
c16_t *phase_per_symbol = (c16_t*)ptrs_phase_per_slot[aarx];
ptrs_re_symbol = (int32_t*)ptrs_re_per_slot[aarx];
ptrs_re_symbol[symbol] = 0;
@@ -1440,5 +1440,5 @@ void nr_pdsch_ptrs_processing(int nbRx,
}// if not DMRS Symbol
}// symbol loop
}// last symbol check
}//Antenna loop
} // Antenna loop
}//main function

View File

@@ -1099,9 +1099,14 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
pduBitmap = dlsch_config->pduBitmap;
}
/* PTRS processing for multiple antenna ports is broken because the following
function estimates phase offset from and applies compensation to rxdataF_comp
for each antenna port but rxdataF_comp has MRCed data. */
/* TODO: Move PTRS phase estimation before immediately after DMRS channels
estimation and apply PTRS phase compensation in nr_channel_compensationi() */
/* Check for PTRS bitmap and process it respectively */
if((pduBitmap & 0x1) && (dlsch->rnti_type == TYPE_C_RNTI_)) {
nr_pdsch_ptrs_processing(nbRx,
nr_pdsch_ptrs_processing(1, // rxdataF_comp is MRCed so no point in processing all antenna ports. Fixme.
ptrs_phase_per_slot,
ptrs_re_per_slot,
rx_size_symbol,