mirror of
https://gitlab.eurecom.fr/oai/openairinterface5g.git
synced 2026-07-13 04:30:28 +00:00
fix CSI-RS slot determination according to SSB index
reworked version of commit c30ad1d07b
Co-Authored-By: @mjoang_oai
Signed-off-by: francescomani <email@francescomani.it>
This commit is contained in:
committed by
Francesco Mani
parent
4cff137957
commit
f63b57388e
@@ -191,7 +191,7 @@ void schedule_nr_mib(module_id_t module_idP, frame_t frameP, slot_t slotP, nfapi
|
|||||||
if (is_ssb_configured(scc, i_ssb)) {
|
if (is_ssb_configured(scc, i_ssb)) {
|
||||||
uint16_t ssb_start_symbol = get_ssb_start_symbol(band, scs, i_ssb);
|
uint16_t ssb_start_symbol = get_ssb_start_symbol(band, scs, i_ssb);
|
||||||
// if start symbol is in current slot, schedule current SSB, fill VRB map and call get_type0_PDCCH_CSS_config_parameters
|
// if start symbol is in current slot, schedule current SSB, fill VRB map and call get_type0_PDCCH_CSS_config_parameters
|
||||||
if ((ssb_start_symbol / 14) == rel_slot) {
|
if ((ssb_start_symbol / NR_SYMBOLS_PER_SLOT) == rel_slot) {
|
||||||
NR_beam_alloc_t beam = beam_allocation_procedure(&gNB->beam_info,
|
NR_beam_alloc_t beam = beam_allocation_procedure(&gNB->beam_info,
|
||||||
frameP,
|
frameP,
|
||||||
slotP,
|
slotP,
|
||||||
|
|||||||
@@ -3507,9 +3507,12 @@ static NR_CSI_MeasConfig_t *get_csiMeasConfig(const NR_ServingCellConfig_t *conf
|
|||||||
int same_slot_index = (ssb_index % 2 == 0) ? (ssb_index + 1) : (ssb_index - 1);
|
int same_slot_index = (ssb_index % 2 == 0) ? (ssb_index + 1) : (ssb_index - 1);
|
||||||
bool has_companion = (bitmap >> (63 - same_slot_index)) & 0x01;
|
bool has_companion = (bitmap >> (63 - same_slot_index)) & 0x01;
|
||||||
int symbol_index = has_companion ? ssb_index % 2 : 0;
|
int symbol_index = has_companion ? ssb_index % 2 : 0;
|
||||||
|
int ssb_slot = get_ssb_start_symbol(*scc->downlinkConfigCommon->frequencyInfoDL->frequencyBandList.list.array[0],
|
||||||
|
*scc->ssbSubcarrierSpacing,
|
||||||
|
ssb_index) / NR_SYMBOLS_PER_SLOT;
|
||||||
const int pdsch_AntennaPorts = config->pdsch_AntennaPorts.N1 * config->pdsch_AntennaPorts.N2 * config->pdsch_AntennaPorts.XP;
|
const int pdsch_AntennaPorts = config->pdsch_AntennaPorts.N1 * config->pdsch_AntennaPorts.N2 * config->pdsch_AntennaPorts.XP;
|
||||||
config_csirs(scc, csi_MeasConfig, pdsch_AntennaPorts, curr_bwp, config->do_CSIRS, symbol_index, ssb_index / 2);
|
config_csirs(scc, csi_MeasConfig, pdsch_AntennaPorts, curr_bwp, config->do_CSIRS, symbol_index, ssb_slot);
|
||||||
config_csiim(config->do_CSIRS, pdsch_AntennaPorts, curr_bwp, csi_MeasConfig, ssb_index / 2);
|
config_csiim(config->do_CSIRS, pdsch_AntennaPorts, curr_bwp, csi_MeasConfig, ssb_slot);
|
||||||
|
|
||||||
NR_CSI_ResourceConfig_t *csires1 = calloc(1, sizeof(*csires1));
|
NR_CSI_ResourceConfig_t *csires1 = calloc(1, sizeof(*csires1));
|
||||||
csires1->csi_ResourceConfigId = bwp_id + 20;
|
csires1->csi_ResourceConfigId = bwp_id + 20;
|
||||||
@@ -3535,7 +3538,7 @@ static NR_CSI_MeasConfig_t *get_csiMeasConfig(const NR_ServingCellConfig_t *conf
|
|||||||
csires0->csi_RS_ResourceSetList.choice.nzp_CSI_RS_SSB->nzp_CSI_RS_ResourceSetList =
|
csires0->csi_RS_ResourceSetList.choice.nzp_CSI_RS_SSB->nzp_CSI_RS_ResourceSetList =
|
||||||
calloc(1, sizeof(*csires0->csi_RS_ResourceSetList.choice.nzp_CSI_RS_SSB->nzp_CSI_RS_ResourceSetList));
|
calloc(1, sizeof(*csires0->csi_RS_ResourceSetList.choice.nzp_CSI_RS_SSB->nzp_CSI_RS_ResourceSetList));
|
||||||
NR_NZP_CSI_RS_ResourceSetId_t *nzp0 = calloc(1, sizeof(*nzp0));
|
NR_NZP_CSI_RS_ResourceSetId_t *nzp0 = calloc(1, sizeof(*nzp0));
|
||||||
*nzp0 = ssb_index / 2;
|
*nzp0 = ssb_index;
|
||||||
asn1cSeqAdd(&csires0->csi_RS_ResourceSetList.choice.nzp_CSI_RS_SSB->nzp_CSI_RS_ResourceSetList->list, nzp0);
|
asn1cSeqAdd(&csires0->csi_RS_ResourceSetList.choice.nzp_CSI_RS_SSB->nzp_CSI_RS_ResourceSetList->list, nzp0);
|
||||||
csires0->bwp_Id = bwp_id;
|
csires0->bwp_Id = bwp_id;
|
||||||
csires0->resourceType = NR_CSI_ResourceConfig__resourceType_periodic;
|
csires0->resourceType = NR_CSI_ResourceConfig__resourceType_periodic;
|
||||||
@@ -3549,7 +3552,7 @@ static NR_CSI_MeasConfig_t *get_csiMeasConfig(const NR_ServingCellConfig_t *conf
|
|||||||
csires2->csi_RS_ResourceSetList.choice.csi_IM_ResourceSetList =
|
csires2->csi_RS_ResourceSetList.choice.csi_IM_ResourceSetList =
|
||||||
calloc(1, sizeof(*csires2->csi_RS_ResourceSetList.choice.csi_IM_ResourceSetList));
|
calloc(1, sizeof(*csires2->csi_RS_ResourceSetList.choice.csi_IM_ResourceSetList));
|
||||||
NR_CSI_IM_ResourceSetId_t *csiim00 = calloc(1, sizeof(*csiim00));
|
NR_CSI_IM_ResourceSetId_t *csiim00 = calloc(1, sizeof(*csiim00));
|
||||||
*csiim00 = ssb_index / 2;
|
*csiim00 = ssb_index;
|
||||||
asn1cSeqAdd(&csires2->csi_RS_ResourceSetList.choice.csi_IM_ResourceSetList->list, csiim00);
|
asn1cSeqAdd(&csires2->csi_RS_ResourceSetList.choice.csi_IM_ResourceSetList->list, csiim00);
|
||||||
csires2->bwp_Id = bwp_id;
|
csires2->bwp_Id = bwp_id;
|
||||||
csires2->resourceType = NR_CSI_ResourceConfig__resourceType_periodic;
|
csires2->resourceType = NR_CSI_ResourceConfig__resourceType_periodic;
|
||||||
|
|||||||
Reference in New Issue
Block a user