Commit 88f293d3 authored by Khodr Saaifan's avatar Khodr Saaifan Committed by Thomas Schlichter

clean up nr_dlsch_demodulation, solve bug in nr_rb_extract to consider...

clean up nr_dlsch_demodulation, solve bug in nr_rb_extract to consider data/dmrs multiplexing/no data, and remove ra_pdsch hack in phy_procedures_nr_ue
parent 3fdb5509
...@@ -697,7 +697,7 @@ void dlsch_detection_mrc_TM34(NR_DL_FRAME_PARMS *frame_parms, ...@@ -697,7 +697,7 @@ void dlsch_detection_mrc_TM34(NR_DL_FRAME_PARMS *frame_parms,
@param dl_ch_estimates_ext Channel estimates for RBs in this allocation @param dl_ch_estimates_ext Channel estimates for RBs in this allocation
@param rb_alloc RB allocation vector @param rb_alloc RB allocation vector
@param symbol Symbol to extract @param symbol Symbol to extract
@param high_speed_flag @param n_dmrs_cdm_groups
@param frame_parms Pointer to frame descriptor @param frame_parms Pointer to frame descriptor
*/ */
unsigned short nr_dlsch_extract_rbs_single(int **rxdataF, unsigned short nr_dlsch_extract_rbs_single(int **rxdataF,
...@@ -709,7 +709,7 @@ unsigned short nr_dlsch_extract_rbs_single(int **rxdataF, ...@@ -709,7 +709,7 @@ unsigned short nr_dlsch_extract_rbs_single(int **rxdataF,
uint8_t config_type, uint8_t config_type,
unsigned short start_rb, unsigned short start_rb,
unsigned short nb_rb_pdsch, unsigned short nb_rb_pdsch,
uint32_t high_speed_flag, uint8_t n_dmrs_cdm_groups,
NR_DL_FRAME_PARMS *frame_parms, NR_DL_FRAME_PARMS *frame_parms,
uint16_t dlDmrsSymbPos); uint16_t dlDmrsSymbPos);
...@@ -722,7 +722,7 @@ unsigned short nr_dlsch_extract_rbs_single(int **rxdataF, ...@@ -722,7 +722,7 @@ unsigned short nr_dlsch_extract_rbs_single(int **rxdataF,
uint8_t config_type, uint8_t config_type,
unsigned short start_rb, unsigned short start_rb,
unsigned short nb_rb_pdsch, unsigned short nb_rb_pdsch,
uint32_t high_speed_flag, uint8_t n_dmrs_cdm_groups,
uint8_t Nl, uint8_t Nl,
NR_DL_FRAME_PARMS *frame_parms, NR_DL_FRAME_PARMS *frame_parms,
uint16_t dlDmrsSymbPos) uint16_t dlDmrsSymbPos)
...@@ -734,7 +734,7 @@ unsigned short nr_dlsch_extract_rbs_single(int **rxdataF, ...@@ -734,7 +734,7 @@ unsigned short nr_dlsch_extract_rbs_single(int **rxdataF,
@param dl_ch_estimates_ext Channel estimates for RBs in this allocation @param dl_ch_estimates_ext Channel estimates for RBs in this allocation
@param Nl nb of antenna layers @param Nl nb of antenna layers
@param symbol Symbol to extract @param symbol Symbol to extract
@param high_speed_flag @param n_dmrs_cdm_groups
@param frame_parms Pointer to frame descriptor @param frame_parms Pointer to frame descriptor
*/ */
unsigned short nr_dlsch_extract_rbs_multiple(int **rxdataF, unsigned short nr_dlsch_extract_rbs_multiple(int **rxdataF,
...@@ -746,7 +746,7 @@ unsigned short nr_dlsch_extract_rbs_multiple(int **rxdataF, ...@@ -746,7 +746,7 @@ unsigned short nr_dlsch_extract_rbs_multiple(int **rxdataF,
uint8_t config_type, uint8_t config_type,
unsigned short start_rb, unsigned short start_rb,
unsigned short nb_rb_pdsch, unsigned short nb_rb_pdsch,
uint32_t high_speed_flag, uint8_t n_dmrs_cdm_groups,
uint8_t Nl, uint8_t Nl,
NR_DL_FRAME_PARMS *frame_parms, NR_DL_FRAME_PARMS *frame_parms,
uint16_t dlDmrsSymbPos); uint16_t dlDmrsSymbPos);
......
...@@ -796,43 +796,24 @@ int nr_ue_pdsch_procedures(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc, int eNB_ ...@@ -796,43 +796,24 @@ int nr_ue_pdsch_procedures(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc, int eNB_
slot = 1; slot = 1;
start_meas(&ue->dlsch_llr_stats_parallelization[proc->thread_id][slot]); start_meas(&ue->dlsch_llr_stats_parallelization[proc->thread_id][slot]);
#endif #endif
// process DLSCH received in first slot // process DLSCH received symbols in the slot
// skip DMRS symbols (will have to check later if PDSCH/DMRS are multiplexed // symbol by symbol processing (if data/DMRS are multiplexed is checked inside the function)
if (((1<<m)&dlsch0->harq_processes[harq_pid]->dlDmrsSymbPos) == 0) { if (pdsch == PDSCH || pdsch == SI_PDSCH || pdsch == RA_PDSCH) {
if (nr_rx_pdsch(ue, if (nr_rx_pdsch(ue,
proc, proc,
pdsch, pdsch,
eNB_id, eNB_id,
eNB_id_i, eNB_id_i,
frame_rx, frame_rx,
nr_slot_rx, nr_slot_rx,
m, m,
first_symbol_flag, first_symbol_flag,
dual_stream_UE, dual_stream_UE,
i_mod, i_mod,
dlsch0->current_harq_pid) < 0) dlsch0->current_harq_pid) < 0)
return -1; return -1;
} } else AssertFatal(1==0,"Not RA_PDSCH, SI_PDSCH or PDSCH\n");
else { // This is to adjust the llr offset in the case of skipping over a dmrs symbol (i.e. in case of no PDSCH REs in DMRS)
if (pdsch == RA_PDSCH) ue->pdsch_vars[proc->thread_id][eNB_id]->llr_offset[m]=ue->pdsch_vars[proc->thread_id][eNB_id]->llr_offset[m-1];
else if (pdsch == PDSCH || pdsch == SI_PDSCH) {
if (nr_rx_pdsch(ue,
proc,
pdsch,
eNB_id,
eNB_id_i,
frame_rx,
nr_slot_rx,
m,
first_symbol_flag,
dual_stream_UE,
i_mod,
dlsch0->current_harq_pid) < 0)
return -1;
}
else AssertFatal(1==0,"Not RA_PDSCH, SI_PDSCH or PDSCH\n");
}
if (pdsch == PDSCH) LOG_D(PHY,"Done processing symbol %d : llr_offset %d\n",m,ue->pdsch_vars[proc->thread_id][eNB_id]->llr_offset[m]);
#if UE_TIMING_TRACE #if UE_TIMING_TRACE
stop_meas(&ue->dlsch_llr_stats_parallelization[proc->thread_id][slot]); stop_meas(&ue->dlsch_llr_stats_parallelization[proc->thread_id][slot]);
#if DISABLE_LOG_X #if DISABLE_LOG_X
...@@ -842,10 +823,9 @@ int nr_ue_pdsch_procedures(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc, int eNB_ ...@@ -842,10 +823,9 @@ int nr_ue_pdsch_procedures(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc, int eNB_
#endif #endif
#endif #endif
if(first_symbol_flag) if(first_symbol_flag) {
{ proc->first_symbol_available = 1;
proc->first_symbol_available = 1; }
}
} // CRNTI active } // CRNTI active
} }
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment