fixes in bwp ss and coreset configuration at ue
This commit is contained in:
@@ -512,7 +512,10 @@ void config_bwp_ue(NR_UE_MAC_INST_t *mac, uint16_t *bwp_ind, uint8_t *dci_format
|
|||||||
default:
|
default:
|
||||||
LOG_E(MAC, "In %s: failed to configure BWP Id from DCI with format %d \n", __FUNCTION__, *dci_format);
|
LOG_E(MAC, "In %s: failed to configure BWP Id from DCI with format %d \n", __FUNCTION__, *dci_format);
|
||||||
}
|
}
|
||||||
|
// configure ss coreset after switching BWP
|
||||||
|
configure_ss_coreset(mac,
|
||||||
|
scd,
|
||||||
|
mac->DL_BWP_Id);
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
if (scd->firstActiveDownlinkBWP_Id)
|
if (scd->firstActiveDownlinkBWP_Id)
|
||||||
@@ -540,82 +543,103 @@ 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;
|
int bwp_id;
|
||||||
|
|
||||||
NR_BWP_Id_t dl_bwp_id = mac->DL_BWP_Id;
|
|
||||||
NR_BWP_Id_t ul_bwp_id = mac->UL_BWP_Id;
|
|
||||||
NR_ServingCellConfig_t *scd = mac->cg->spCellConfig->spCellConfigDedicated;
|
NR_ServingCellConfig_t *scd = mac->cg->spCellConfig->spCellConfigDedicated;
|
||||||
if (dl_bwp_id==0) AssertFatal(mac->scc_SIB,"dl_bwp_id 0 (DL %d,UL %d) means mac->scc_SIB should exist here!\n",(int)mac->DL_BWP_Id,(int)mac->UL_BWP_Id);
|
|
||||||
NR_BWP_DownlinkCommon_t *bwp_Common = dl_bwp_id>0 ? scd->downlinkBWP_ToAddModList->list.array[dl_bwp_id - 1]->bwp_Common :
|
|
||||||
&mac->scc_SIB->downlinkConfigCommon.initialDownlinkBWP;
|
|
||||||
|
|
||||||
if (dl_bwp_id > 0 ) {
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
NR_BWP_DownlinkDedicated_t *dl_bwp_Dedicated = dl_bwp_id>0 ? scd->downlinkBWP_ToAddModList->list.array[dl_bwp_id - 1]->bwp_Dedicated:
|
|
||||||
scd->initialDownlinkBWP;
|
|
||||||
AssertFatal(dl_bwp_Dedicated != NULL, "dl_bwp_Dedicated is null\n");
|
|
||||||
config_bwp_ue(mac, NULL, NULL);
|
config_bwp_ue(mac, NULL, NULL);
|
||||||
|
NR_BWP_Id_t dl_bwp_id = mac->DL_BWP_Id;
|
||||||
|
|
||||||
NR_SetupRelease_PDCCH_Config_t *pdcch_Config = dl_bwp_Dedicated->pdcch_Config;
|
// configure DLbwp
|
||||||
AssertFatal(pdcch_Config != NULL, "pdcch_Config is null\n");
|
if (scd->downlinkBWP_ToAddModList) {
|
||||||
|
for (int i = 0; i < scd->downlinkBWP_ToAddModList->list.count; i++) {
|
||||||
|
bwp_id = scd->downlinkBWP_ToAddModList->list.array[i]->bwp_Id;
|
||||||
|
mac->DLbwp[bwp_id-1] = scd->downlinkBWP_ToAddModList->list.array[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// configure ULbwp
|
||||||
|
if (scd->uplinkConfig->uplinkBWP_ToAddModList) {
|
||||||
|
for (int i = 0; i < scd->uplinkConfig->uplinkBWP_ToAddModList->list.count; i++) {
|
||||||
|
bwp_id = scd->uplinkConfig->uplinkBWP_ToAddModList->list.array[i]->bwp_Id;
|
||||||
|
mac->ULbwp[bwp_id-1] = scd->uplinkConfig->uplinkBWP_ToAddModList->list.array[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
configure_ss_coreset(mac, scd, dl_bwp_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void configure_ss_coreset(NR_UE_MAC_INST_t *mac,
|
||||||
|
NR_ServingCellConfig_t *scd,
|
||||||
|
NR_BWP_Id_t dl_bwp_id) {
|
||||||
|
|
||||||
|
|
||||||
|
NR_BWP_DownlinkCommon_t *bwp_Common;
|
||||||
|
if (dl_bwp_id>0)
|
||||||
|
bwp_Common = scd->downlinkBWP_ToAddModList->list.array[dl_bwp_id - 1]->bwp_Common;
|
||||||
|
else {
|
||||||
|
if (mac->scc_SIB)
|
||||||
|
bwp_Common = &mac->scc_SIB->downlinkConfigCommon.initialDownlinkBWP;
|
||||||
|
else
|
||||||
|
bwp_Common = mac->scc->downlinkConfigCommon->initialDownlinkBWP;
|
||||||
|
}
|
||||||
|
|
||||||
NR_SetupRelease_PDCCH_ConfigCommon_t *pdcch_ConfigCommon = bwp_Common->pdcch_ConfigCommon;
|
NR_SetupRelease_PDCCH_ConfigCommon_t *pdcch_ConfigCommon = bwp_Common->pdcch_ConfigCommon;
|
||||||
AssertFatal(pdcch_ConfigCommon != NULL, "pdcch_ConfigCommon is null\n");
|
AssertFatal(pdcch_ConfigCommon != NULL, "pdcch_ConfigCommon is null\n");
|
||||||
AssertFatal(pdcch_ConfigCommon->choice.setup->ra_SearchSpace != NULL, "ra_SearchSpace must be available in DL BWP\n");
|
AssertFatal(pdcch_ConfigCommon->choice.setup->ra_SearchSpace != NULL, "ra_SearchSpace must be available in DL BWP\n");
|
||||||
|
|
||||||
struct NR_PDCCH_ConfigCommon__commonSearchSpaceList *commonSearchSpaceList = pdcch_ConfigCommon->choice.setup->commonSearchSpaceList;
|
// configuring eventual common coreset
|
||||||
AssertFatal(commonSearchSpaceList != NULL, "commonSearchSpaceList is null\n");
|
NR_ControlResourceSet_t *coreset = pdcch_ConfigCommon->choice.setup->commonControlResourceSet;
|
||||||
AssertFatal(commonSearchSpaceList->list.count > 0, "PDCCH CSS list has 0 elements\n");
|
if (coreset)
|
||||||
|
mac->coreset[dl_bwp_id][coreset->controlResourceSetId - 1] = coreset;
|
||||||
|
|
||||||
|
NR_BWP_DownlinkDedicated_t *dl_bwp_Dedicated = dl_bwp_id>0 ? scd->downlinkBWP_ToAddModList->list.array[dl_bwp_id - 1]->bwp_Dedicated:
|
||||||
|
scd->initialDownlinkBWP;
|
||||||
|
|
||||||
|
AssertFatal(dl_bwp_Dedicated != NULL, "dl_bwp_Dedicated is null\n");
|
||||||
|
|
||||||
|
NR_SetupRelease_PDCCH_Config_t *pdcch_Config = dl_bwp_Dedicated->pdcch_Config;
|
||||||
|
AssertFatal(pdcch_Config != NULL, "pdcch_Config is null\n");
|
||||||
|
|
||||||
struct NR_PDCCH_Config__controlResourceSetToAddModList *controlResourceSetToAddModList = pdcch_Config->choice.setup->controlResourceSetToAddModList;
|
struct NR_PDCCH_Config__controlResourceSetToAddModList *controlResourceSetToAddModList = pdcch_Config->choice.setup->controlResourceSetToAddModList;
|
||||||
AssertFatal(controlResourceSetToAddModList != NULL, "controlResourceSetToAddModList is null\n");
|
AssertFatal(controlResourceSetToAddModList != NULL, "controlResourceSetToAddModList is null\n");
|
||||||
AssertFatal(controlResourceSetToAddModList->list.count == 1, "controlResourceSetToAddModList->list.count=%d\n", controlResourceSetToAddModList->list.count);
|
|
||||||
AssertFatal(controlResourceSetToAddModList->list.array[0] != NULL, "coreset[0][0] is null\n");
|
// configuring dedicated coreset
|
||||||
|
// In case network reconfigures control resource set with the same ControlResourceSetId as used for commonControlResourceSet configured via PDCCH-ConfigCommon,
|
||||||
|
// the configuration from PDCCH-Config always takes precedence
|
||||||
|
for (int i=0; i<controlResourceSetToAddModList->list.count; i++) {
|
||||||
|
coreset = controlResourceSetToAddModList->list.array[i];
|
||||||
|
mac->coreset[dl_bwp_id][coreset->controlResourceSetId - 1] = coreset;
|
||||||
|
}
|
||||||
|
|
||||||
struct NR_PDCCH_Config__searchSpacesToAddModList *searchSpacesToAddModList = pdcch_Config->choice.setup->searchSpacesToAddModList;
|
struct NR_PDCCH_Config__searchSpacesToAddModList *searchSpacesToAddModList = pdcch_Config->choice.setup->searchSpacesToAddModList;
|
||||||
AssertFatal(searchSpacesToAddModList != NULL, "searchSpacesToAddModList is null\n");
|
AssertFatal(searchSpacesToAddModList != NULL, "searchSpacesToAddModList is null\n");
|
||||||
AssertFatal(searchSpacesToAddModList->list.count > 0, "list of UE specifically configured Search Spaces is empty\n");
|
AssertFatal(searchSpacesToAddModList->list.count > 0, "list of UE specifically configured Search Spaces is empty\n");
|
||||||
AssertFatal(searchSpacesToAddModList->list.count < FAPI_NR_MAX_SS_PER_CORESET, "too many searchpaces per coreset %d\n", searchSpacesToAddModList->list.count);
|
AssertFatal(searchSpacesToAddModList->list.count < FAPI_NR_MAX_SS_PER_CORESET, "too many searchpaces per coreset %d\n", searchSpacesToAddModList->list.count);
|
||||||
|
|
||||||
struct NR_UplinkConfig__uplinkBWP_ToAddModList *uplinkBWP_ToAddModList = scd->uplinkConfig->uplinkBWP_ToAddModList;
|
|
||||||
if (ul_bwp_id > 0) {
|
|
||||||
AssertFatal(uplinkBWP_ToAddModList != NULL, "uplinkBWP_ToAddModList is null\n");
|
|
||||||
AssertFatal(uplinkBWP_ToAddModList->list.count == 1, "uplinkBWP_ToAddModList->list->count is %d\n", uplinkBWP_ToAddModList->list.count);
|
|
||||||
}
|
|
||||||
// check pdcch_Config, pdcch_ConfigCommon and DL BWP
|
|
||||||
mac->DLbwp[0] = dl_bwp_id>0?scd->downlinkBWP_ToAddModList->list.array[dl_bwp_id - 1]:NULL;
|
|
||||||
mac->coreset[dl_bwp_id][coreset_id - 1] = controlResourceSetToAddModList->list.array[0];
|
|
||||||
|
|
||||||
// Check dedicated UL BWP and pass to MAC
|
|
||||||
mac->ULbwp[ul_bwp_id] = ul_bwp_id>0?uplinkBWP_ToAddModList->list.array[0]:NULL;
|
|
||||||
if (mac->ULbwp[ul_bwp_id]) AssertFatal(mac->ULbwp[ul_bwp_id]->bwp_Dedicated != NULL, "UL bwp_Dedicated is null\n");
|
|
||||||
|
|
||||||
// check available Search Spaces in the searchSpacesToAddModList and pass to MAC
|
// check available Search Spaces in the searchSpacesToAddModList and pass to MAC
|
||||||
// note: the network configures at most 10 Search Spaces per BWP per cell (including UE-specific and common Search Spaces).
|
// note: the network configures at most 10 Search Spaces per BWP per cell (including UE-specific and common Search Spaces).
|
||||||
for (ss_id = 0; ss_id < searchSpacesToAddModList->list.count; ss_id++) {
|
for (int ss_id = 0; ss_id < searchSpacesToAddModList->list.count; ss_id++) {
|
||||||
NR_SearchSpace_t *ss = searchSpacesToAddModList->list.array[ss_id];
|
NR_SearchSpace_t *ss = searchSpacesToAddModList->list.array[ss_id];
|
||||||
AssertFatal(ss->controlResourceSetId != NULL, "ss->controlResourceSetId is null\n");
|
AssertFatal(ss->controlResourceSetId != NULL, "ss->controlResourceSetId is null\n");
|
||||||
AssertFatal(ss->searchSpaceType != NULL, "ss->searchSpaceType is null\n");
|
AssertFatal(ss->searchSpaceType != NULL, "ss->searchSpaceType is null\n");
|
||||||
AssertFatal(*ss->controlResourceSetId == mac->coreset[dl_bwp_id][coreset_id - 1]->controlResourceSetId, "ss->controlResourceSetId is unknown\n");
|
|
||||||
AssertFatal(ss->monitoringSymbolsWithinSlot != NULL, "NR_SearchSpace->monitoringSymbolsWithinSlot is null\n");
|
AssertFatal(ss->monitoringSymbolsWithinSlot != NULL, "NR_SearchSpace->monitoringSymbolsWithinSlot is null\n");
|
||||||
AssertFatal(ss->monitoringSymbolsWithinSlot->buf != NULL, "NR_SearchSpace->monitoringSymbolsWithinSlot->buf is null\n");
|
AssertFatal(ss->monitoringSymbolsWithinSlot->buf != NULL, "NR_SearchSpace->monitoringSymbolsWithinSlot->buf is null\n");
|
||||||
mac->SSpace[dl_bwp_id][0][ss_id] = ss;
|
mac->SSpace[dl_bwp_id][ss->searchSpaceId - 1] = ss;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct NR_PDCCH_ConfigCommon__commonSearchSpaceList *commonSearchSpaceList = pdcch_ConfigCommon->choice.setup->commonSearchSpaceList;
|
||||||
|
AssertFatal(commonSearchSpaceList != NULL, "commonSearchSpaceList is null\n");
|
||||||
|
AssertFatal(commonSearchSpaceList->list.count > 0, "PDCCH CSS list has 0 elements\n");
|
||||||
|
|
||||||
// Check available CSSs in the commonSearchSpaceList (list of additional common search spaces)
|
// Check available CSSs in the commonSearchSpaceList (list of additional common search spaces)
|
||||||
// note: commonSearchSpaceList SIZE(1..4)
|
// note: commonSearchSpaceList SIZE(1..4)
|
||||||
for (int css_id = 0; css_id < commonSearchSpaceList->list.count; css_id++) {
|
for (int css_id = 0; css_id < commonSearchSpaceList->list.count; css_id++) {
|
||||||
NR_SearchSpace_t *css = commonSearchSpaceList->list.array[css_id];
|
NR_SearchSpace_t *css = commonSearchSpaceList->list.array[css_id];
|
||||||
AssertFatal(css->controlResourceSetId != NULL, "ss->controlResourceSetId is null\n");
|
AssertFatal(css->controlResourceSetId != NULL, "ss->controlResourceSetId is null\n");
|
||||||
AssertFatal(*css->controlResourceSetId == 0 || *css->controlResourceSetId == mac->coreset[dl_bwp_id][coreset_id - 1]->controlResourceSetId, "css->controlResourceSetId %ld is unknown, mac->coreset[%ld][%d]->controlResourceSetId %ld\n",*css->controlResourceSetId,dl_bwp_id,coreset_id-1,mac->coreset[dl_bwp_id][coreset_id - 1]->controlResourceSetId);
|
|
||||||
|
|
||||||
AssertFatal(css->searchSpaceType != NULL, "css->searchSpaceType is null\n");
|
AssertFatal(css->searchSpaceType != NULL, "css->searchSpaceType is null\n");
|
||||||
AssertFatal(css->monitoringSymbolsWithinSlot != NULL, "css->monitoringSymbolsWithinSlot is null\n");
|
AssertFatal(css->monitoringSymbolsWithinSlot != NULL, "css->monitoringSymbolsWithinSlot is null\n");
|
||||||
AssertFatal(css->monitoringSymbolsWithinSlot->buf != NULL, "css->monitoringSymbolsWithinSlot->buf is null\n");
|
AssertFatal(css->monitoringSymbolsWithinSlot->buf != NULL, "css->monitoringSymbolsWithinSlot->buf is null\n");
|
||||||
mac->SSpace[dl_bwp_id][coreset_id -1][ss_id] = css;
|
mac->SSpace[dl_bwp_id][css->searchSpaceId - 1] = css;
|
||||||
ss_id++;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -375,7 +375,7 @@ typedef struct {
|
|||||||
NR_BWP_Downlink_t *DLbwp[MAX_NUM_BWP_UE];
|
NR_BWP_Downlink_t *DLbwp[MAX_NUM_BWP_UE];
|
||||||
NR_BWP_Uplink_t *ULbwp[MAX_NUM_BWP_UE];
|
NR_BWP_Uplink_t *ULbwp[MAX_NUM_BWP_UE];
|
||||||
NR_ControlResourceSet_t *coreset[MAX_NUM_BWP_UE][FAPI_NR_MAX_CORESET_PER_BWP];
|
NR_ControlResourceSet_t *coreset[MAX_NUM_BWP_UE][FAPI_NR_MAX_CORESET_PER_BWP];
|
||||||
NR_SearchSpace_t *SSpace[MAX_NUM_BWP_UE][FAPI_NR_MAX_CORESET_PER_BWP][FAPI_NR_MAX_SS_PER_CORESET];
|
NR_SearchSpace_t *SSpace[MAX_NUM_BWP_UE][FAPI_NR_MAX_SS_PER_CORESET];
|
||||||
|
|
||||||
lte_frame_type_t frame_type;
|
lte_frame_type_t frame_type;
|
||||||
|
|
||||||
|
|||||||
@@ -377,6 +377,10 @@ void build_ssb_to_ro_map(NR_UE_MAC_INST_t *mac);
|
|||||||
|
|
||||||
void config_bwp_ue(NR_UE_MAC_INST_t *mac, uint16_t *bwp_ind, uint8_t *dci_format);
|
void config_bwp_ue(NR_UE_MAC_INST_t *mac, uint16_t *bwp_ind, uint8_t *dci_format);
|
||||||
|
|
||||||
|
void configure_ss_coreset(NR_UE_MAC_INST_t *mac,
|
||||||
|
NR_ServingCellConfig_t *scd,
|
||||||
|
NR_BWP_Id_t dl_bwp_id);
|
||||||
|
|
||||||
fapi_nr_ul_config_request_t *get_ul_config_request(NR_UE_MAC_INST_t *mac, int slot);
|
fapi_nr_ul_config_request_t *get_ul_config_request(NR_UE_MAC_INST_t *mac, int slot);
|
||||||
|
|
||||||
void fill_ul_config(fapi_nr_ul_config_request_t *ul_config, frame_t frame_tx, int slot_tx, uint8_t pdu_type);
|
void fill_ul_config(fapi_nr_ul_config_request_t *ul_config, frame_t frame_tx, int slot_tx, uint8_t pdu_type);
|
||||||
|
|||||||
@@ -94,10 +94,12 @@ void init_RA(module_id_t mod_id,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (ss_id < 0) {
|
if (ss_id < 0) {
|
||||||
ra_ss = mac->DLbwp[0]->bwp_Common->pdcch_ConfigCommon->choice.setup->ra_SearchSpace;
|
if (mac->DL_BWP_Id>0) {
|
||||||
if (ra_ss) {
|
ra_ss = mac->DLbwp[mac->DL_BWP_Id-1]->bwp_Common->pdcch_ConfigCommon->choice.setup->ra_SearchSpace;
|
||||||
commonSearchSpaceList = mac->DLbwp[0]->bwp_Common->pdcch_ConfigCommon->choice.setup->commonSearchSpaceList;
|
if (ra_ss) {
|
||||||
ss_id = *mac->DLbwp[0]->bwp_Common->pdcch_ConfigCommon->choice.setup->ra_SearchSpace;
|
commonSearchSpaceList = mac->DLbwp[mac->DL_BWP_Id-1]->bwp_Common->pdcch_ConfigCommon->choice.setup->commonSearchSpaceList;
|
||||||
|
ss_id = *mac->DLbwp[mac->DL_BWP_Id-1]->bwp_Common->pdcch_ConfigCommon->choice.setup->ra_SearchSpace;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ void config_dci_pdu(NR_UE_MAC_INST_t *mac, fapi_nr_dl_config_dci_dl_pdu_rel15_t
|
|||||||
NR_SearchSpace_t *ss;
|
NR_SearchSpace_t *ss;
|
||||||
NR_ControlResourceSet_t *coreset;
|
NR_ControlResourceSet_t *coreset;
|
||||||
if(ss_id>=0) {
|
if(ss_id>=0) {
|
||||||
ss = mac->SSpace[dl_bwp_id][coreset_id - 1][ss_id];
|
ss = mac->SSpace[dl_bwp_id][ss_id-1];
|
||||||
coreset = mac->coreset[dl_bwp_id][coreset_id - 1];
|
coreset = mac->coreset[dl_bwp_id][coreset_id - 1];
|
||||||
rel15->coreset.CoreSetType = NFAPI_NR_CSET_CONFIG_PDCCH_CONFIG;
|
rel15->coreset.CoreSetType = NFAPI_NR_CSET_CONFIG_PDCCH_CONFIG;
|
||||||
} else {
|
} else {
|
||||||
@@ -255,18 +255,19 @@ void ue_dci_configuration(NR_UE_MAC_INST_t *mac, fapi_nr_dl_config_request_t *dl
|
|||||||
RA_config_t *ra = &mac->ra;
|
RA_config_t *ra = &mac->ra;
|
||||||
int ss_id;
|
int ss_id;
|
||||||
|
|
||||||
uint8_t bwp_id = (mac->cg) ? mac->DL_BWP_Id : 0, coreset_id = (mac->cg) ? 1 : 0;
|
uint8_t bwp_id = (mac->cg) ? mac->DL_BWP_Id : 0;
|
||||||
//NR_ServingCellConfig_t *scd = mac->scg->spCellConfig->spCellConfigDedicated;
|
//NR_ServingCellConfig_t *scd = mac->scg->spCellConfig->spCellConfigDedicated;
|
||||||
NR_BWP_DownlinkDedicated_t *bwpd = (bwp_id>0) ? mac->DLbwp[bwp_id-1]->bwp_Dedicated : mac->cg->spCellConfig->spCellConfigDedicated->initialDownlinkBWP;
|
NR_BWP_DownlinkDedicated_t *bwpd = (bwp_id>0) ? mac->DLbwp[bwp_id-1]->bwp_Dedicated : mac->cg->spCellConfig->spCellConfigDedicated->initialDownlinkBWP;
|
||||||
NR_BWP_DownlinkCommon_t *bwp_Common = (bwp_id>0) ? mac->DLbwp[bwp_id-1]->bwp_Common : &mac->scc_SIB->downlinkConfigCommon.initialDownlinkBWP;
|
NR_BWP_DownlinkCommon_t *bwp_Common = (bwp_id>0) ? mac->DLbwp[bwp_id-1]->bwp_Common : &mac->scc_SIB->downlinkConfigCommon.initialDownlinkBWP;
|
||||||
|
|
||||||
LOG_D(NR_MAC, "[DCI_CONFIG] ra_rnti %p (%x) crnti %p (%x) t_crnti %p (%x)\n", &ra->ra_rnti, ra->ra_rnti, &mac->crnti, mac->crnti, &ra->t_crnti, ra->t_crnti);
|
LOG_D(NR_MAC, "[DCI_CONFIG] ra_rnti %p (%x) crnti %p (%x) t_crnti %p (%x)\n", &ra->ra_rnti, ra->ra_rnti, &mac->crnti, mac->crnti, &ra->t_crnti, ra->t_crnti);
|
||||||
|
|
||||||
// loop over all available SS for CORESET ID 1
|
// loop over all available SS for bwp_id
|
||||||
if (bwpd) {
|
if (bwpd) {
|
||||||
for (ss_id = 0; ss_id < FAPI_NR_MAX_SS_PER_CORESET && mac->SSpace[bwp_id][coreset_id - 1][ss_id] != NULL; ss_id++){
|
for (ss_id = 1; ss_id <= FAPI_NR_MAX_SS_PER_CORESET && mac->SSpace[bwp_id][ss_id-1] != NULL; ss_id++){
|
||||||
LOG_D(NR_MAC, "[DCI_CONFIG] ss_id %d\n",ss_id);
|
LOG_D(NR_MAC, "[DCI_CONFIG] ss_id %d\n",ss_id);
|
||||||
NR_SearchSpace_t *ss = mac->SSpace[bwp_id][coreset_id - 1][ss_id];
|
NR_SearchSpace_t *ss = mac->SSpace[bwp_id][ss_id-1];
|
||||||
|
AssertFatal(ss_id == ss->searchSpaceId,"SS IDs don't correspond\n");
|
||||||
fapi_nr_dl_config_dci_dl_pdu_rel15_t *rel15 = &dl_config->dl_config_list[dl_config->number_pdus].dci_config_pdu.dci_config_rel15;
|
fapi_nr_dl_config_dci_dl_pdu_rel15_t *rel15 = &dl_config->dl_config_list[dl_config->number_pdus].dci_config_pdu.dci_config_rel15;
|
||||||
NR_SetupRelease_PDCCH_ConfigCommon_t *pdcch_ConfigCommon = bwp_Common->pdcch_ConfigCommon;
|
NR_SetupRelease_PDCCH_ConfigCommon_t *pdcch_ConfigCommon = bwp_Common->pdcch_ConfigCommon;
|
||||||
struct NR_PhysicalCellGroupConfig *phy_cgc = mac->cg->physicalCellGroupConfig;
|
struct NR_PhysicalCellGroupConfig *phy_cgc = mac->cg->physicalCellGroupConfig;
|
||||||
@@ -274,15 +275,6 @@ void ue_dci_configuration(NR_UE_MAC_INST_t *mac, fapi_nr_dl_config_request_t *dl
|
|||||||
case NR_SearchSpace__searchSpaceType_PR_common:
|
case NR_SearchSpace__searchSpaceType_PR_common:
|
||||||
// this is for CSSs, we use BWP common and pdcch_ConfigCommon
|
// this is for CSSs, we use BWP common and pdcch_ConfigCommon
|
||||||
|
|
||||||
// Fetch configuration for searchSpaceZero
|
|
||||||
// note: The search space with the SearchSpaceId = 0 identifies the search space configured via PBCH (MIB) and in ServingCellConfigCommon (searchSpaceZero).
|
|
||||||
if (pdcch_ConfigCommon->choice.setup->searchSpaceZero){
|
|
||||||
if (pdcch_ConfigCommon->choice.setup->searchSpaceSIB1 == NULL){
|
|
||||||
pdcch_ConfigCommon->choice.setup->searchSpaceSIB1=calloc(1,sizeof(*pdcch_ConfigCommon->choice.setup->searchSpaceSIB1));
|
|
||||||
}
|
|
||||||
*pdcch_ConfigCommon->choice.setup->searchSpaceSIB1 = 0;
|
|
||||||
LOG_D(NR_MAC, "[DCI_CONFIG] Configure SearchSpace#0 of the initial BWP\n");
|
|
||||||
}
|
|
||||||
if (ss->searchSpaceType->choice.common->dci_Format0_0_AndFormat1_0){
|
if (ss->searchSpaceType->choice.common->dci_Format0_0_AndFormat1_0){
|
||||||
// check available SS IDs
|
// check available SS IDs
|
||||||
if (pdcch_ConfigCommon->choice.setup->ra_SearchSpace){
|
if (pdcch_ConfigCommon->choice.setup->ra_SearchSpace){
|
||||||
|
|||||||
Reference in New Issue
Block a user