mirror of
https://gitlab.eurecom.fr/oai/openairinterface5g.git
synced 2026-07-13 04:30:28 +00:00
fixes in DLSCH RB extraction
Signed-off-by: Francesco Mani <email@francescomani.it>
This commit is contained in:
@@ -238,8 +238,8 @@ static void nr_dlsch_extract_rbs(uint32_t rxdataF_sz,
|
|||||||
uint32_t csi_res_odd = (csi_res_bitmap >> 16) & 0xfff;
|
uint32_t csi_res_odd = (csi_res_bitmap >> 16) & 0xfff;
|
||||||
AssertFatal((dmrs_rb_bitmap & csi_res_even) == 0, "DMRS RE overlapping with CSI RE, it shouldn't happen\n");
|
AssertFatal((dmrs_rb_bitmap & csi_res_even) == 0, "DMRS RE overlapping with CSI RE, it shouldn't happen\n");
|
||||||
AssertFatal((dmrs_rb_bitmap & csi_res_odd) == 0, "DMRS RE overlapping with CSI RE, it shouldn't happen\n");
|
AssertFatal((dmrs_rb_bitmap & csi_res_odd) == 0, "DMRS RE overlapping with CSI RE, it shouldn't happen\n");
|
||||||
uint32_t dmrs_csi_overlap_even = csi_res_even + dmrs_rb_bitmap;
|
uint32_t dmrs_csi_overlap_even = csi_res_even | dmrs_rb_bitmap;
|
||||||
uint32_t dmrs_csi_overlap_odd = csi_res_odd + dmrs_rb_bitmap;
|
uint32_t dmrs_csi_overlap_odd = csi_res_odd | dmrs_rb_bitmap;
|
||||||
int8_t validDmrsEst;
|
int8_t validDmrsEst;
|
||||||
if (chest_time_type == 0)
|
if (chest_time_type == 0)
|
||||||
validDmrsEst = get_valid_dmrs_idx_for_channel_est(dlsch_config->dlDmrsSymbPos, symbol);
|
validDmrsEst = get_valid_dmrs_idx_for_channel_est(dlsch_config->dlDmrsSymbPos, symbol);
|
||||||
@@ -248,16 +248,17 @@ static void nr_dlsch_extract_rbs(uint32_t rxdataF_sz,
|
|||||||
|
|
||||||
int pos = 0;
|
int pos = 0;
|
||||||
int block_start, block_end;
|
int block_start, block_end;
|
||||||
|
int offset = 0;
|
||||||
while (find_next_rb_block(freq_alloc->bitmap, dlsch_config->BWPSize, &pos, &block_start, &block_end)) {
|
while (find_next_rb_block(freq_alloc->bitmap, dlsch_config->BWPSize, &pos, &block_start, &block_end)) {
|
||||||
int start_rb = block_start + dlsch_config->BWPStart;
|
int start_rb = block_start + dlsch_config->BWPStart;
|
||||||
int nb_rb = block_end - block_start + 1;
|
int nb_rb = block_end - block_start + 1;
|
||||||
const int start_re = (fp->first_carrier_offset + start_rb * NR_NB_SC_PER_RB) % fp->ofdm_symbol_size;
|
const int start_re = (fp->first_carrier_offset + start_rb * NR_NB_SC_PER_RB) % fp->ofdm_symbol_size;
|
||||||
for (int aarx = 0; aarx < fp->nb_antennas_rx; aarx++) {
|
for (int aarx = 0; aarx < fp->nb_antennas_rx; aarx++) {
|
||||||
c16_t *rxF_ext = rxdataF_ext[aarx];
|
c16_t *rxF_ext = rxdataF_ext[aarx] + offset;
|
||||||
c16_t *rxF = &rxdataF[aarx][symbol * fp->ofdm_symbol_size];
|
c16_t *rxF = &rxdataF[aarx][symbol * fp->ofdm_symbol_size];
|
||||||
for (int l = 0; l < Nl; l++) {
|
for (int l = 0; l < Nl; l++) {
|
||||||
int32_t *dl_ch0 = &dl_ch_estimates[(l * fp->nb_antennas_rx) + aarx][validDmrsEst * fp->ofdm_symbol_size];
|
int32_t *dl_ch0 = &dl_ch_estimates[(l * fp->nb_antennas_rx) + aarx][validDmrsEst * fp->ofdm_symbol_size];
|
||||||
int32_t *dl_ch0_ext = dl_ch_estimates_ext[(l * fp->nb_antennas_rx) + aarx];
|
int32_t *dl_ch0_ext = dl_ch_estimates_ext[(l * fp->nb_antennas_rx) + aarx] + offset;
|
||||||
if (pilots == 0 && csi_res_bitmap == 0) { // data symbol only
|
if (pilots == 0 && csi_res_bitmap == 0) { // data symbol only
|
||||||
if (l == 0) {
|
if (l == 0) {
|
||||||
if (start_re + nb_rb * NR_NB_SC_PER_RB <= fp->ofdm_symbol_size) {
|
if (start_re + nb_rb * NR_NB_SC_PER_RB <= fp->ofdm_symbol_size) {
|
||||||
@@ -292,6 +293,7 @@ static void nr_dlsch_extract_rbs(uint32_t rxdataF_sz,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
offset += nb_rb * NR_NB_SC_PER_RB;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user