NR_UE: discard DCI with bwp_indicator == 0
Recently we stared using the BWP_indicator signalled in DCI, before we always assumed BWP_Id == 1. Now "fake-DCI" with bandwidth_indicator == 0 lead to segmentation faults, so we discard these. Note: There are still several placed where we assume BWP_Id == 1!
This commit is contained in:
@@ -350,13 +350,11 @@ void config_bwp_ue(NR_UE_MAC_INST_t *mac, uint16_t *bwp_ind, uint8_t *dci_format
|
|||||||
else
|
else
|
||||||
mac->DL_BWP_Id = 1;
|
mac->DL_BWP_Id = 1;
|
||||||
|
|
||||||
if (scd->uplinkConfig){
|
if (scd->uplinkConfig && scd->uplinkConfig->firstActiveUplinkBWP_Id)
|
||||||
if (scd->uplinkConfig->firstActiveUplinkBWP_Id)
|
mac->UL_BWP_Id = *scd->uplinkConfig->firstActiveUplinkBWP_Id;
|
||||||
mac->UL_BWP_Id = *scd->uplinkConfig->firstActiveUplinkBWP_Id;
|
else
|
||||||
else
|
mac->UL_BWP_Id = 1;
|
||||||
mac->UL_BWP_Id = 1;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG_D(MAC, "In %s setting DL_BWP_Id %ld UL_BWP_Id %ld \n", __FUNCTION__, mac->DL_BWP_Id, mac->UL_BWP_Id);
|
LOG_D(MAC, "In %s setting DL_BWP_Id %ld UL_BWP_Id %ld \n", __FUNCTION__, mac->DL_BWP_Id, mac->UL_BWP_Id);
|
||||||
@@ -371,14 +369,14 @@ void config_bwp_ue(NR_UE_MAC_INST_t *mac, uint16_t *bwp_ind, uint8_t *dci_format
|
|||||||
void config_control_ue(NR_UE_MAC_INST_t *mac){
|
void config_control_ue(NR_UE_MAC_INST_t *mac){
|
||||||
|
|
||||||
uint8_t coreset_id = 1, ss_id;
|
uint8_t coreset_id = 1, ss_id;
|
||||||
NR_BWP_Id_t dl_bwp_id;
|
|
||||||
|
|
||||||
NR_ServingCellConfig_t *scd = mac->scg->spCellConfig->spCellConfigDedicated;
|
NR_ServingCellConfig_t *scd = mac->scg->spCellConfig->spCellConfigDedicated;
|
||||||
AssertFatal(scd->downlinkBWP_ToAddModList != NULL, "downlinkBWP_ToAddModList is null\n");
|
AssertFatal(scd->downlinkBWP_ToAddModList != NULL, "downlinkBWP_ToAddModList is null\n");
|
||||||
AssertFatal(scd->downlinkBWP_ToAddModList->list.count == 1, "downlinkBWP_ToAddModList->list->count is %d\n", scd->downlinkBWP_ToAddModList->list.count);
|
AssertFatal(scd->downlinkBWP_ToAddModList->list.count == 1, "downlinkBWP_ToAddModList->list->count is %d\n", scd->downlinkBWP_ToAddModList->list.count);
|
||||||
|
|
||||||
config_bwp_ue(mac, NULL, NULL);
|
config_bwp_ue(mac, NULL, NULL);
|
||||||
dl_bwp_id = mac->DL_BWP_Id;
|
NR_BWP_Id_t dl_bwp_id = mac->DL_BWP_Id;
|
||||||
|
AssertFatal(dl_bwp_id != 0, "DL_BWP_Id is 0!");
|
||||||
|
|
||||||
NR_BWP_DownlinkCommon_t *bwp_Common = scd->downlinkBWP_ToAddModList->list.array[dl_bwp_id - 1]->bwp_Common;
|
NR_BWP_DownlinkCommon_t *bwp_Common = scd->downlinkBWP_ToAddModList->list.array[dl_bwp_id - 1]->bwp_Common;
|
||||||
AssertFatal(bwp_Common != NULL, "bwp_Common is null\n");
|
AssertFatal(bwp_Common != NULL, "bwp_Common is null\n");
|
||||||
|
|||||||
@@ -462,7 +462,6 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fr
|
|||||||
bool valid_ptrs_setup = 0;
|
bool valid_ptrs_setup = 0;
|
||||||
NR_UE_MAC_INST_t *mac = get_mac_inst(module_id);
|
NR_UE_MAC_INST_t *mac = get_mac_inst(module_id);
|
||||||
RA_config_t *ra = &mac->ra;
|
RA_config_t *ra = &mac->ra;
|
||||||
NR_BWP_Id_t bwp_id = mac->UL_BWP_Id;
|
|
||||||
fapi_nr_dl_config_request_t *dl_config = &mac->dl_config_request;
|
fapi_nr_dl_config_request_t *dl_config = &mac->dl_config_request;
|
||||||
uint8_t is_Msg3 = 0;
|
uint8_t is_Msg3 = 0;
|
||||||
|
|
||||||
@@ -474,10 +473,8 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fr
|
|||||||
|
|
||||||
LOG_D(MAC, "In %s: Processing received DCI format %s (DL BWP %d)\n", __FUNCTION__, dci_formats[dci_format], n_RB_DLBWP);
|
LOG_D(MAC, "In %s: Processing received DCI format %s (DL BWP %d)\n", __FUNCTION__, dci_formats[dci_format], n_RB_DLBWP);
|
||||||
|
|
||||||
NR_PDSCH_Config_t *pdsch_config=mac->DLbwp[0]->bwp_Dedicated->pdsch_Config->choice.setup;
|
|
||||||
|
|
||||||
switch(dci_format){
|
switch(dci_format){
|
||||||
case NR_UL_DCI_FORMAT_0_0:
|
case NR_UL_DCI_FORMAT_0_0: {
|
||||||
/*
|
/*
|
||||||
* with CRC scrambled by C-RNTI or CS-RNTI or new-RNTI or TC-RNTI
|
* with CRC scrambled by C-RNTI or CS-RNTI or new-RNTI or TC-RNTI
|
||||||
* 0 IDENTIFIER_DCI_FORMATS:
|
* 0 IDENTIFIER_DCI_FORMATS:
|
||||||
@@ -525,8 +522,9 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fr
|
|||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case NR_UL_DCI_FORMAT_0_1:
|
case NR_UL_DCI_FORMAT_0_1: {
|
||||||
/*
|
/*
|
||||||
* with CRC scrambled by C-RNTI or CS-RNTI or SP-CSI-RNTI or new-RNTI
|
* with CRC scrambled by C-RNTI or CS-RNTI or SP-CSI-RNTI or new-RNTI
|
||||||
* 0 IDENTIFIER_DCI_FORMATS:
|
* 0 IDENTIFIER_DCI_FORMATS:
|
||||||
@@ -587,8 +585,9 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fr
|
|||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case NR_DL_DCI_FORMAT_1_0:
|
case NR_DL_DCI_FORMAT_1_0: {
|
||||||
/*
|
/*
|
||||||
* with CRC scrambled by C-RNTI or CS-RNTI or new-RNTI
|
* with CRC scrambled by C-RNTI or CS-RNTI or new-RNTI
|
||||||
* 0 IDENTIFIER_DCI_FORMATS:
|
* 0 IDENTIFIER_DCI_FORMATS:
|
||||||
@@ -642,6 +641,7 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fr
|
|||||||
|
|
||||||
dl_config->dl_config_list[dl_config->number_pdus].dlsch_config_pdu.rnti = rnti;
|
dl_config->dl_config_list[dl_config->number_pdus].dlsch_config_pdu.rnti = rnti;
|
||||||
fapi_nr_dl_config_dlsch_pdu_rel15_t *dlsch_config_pdu_1_0 = &dl_config->dl_config_list[dl_config->number_pdus].dlsch_config_pdu.dlsch_config_rel15;
|
fapi_nr_dl_config_dlsch_pdu_rel15_t *dlsch_config_pdu_1_0 = &dl_config->dl_config_list[dl_config->number_pdus].dlsch_config_pdu.dlsch_config_rel15;
|
||||||
|
NR_PDSCH_Config_t *pdsch_config=mac->DLbwp[0]->bwp_Dedicated->pdsch_Config->choice.setup;
|
||||||
uint16_t BWPSize = 0;
|
uint16_t BWPSize = 0;
|
||||||
|
|
||||||
if(rnti == SI_RNTI) {
|
if(rnti == SI_RNTI) {
|
||||||
@@ -767,8 +767,9 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fr
|
|||||||
|
|
||||||
dl_config->number_pdus = dl_config->number_pdus + 1;
|
dl_config->number_pdus = dl_config->number_pdus + 1;
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case NR_DL_DCI_FORMAT_1_1:
|
case NR_DL_DCI_FORMAT_1_1: {
|
||||||
/*
|
/*
|
||||||
* with CRC scrambled by C-RNTI or CS-RNTI or new-RNTI
|
* with CRC scrambled by C-RNTI or CS-RNTI or new-RNTI
|
||||||
* 0 IDENTIFIER_DCI_FORMATS:
|
* 0 IDENTIFIER_DCI_FORMATS:
|
||||||
@@ -798,6 +799,13 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fr
|
|||||||
* 44 CBGFI:
|
* 44 CBGFI:
|
||||||
* 47 DMRS_SEQ_INI:
|
* 47 DMRS_SEQ_INI:
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
if (dci->bwp_indicator.val == 0)
|
||||||
|
return -1;
|
||||||
|
config_bwp_ue(mac, &dci->bwp_indicator.val, &dci_format);
|
||||||
|
NR_BWP_Id_t dl_bwp_id = mac->DL_BWP_Id;
|
||||||
|
NR_PDSCH_Config_t *pdsch_config=mac->DLbwp[dl_bwp_id-1]->bwp_Dedicated->pdsch_Config->choice.setup;
|
||||||
|
|
||||||
dl_config->dl_config_list[dl_config->number_pdus].pdu_type = FAPI_NR_DL_CONFIG_TYPE_DLSCH;
|
dl_config->dl_config_list[dl_config->number_pdus].pdu_type = FAPI_NR_DL_CONFIG_TYPE_DLSCH;
|
||||||
dl_config->dl_config_list[dl_config->number_pdus].dlsch_config_pdu.rnti = rnti;
|
dl_config->dl_config_list[dl_config->number_pdus].dlsch_config_pdu.rnti = rnti;
|
||||||
fapi_nr_dl_config_dlsch_pdu_rel15_t *dlsch_config_pdu_1_1 = &dl_config->dl_config_list[dl_config->number_pdus].dlsch_config_pdu.dlsch_config_rel15;
|
fapi_nr_dl_config_dlsch_pdu_rel15_t *dlsch_config_pdu_1_1 = &dl_config->dl_config_list[dl_config->number_pdus].dlsch_config_pdu.dlsch_config_rel15;
|
||||||
@@ -815,7 +823,7 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fr
|
|||||||
dlsch_config_pdu_1_1->dlDmrsSymbPos = fill_dmrs_mask(pdsch_config,
|
dlsch_config_pdu_1_1->dlDmrsSymbPos = fill_dmrs_mask(pdsch_config,
|
||||||
mac->scc->dmrs_TypeA_Position,
|
mac->scc->dmrs_TypeA_Position,
|
||||||
dlsch_config_pdu_1_1->number_symbols);
|
dlsch_config_pdu_1_1->number_symbols);
|
||||||
dlsch_config_pdu_1_1->dmrsConfigType = mac->DLbwp[0]->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->dmrs_Type == NULL ? 0 : 1;
|
dlsch_config_pdu_1_1->dmrsConfigType = mac->DLbwp[dl_bwp_id-1]->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->dmrs_Type == NULL ? 0 : 1;
|
||||||
/* TODO: fix number of DM-RS CDM groups without data according to subclause 5.1.6.2 of 3GPP TS 38.214,
|
/* TODO: fix number of DM-RS CDM groups without data according to subclause 5.1.6.2 of 3GPP TS 38.214,
|
||||||
using tables 7.3.1.2.2-1, 7.3.1.2.2-2, 7.3.1.2.2-3, 7.3.1.2.2-4 of 3GPP TS 38.212 */
|
using tables 7.3.1.2.2-1, 7.3.1.2.2-2, 7.3.1.2.2-3, 7.3.1.2.2-4 of 3GPP TS 38.212 */
|
||||||
dlsch_config_pdu_1_1->n_dmrs_cdm_groups = 1;
|
dlsch_config_pdu_1_1->n_dmrs_cdm_groups = 1;
|
||||||
@@ -878,7 +886,8 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fr
|
|||||||
|
|
||||||
/* PDSCH_TO_HARQ_FEEDBACK_TIME_IND */
|
/* PDSCH_TO_HARQ_FEEDBACK_TIME_IND */
|
||||||
// according to TS 38.213 Table 9.2.3-1
|
// according to TS 38.213 Table 9.2.3-1
|
||||||
dlsch_config_pdu_1_1->pdsch_to_harq_feedback_time_ind = mac->ULbwp[bwp_id-1]->bwp_Dedicated->pucch_Config->choice.setup->dl_DataToUL_ACK->list.array[dci->pdsch_to_harq_feedback_timing_indicator.val][0];
|
NR_BWP_Id_t ul_bwp_id = mac->UL_BWP_Id;
|
||||||
|
dlsch_config_pdu_1_1->pdsch_to_harq_feedback_time_ind = mac->ULbwp[ul_bwp_id-1]->bwp_Dedicated->pucch_Config->choice.setup->dl_DataToUL_ACK->list.array[dci->pdsch_to_harq_feedback_timing_indicator.val][0];
|
||||||
/* ANTENNA_PORTS */
|
/* ANTENNA_PORTS */
|
||||||
uint8_t n_codewords = 1; // FIXME!!!
|
uint8_t n_codewords = 1; // FIXME!!!
|
||||||
if ((mac->phy_config.config_req.dl_bwp_dedicated.pdsch_config_dedicated.dmrs_dl_for_pdsch_mapping_type_a.dmrs_type == 1) &&
|
if ((mac->phy_config.config_req.dl_bwp_dedicated.pdsch_config_dedicated.dmrs_dl_for_pdsch_mapping_type_a.dmrs_type == 1) &&
|
||||||
@@ -983,8 +992,8 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fr
|
|||||||
/* TODO same calculation for MCS table as done in UL */
|
/* TODO same calculation for MCS table as done in UL */
|
||||||
dlsch_config_pdu_1_1->mcs_table = (pdsch_config->mcs_Table) ? (*pdsch_config->mcs_Table + 1) : 0;
|
dlsch_config_pdu_1_1->mcs_table = (pdsch_config->mcs_Table) ? (*pdsch_config->mcs_Table + 1) : 0;
|
||||||
/*PTRS configuration */
|
/*PTRS configuration */
|
||||||
if(mac->DLbwp[0]->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->phaseTrackingRS != NULL) {
|
if(mac->DLbwp[dl_bwp_id-1]->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->phaseTrackingRS != NULL) {
|
||||||
valid_ptrs_setup = set_dl_ptrs_values(mac->DLbwp[0]->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->phaseTrackingRS->choice.setup,
|
valid_ptrs_setup = set_dl_ptrs_values(mac->DLbwp[dl_bwp_id-1]->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->phaseTrackingRS->choice.setup,
|
||||||
dlsch_config_pdu_1_1->number_rbs, dlsch_config_pdu_1_1->mcs, dlsch_config_pdu_1_1->mcs_table,
|
dlsch_config_pdu_1_1->number_rbs, dlsch_config_pdu_1_1->mcs, dlsch_config_pdu_1_1->mcs_table,
|
||||||
&dlsch_config_pdu_1_1->PTRSFreqDensity,&dlsch_config_pdu_1_1->PTRSTimeDensity,
|
&dlsch_config_pdu_1_1->PTRSFreqDensity,&dlsch_config_pdu_1_1->PTRSTimeDensity,
|
||||||
&dlsch_config_pdu_1_1->PTRSPortIndex,&dlsch_config_pdu_1_1->nEpreRatioOfPDSCHToPTRS,
|
&dlsch_config_pdu_1_1->PTRSPortIndex,&dlsch_config_pdu_1_1->nEpreRatioOfPDSCHToPTRS,
|
||||||
@@ -995,6 +1004,7 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fr
|
|||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case NR_DL_DCI_FORMAT_2_0:
|
case NR_DL_DCI_FORMAT_2_0:
|
||||||
break;
|
break;
|
||||||
@@ -1076,16 +1086,17 @@ int get_n_rb(NR_UE_MAC_INST_t *mac, int rnti_type){
|
|||||||
switch(rnti_type) {
|
switch(rnti_type) {
|
||||||
case NR_RNTI_RA:
|
case NR_RNTI_RA:
|
||||||
case NR_RNTI_TC:
|
case NR_RNTI_TC:
|
||||||
case NR_RNTI_P:
|
case NR_RNTI_P: {
|
||||||
if (mac->DLbwp[0]->bwp_Common->pdcch_ConfigCommon->choice.setup->controlResourceSetZero) {
|
NR_BWP_Id_t dl_bwp_id = mac->DL_BWP_Id;
|
||||||
NR_BWP_Id_t bwp_id = mac->DL_BWP_Id;
|
if (mac->DLbwp[dl_bwp_id-1]->bwp_Common->pdcch_ConfigCommon->choice.setup->controlResourceSetZero) {
|
||||||
uint8_t coreset_id = 0; // assuming controlResourceSetId is 0 for controlResourceSetZero
|
uint8_t coreset_id = 0; // assuming controlResourceSetId is 0 for controlResourceSetZero
|
||||||
NR_ControlResourceSet_t *coreset = mac->coreset[bwp_id - 1][coreset_id];
|
NR_ControlResourceSet_t *coreset = mac->coreset[dl_bwp_id-1][coreset_id];
|
||||||
get_coreset_rballoc(coreset->frequencyDomainResources.buf,&N_RB,&start_RB);
|
get_coreset_rballoc(coreset->frequencyDomainResources.buf,&N_RB,&start_RB);
|
||||||
} else {
|
} else {
|
||||||
N_RB = NRRIV2BW(mac->scc->downlinkConfigCommon->initialDownlinkBWP->genericParameters.locationAndBandwidth, MAX_BWP_SIZE);
|
N_RB = NRRIV2BW(mac->scc->downlinkConfigCommon->initialDownlinkBWP->genericParameters.locationAndBandwidth, MAX_BWP_SIZE);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case NR_RNTI_SI:
|
case NR_RNTI_SI:
|
||||||
N_RB = mac->type0_PDCCH_CSS_config.num_rbs;
|
N_RB = mac->type0_PDCCH_CSS_config.num_rbs;
|
||||||
break;
|
break;
|
||||||
@@ -1483,7 +1494,6 @@ uint8_t nr_extract_dci_info(NR_UE_MAC_INST_t *mac,
|
|||||||
// BWP Indicator
|
// BWP Indicator
|
||||||
pos+=dci_pdu_rel15->bwp_indicator.nbits;
|
pos+=dci_pdu_rel15->bwp_indicator.nbits;
|
||||||
dci_pdu_rel15->bwp_indicator.val = (*dci_pdu>>(dci_size-pos))&((1<<dci_pdu_rel15->bwp_indicator.nbits)-1);
|
dci_pdu_rel15->bwp_indicator.val = (*dci_pdu>>(dci_size-pos))&((1<<dci_pdu_rel15->bwp_indicator.nbits)-1);
|
||||||
config_bwp_ue(mac, &dci_pdu_rel15->bwp_indicator.val, &dci_format);
|
|
||||||
// Frequency domain resource assignment
|
// Frequency domain resource assignment
|
||||||
pos+=dci_pdu_rel15->frequency_domain_assignment.nbits;
|
pos+=dci_pdu_rel15->frequency_domain_assignment.nbits;
|
||||||
dci_pdu_rel15->frequency_domain_assignment.val = (*dci_pdu>>(dci_size-pos))&((1<<dci_pdu_rel15->frequency_domain_assignment.nbits)-1);
|
dci_pdu_rel15->frequency_domain_assignment.val = (*dci_pdu>>(dci_size-pos))&((1<<dci_pdu_rel15->frequency_domain_assignment.nbits)-1);
|
||||||
@@ -1574,7 +1584,6 @@ uint8_t nr_extract_dci_info(NR_UE_MAC_INST_t *mac,
|
|||||||
// BWP Indicator
|
// BWP Indicator
|
||||||
pos+=dci_pdu_rel15->bwp_indicator.nbits;
|
pos+=dci_pdu_rel15->bwp_indicator.nbits;
|
||||||
dci_pdu_rel15->bwp_indicator.val = (*dci_pdu>>(dci_size-pos))&((1<<dci_pdu_rel15->bwp_indicator.nbits)-1);
|
dci_pdu_rel15->bwp_indicator.val = (*dci_pdu>>(dci_size-pos))&((1<<dci_pdu_rel15->bwp_indicator.nbits)-1);
|
||||||
config_bwp_ue(mac, &dci_pdu_rel15->bwp_indicator.val, &dci_format);
|
|
||||||
|
|
||||||
// Freq domain assignment max 16 bit
|
// Freq domain assignment max 16 bit
|
||||||
fsize = (int)ceil( log2( (N_RB_UL*(N_RB_UL+1))>>1 ) );
|
fsize = (int)ceil( log2( (N_RB_UL*(N_RB_UL+1))>>1 ) );
|
||||||
|
|||||||
@@ -472,7 +472,8 @@ int nr_config_pusch_pdu(NR_UE_MAC_INST_t *mac,
|
|||||||
mask = (1 << (28 - (int)(ceil(log2((ibwp_size*(ibwp_size+1))>>1))))) - 1;
|
mask = (1 << (28 - (int)(ceil(log2((ibwp_size*(ibwp_size+1))>>1))))) - 1;
|
||||||
|
|
||||||
f_alloc = rar_grant->Msg3_f_alloc & mask;
|
f_alloc = rar_grant->Msg3_f_alloc & mask;
|
||||||
nr_ue_process_dci_freq_dom_resource_assignment(pusch_config_pdu, NULL, ibwp_size, 0, f_alloc);
|
if (nr_ue_process_dci_freq_dom_resource_assignment(pusch_config_pdu, NULL, ibwp_size, 0, f_alloc) < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
// virtual resource block to physical resource mapping for Msg3 PUSCH (6.3.1.7 in 38.211)
|
// virtual resource block to physical resource mapping for Msg3 PUSCH (6.3.1.7 in 38.211)
|
||||||
pusch_config_pdu->rb_start += ibwp_start - abwp_start;
|
pusch_config_pdu->rb_start += ibwp_start - abwp_start;
|
||||||
@@ -549,6 +550,8 @@ int nr_config_pusch_pdu(NR_UE_MAC_INST_t *mac,
|
|||||||
} else if (*dci_format == NR_UL_DCI_FORMAT_0_1) {
|
} else if (*dci_format == NR_UL_DCI_FORMAT_0_1) {
|
||||||
|
|
||||||
/* BANDWIDTH_PART_IND */
|
/* BANDWIDTH_PART_IND */
|
||||||
|
if (dci->bwp_indicator.val == 0)
|
||||||
|
return -1;
|
||||||
config_bwp_ue(mac, &dci->bwp_indicator.val, dci_format);
|
config_bwp_ue(mac, &dci->bwp_indicator.val, dci_format);
|
||||||
target_ss = NR_SearchSpace__searchSpaceType_PR_ue_Specific;
|
target_ss = NR_SearchSpace__searchSpaceType_PR_ue_Specific;
|
||||||
ul_layers_config(mac, pusch_config_pdu, dci);
|
ul_layers_config(mac, pusch_config_pdu, dci);
|
||||||
|
|||||||
Reference in New Issue
Block a user