Fix segmentation fault at UE in nr_schedule_csi_for_im and nr_schedule_csirs_reception
This commit is contained in:
@@ -2357,20 +2357,25 @@ void nr_schedule_csi_for_im(NR_UE_MAC_INST_t *mac, int frame, int slot) {
|
|||||||
NR_CSI_IM_Resource_t *imcsi;
|
NR_CSI_IM_Resource_t *imcsi;
|
||||||
int period, offset;
|
int period, offset;
|
||||||
NR_BWP_Id_t dl_bwp_id = mac->DL_BWP_Id;
|
NR_BWP_Id_t dl_bwp_id = mac->DL_BWP_Id;
|
||||||
int mu = mac->DLbwp[dl_bwp_id-1] ?
|
|
||||||
mac->DLbwp[dl_bwp_id-1]->bwp_Common->genericParameters.subcarrierSpacing :
|
NR_BWP_t *genericParameters = NULL;
|
||||||
mac->scc_SIB->downlinkConfigCommon.initialDownlinkBWP.genericParameters.subcarrierSpacing;
|
if(dl_bwp_id > 0 && mac->DLbwp[dl_bwp_id-1]) {
|
||||||
|
genericParameters = &mac->DLbwp[dl_bwp_id-1]->bwp_Common->genericParameters;
|
||||||
|
} else {
|
||||||
|
genericParameters = &mac->scc_SIB->downlinkConfigCommon.initialDownlinkBWP.genericParameters;
|
||||||
|
}
|
||||||
|
|
||||||
|
int mu = genericParameters->subcarrierSpacing;
|
||||||
|
uint16_t bwp_size = NRRIV2BW(genericParameters->locationAndBandwidth, MAX_BWP_SIZE);
|
||||||
|
uint16_t bwp_start = NRRIV2PRBOFFSET(genericParameters->locationAndBandwidth, MAX_BWP_SIZE);
|
||||||
|
|
||||||
for (int id = 0; id < csi_measconfig->csi_IM_ResourceToAddModList->list.count; id++){
|
for (int id = 0; id < csi_measconfig->csi_IM_ResourceToAddModList->list.count; id++){
|
||||||
imcsi = csi_measconfig->csi_IM_ResourceToAddModList->list.array[id];
|
imcsi = csi_measconfig->csi_IM_ResourceToAddModList->list.array[id];
|
||||||
csi_period_offset(NULL,imcsi->periodicityAndOffset,&period,&offset);
|
csi_period_offset(NULL,imcsi->periodicityAndOffset,&period,&offset);
|
||||||
if((frame*nr_slots_per_frame[mu]+slot-offset)%period == 0) {
|
if((frame*nr_slots_per_frame[mu]+slot-offset)%period == 0) {
|
||||||
fapi_nr_dl_config_csiim_pdu_rel15_t *csiim_config_pdu = &dl_config->dl_config_list[dl_config->number_pdus].csiim_config_pdu.csiim_config_rel15;
|
fapi_nr_dl_config_csiim_pdu_rel15_t *csiim_config_pdu = &dl_config->dl_config_list[dl_config->number_pdus].csiim_config_pdu.csiim_config_rel15;
|
||||||
const NR_BWP_Downlink_t *dlbwp = mac->DLbwp[dl_bwp_id-1];
|
csiim_config_pdu->bwp_size = bwp_size;
|
||||||
const int locationAndBandwidth = dlbwp != NULL ? dlbwp->bwp_Common->genericParameters.locationAndBandwidth:
|
csiim_config_pdu->bwp_start = bwp_start;
|
||||||
mac->scc_SIB->downlinkConfigCommon.initialDownlinkBWP.genericParameters.locationAndBandwidth;
|
|
||||||
csiim_config_pdu->bwp_size = NRRIV2BW(locationAndBandwidth, MAX_BWP_SIZE);
|
|
||||||
csiim_config_pdu->bwp_start = NRRIV2PRBOFFSET(locationAndBandwidth, MAX_BWP_SIZE);
|
|
||||||
csiim_config_pdu->subcarrier_spacing = mu;
|
csiim_config_pdu->subcarrier_spacing = mu;
|
||||||
csiim_config_pdu->start_rb = imcsi->freqBand->startingRB;
|
csiim_config_pdu->start_rb = imcsi->freqBand->startingRB;
|
||||||
csiim_config_pdu->nr_of_rbs = imcsi->freqBand->nrofRBs;
|
csiim_config_pdu->nr_of_rbs = imcsi->freqBand->nrofRBs;
|
||||||
@@ -2418,9 +2423,17 @@ void nr_schedule_csirs_reception(NR_UE_MAC_INST_t *mac, int frame, int slot) {
|
|||||||
NR_NZP_CSI_RS_Resource_t *nzpcsi;
|
NR_NZP_CSI_RS_Resource_t *nzpcsi;
|
||||||
int period, offset;
|
int period, offset;
|
||||||
NR_BWP_Id_t dl_bwp_id = mac->DL_BWP_Id;
|
NR_BWP_Id_t dl_bwp_id = mac->DL_BWP_Id;
|
||||||
int mu = mac->DLbwp[dl_bwp_id-1] ?
|
|
||||||
mac->DLbwp[dl_bwp_id-1]->bwp_Common->genericParameters.subcarrierSpacing :
|
NR_BWP_t *genericParameters = NULL;
|
||||||
mac->scc_SIB->downlinkConfigCommon.initialDownlinkBWP.genericParameters.subcarrierSpacing;
|
if(dl_bwp_id > 0 && mac->DLbwp[dl_bwp_id-1]) {
|
||||||
|
genericParameters = &mac->DLbwp[dl_bwp_id-1]->bwp_Common->genericParameters;
|
||||||
|
} else {
|
||||||
|
genericParameters = &mac->scc_SIB->downlinkConfigCommon.initialDownlinkBWP.genericParameters;
|
||||||
|
}
|
||||||
|
|
||||||
|
int mu = genericParameters->subcarrierSpacing;
|
||||||
|
uint16_t bwp_size = NRRIV2BW(genericParameters->locationAndBandwidth, MAX_BWP_SIZE);
|
||||||
|
uint16_t bwp_start = NRRIV2PRBOFFSET(genericParameters->locationAndBandwidth, MAX_BWP_SIZE);
|
||||||
|
|
||||||
for (int id = 0; id < csi_measconfig->nzp_CSI_RS_ResourceToAddModList->list.count; id++){
|
for (int id = 0; id < csi_measconfig->nzp_CSI_RS_ResourceToAddModList->list.count; id++){
|
||||||
nzpcsi = csi_measconfig->nzp_CSI_RS_ResourceToAddModList->list.array[id];
|
nzpcsi = csi_measconfig->nzp_CSI_RS_ResourceToAddModList->list.array[id];
|
||||||
@@ -2428,14 +2441,9 @@ void nr_schedule_csirs_reception(NR_UE_MAC_INST_t *mac, int frame, int slot) {
|
|||||||
if((frame*nr_slots_per_frame[mu]+slot-offset)%period == 0) {
|
if((frame*nr_slots_per_frame[mu]+slot-offset)%period == 0) {
|
||||||
LOG_D(MAC,"Scheduling reception of CSI-RS in frame %d slot %d\n",frame,slot);
|
LOG_D(MAC,"Scheduling reception of CSI-RS in frame %d slot %d\n",frame,slot);
|
||||||
fapi_nr_dl_config_csirs_pdu_rel15_t *csirs_config_pdu = &dl_config->dl_config_list[dl_config->number_pdus].csirs_config_pdu.csirs_config_rel15;
|
fapi_nr_dl_config_csirs_pdu_rel15_t *csirs_config_pdu = &dl_config->dl_config_list[dl_config->number_pdus].csirs_config_pdu.csirs_config_rel15;
|
||||||
|
|
||||||
NR_CSI_RS_ResourceMapping_t resourceMapping = nzpcsi->resourceMapping;
|
NR_CSI_RS_ResourceMapping_t resourceMapping = nzpcsi->resourceMapping;
|
||||||
|
csirs_config_pdu->bwp_size = bwp_size;
|
||||||
const NR_BWP_Downlink_t *dlbwp = mac->DLbwp[dl_bwp_id-1];
|
csirs_config_pdu->bwp_start = bwp_start;
|
||||||
const int locationAndBandwidth = dlbwp != NULL ? dlbwp->bwp_Common->genericParameters.locationAndBandwidth:
|
|
||||||
mac->scc_SIB->downlinkConfigCommon.initialDownlinkBWP.genericParameters.locationAndBandwidth;
|
|
||||||
csirs_config_pdu->bwp_size = NRRIV2BW(locationAndBandwidth, MAX_BWP_SIZE);
|
|
||||||
csirs_config_pdu->bwp_start = NRRIV2PRBOFFSET(locationAndBandwidth, MAX_BWP_SIZE);
|
|
||||||
csirs_config_pdu->subcarrier_spacing = mu;
|
csirs_config_pdu->subcarrier_spacing = mu;
|
||||||
csirs_config_pdu->start_rb = resourceMapping.freqBand.startingRB;
|
csirs_config_pdu->start_rb = resourceMapping.freqBand.startingRB;
|
||||||
csirs_config_pdu->nr_of_rbs = resourceMapping.freqBand.nrofRBs;
|
csirs_config_pdu->nr_of_rbs = resourceMapping.freqBand.nrofRBs;
|
||||||
|
|||||||
@@ -1360,12 +1360,6 @@ static void rrc_ue_generate_RRCSetupComplete(
|
|||||||
int nas_msg_length;
|
int nas_msg_length;
|
||||||
NR_UE_MAC_INST_t *mac = get_mac_inst(0);
|
NR_UE_MAC_INST_t *mac = get_mac_inst(0);
|
||||||
|
|
||||||
if (mac->cg &&
|
|
||||||
mac->cg->spCellConfig &&
|
|
||||||
mac->cg->spCellConfig->spCellConfigDedicated &&
|
|
||||||
mac->cg->spCellConfig->spCellConfigDedicated->csi_MeasConfig)
|
|
||||||
AssertFatal(1==0,"2 > csi_MeasConfig is not null\n");
|
|
||||||
|
|
||||||
if (AMF_MODE_ENABLED) {
|
if (AMF_MODE_ENABLED) {
|
||||||
#if defined(ITTI_SIM)
|
#if defined(ITTI_SIM)
|
||||||
as_nas_info_t initialNasMsg;
|
as_nas_info_t initialNasMsg;
|
||||||
|
|||||||
Reference in New Issue
Block a user