calling get_searchspace/coreset inside BWP function
This commit is contained in:
@@ -570,7 +570,7 @@ void nr_initiate_ra_proc(module_id_t module_idP,
|
||||
ra_rnti = 1 + symbol + (slotP * 14) + (freq_index * 14 * 80) + (ul_carrier_id * 14 * 80 * 8);
|
||||
|
||||
// Configure RA BWP
|
||||
configure_UE_BWP(&ra->BWP, scc, ra->CellGroup);
|
||||
configure_UE_BWP(nr_mac, &ra->BWP, scc, NULL, ra->CellGroup);
|
||||
|
||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_INITIATE_RA_PROC, 1);
|
||||
|
||||
@@ -601,7 +601,7 @@ void nr_initiate_ra_proc(module_id_t module_idP,
|
||||
ra->timing_offset = timing_offset;
|
||||
ra->preamble_slot = slotP;
|
||||
|
||||
NR_SearchSpaceId_t ra_SearchSpace = 0;
|
||||
NR_SearchSpaceId_t ra_SearchSpace = 0;
|
||||
struct NR_PDCCH_ConfigCommon__commonSearchSpaceList *commonSearchSpaceList = NULL;
|
||||
NR_BWP_Downlink_t *bwp=NULL;
|
||||
if (ra->CellGroup && ra->CellGroup->spCellConfig && ra->CellGroup->spCellConfig->spCellConfigDedicated) {
|
||||
|
||||
@@ -266,6 +266,7 @@ NR_ControlResourceSet_t *get_coreset(gNB_MAC_INST *nrmac,
|
||||
void *bwp,
|
||||
NR_SearchSpace_t *ss,
|
||||
NR_SearchSpace__searchSpaceType_PR ss_type) {
|
||||
|
||||
NR_ControlResourceSetId_t coreset_id = *ss->controlResourceSetId;
|
||||
|
||||
if (ss_type == NR_SearchSpace__searchSpaceType_PR_common) { // common search space
|
||||
@@ -297,29 +298,22 @@ NR_ControlResourceSet_t *get_coreset(gNB_MAC_INST *nrmac,
|
||||
}
|
||||
}
|
||||
|
||||
NR_SearchSpace_t *get_searchspace(const NR_SIB1_t *sib1,
|
||||
NR_ServingCellConfigCommon_t *scc,
|
||||
NR_SearchSpace_t *get_searchspace(NR_ServingCellConfigCommon_t *scc,
|
||||
NR_BWP_DownlinkDedicated_t *bwp_Dedicated,
|
||||
NR_SearchSpace__searchSpaceType_PR target_ss) {
|
||||
|
||||
int n = 0;
|
||||
if(bwp_Dedicated) {
|
||||
if(bwp_Dedicated)
|
||||
n = bwp_Dedicated->pdcch_Config->choice.setup->searchSpacesToAddModList->list.count;
|
||||
} else if(scc) {
|
||||
else
|
||||
n = scc->downlinkConfigCommon->initialDownlinkBWP->pdcch_ConfigCommon->choice.setup->commonSearchSpaceList->list.count;
|
||||
} else {
|
||||
n = sib1->servingCellConfigCommon->downlinkConfigCommon.initialDownlinkBWP.pdcch_ConfigCommon->choice.setup->commonSearchSpaceList->list.count;
|
||||
}
|
||||
|
||||
for (int i=0;i<n;i++) {
|
||||
NR_SearchSpace_t *ss = NULL;
|
||||
if(bwp_Dedicated) {
|
||||
if(bwp_Dedicated)
|
||||
ss = bwp_Dedicated->pdcch_Config->choice.setup->searchSpacesToAddModList->list.array[i];
|
||||
} else if(scc) {
|
||||
else
|
||||
ss = scc->downlinkConfigCommon->initialDownlinkBWP->pdcch_ConfigCommon->choice.setup->commonSearchSpaceList->list.array[i];
|
||||
} else {
|
||||
ss = sib1->servingCellConfigCommon->downlinkConfigCommon.initialDownlinkBWP.pdcch_ConfigCommon->choice.setup->commonSearchSpaceList->list.array[i];
|
||||
}
|
||||
AssertFatal(ss->controlResourceSetId != NULL, "ss->controlResourceSetId is null\n");
|
||||
AssertFatal(ss->searchSpaceType != NULL, "ss->searchSpaceType is null\n");
|
||||
if (ss->searchSpaceType->present == target_ss) {
|
||||
@@ -2324,19 +2318,27 @@ void delete_nr_ue_data(NR_UE_info_t *UE, NR_COMMON_channels_t *ccPtr)
|
||||
}
|
||||
}
|
||||
|
||||
void configure_UE_BWP(NR_UE_BWP_t *BWP,
|
||||
void configure_UE_BWP(gNB_MAC_INST *nr_mac,
|
||||
NR_UE_BWP_t *BWP,
|
||||
NR_ServingCellConfigCommon_t *scc,
|
||||
NR_UE_sched_ctrl_t *sched_ctrl,
|
||||
NR_CellGroupConfig_t *CellGroup) {
|
||||
|
||||
NR_BWP_Downlink_t *dl_bwp = NULL;
|
||||
NR_BWP_Uplink_t *ul_bwp = NULL;
|
||||
NR_BWP_DownlinkDedicated_t *bwpd = NULL;
|
||||
NR_BWP_UplinkDedicated_t *ubwpd = NULL;
|
||||
|
||||
int target_ss;
|
||||
|
||||
if (CellGroup &&
|
||||
CellGroup->spCellConfig &&
|
||||
CellGroup->spCellConfig->spCellConfigDedicated) {
|
||||
const NR_ServingCellConfig_t *servingCellConfig = CellGroup->spCellConfig->spCellConfigDedicated;
|
||||
|
||||
// (re)configuring BWP ID
|
||||
const NR_ServingCellConfig_t *servingCellConfig = CellGroup->spCellConfig->spCellConfigDedicated;
|
||||
target_ss = NR_SearchSpace__searchSpaceType_PR_ue_Specific;
|
||||
|
||||
// (re)configuring BWP
|
||||
// TODO BWP switching not via RRC reconfiguration
|
||||
// via RRC if firstActiveXlinkBWP_Id is NULL, MAC stays on the same BWP as before
|
||||
if (servingCellConfig->firstActiveDownlinkBWP_Id) {
|
||||
@@ -2349,10 +2351,9 @@ void configure_UE_BWP(NR_UE_BWP_t *BWP,
|
||||
const struct NR_ServingCellConfig__downlinkBWP_ToAddModList *bwpList = servingCellConfig->downlinkBWP_ToAddModList;
|
||||
if (BWP->dl_bwp_id>0) {
|
||||
for (int i=0; i<bwpList->list.count; i++) {
|
||||
if(dl_bwp->bwp_Id == BWP->dl_bwp_id) {
|
||||
dl_bwp = bwpList->list.array[i - 1];
|
||||
dl_bwp = bwpList->list.array[i];
|
||||
if(dl_bwp->bwp_Id == BWP->dl_bwp_id)
|
||||
break;
|
||||
}
|
||||
}
|
||||
AssertFatal(dl_bwp!=NULL,"Couldn't find DLBWP corresponding to BWP ID %ld\n",BWP->dl_bwp_id);
|
||||
}
|
||||
@@ -2360,15 +2361,30 @@ void configure_UE_BWP(NR_UE_BWP_t *BWP,
|
||||
const struct NR_UplinkConfig__uplinkBWP_ToAddModList *ubwpList = servingCellConfig->uplinkConfig->uplinkBWP_ToAddModList;
|
||||
if (BWP->ul_bwp_id>0) {
|
||||
for (int i=0; i<ubwpList->list.count; i++) {
|
||||
if(ul_bwp->bwp_Id == BWP->ul_bwp_id) {
|
||||
ul_bwp = ubwpList->list.array[i - 1];
|
||||
ul_bwp = ubwpList->list.array[i];
|
||||
if(ul_bwp->bwp_Id == BWP->ul_bwp_id)
|
||||
break;
|
||||
}
|
||||
}
|
||||
AssertFatal(ul_bwp!=NULL,"Couldn't find DLBWP corresponding to BWP ID %ld\n",BWP->ul_bwp_id);
|
||||
}
|
||||
|
||||
// selection of dedicated BWPs
|
||||
if(dl_bwp)
|
||||
bwpd = dl_bwp->bwp_Dedicated;
|
||||
else
|
||||
bwpd = servingCellConfig->initialDownlinkBWP;
|
||||
if(ul_bwp)
|
||||
ubwpd = ul_bwp->bwp_Dedicated;
|
||||
else
|
||||
ubwpd = servingCellConfig->uplinkConfig->initialUplinkBWP;
|
||||
}
|
||||
else {
|
||||
BWP->dl_bwp_id = 0;
|
||||
BWP->ul_bwp_id = 0;
|
||||
target_ss = NR_SearchSpace__searchSpaceType_PR_common;
|
||||
}
|
||||
|
||||
// acquiring generic parameters
|
||||
BWP->dl_genericParameters = (BWP->dl_bwp_id>0 && dl_bwp) ?
|
||||
&dl_bwp->bwp_Common->genericParameters:
|
||||
&scc->downlinkConfigCommon->initialDownlinkBWP->genericParameters;
|
||||
@@ -2376,6 +2392,24 @@ void configure_UE_BWP(NR_UE_BWP_t *BWP,
|
||||
BWP->ul_genericParameters = (BWP->ul_bwp_id>0 && ul_bwp) ?
|
||||
&ul_bwp->bwp_Common->genericParameters:
|
||||
&scc->uplinkConfigCommon->initialUplinkBWP->genericParameters;
|
||||
|
||||
if(sched_ctrl) {
|
||||
sched_ctrl->search_space = get_searchspace(scc,
|
||||
bwpd,
|
||||
target_ss);
|
||||
sched_ctrl->coreset = get_coreset(nr_mac,
|
||||
scc,
|
||||
bwpd,
|
||||
sched_ctrl->search_space,
|
||||
target_ss);
|
||||
|
||||
sched_ctrl->sched_pdcch = set_pdcch_structure(nr_mac,
|
||||
sched_ctrl->search_space,
|
||||
sched_ctrl->coreset,
|
||||
scc,
|
||||
BWP->dl_genericParameters,
|
||||
nr_mac->type0_PDCCH_CSS_config);
|
||||
}
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
@@ -2428,7 +2462,7 @@ NR_UE_info_t *add_new_nr_ue(gNB_MAC_INST *nr_mac, rnti_t rntiP, NR_CellGroupConf
|
||||
// initialize UE BWP information
|
||||
NR_UE_BWP_t *BWP = &UE->current_BWP;
|
||||
memset(BWP, 0, sizeof(*BWP));
|
||||
configure_UE_BWP(BWP, scc, CellGroup);
|
||||
configure_UE_BWP(nr_mac, BWP, scc, sched_ctrl, CellGroup);
|
||||
|
||||
/* set illegal time domain allocation to force recomputation of all fields */
|
||||
sched_ctrl->pdsch_semi_static.time_domain_allocation = -1;
|
||||
@@ -2440,23 +2474,6 @@ NR_UE_info_t *add_new_nr_ue(gNB_MAC_INST *nr_mac, rnti_t rntiP, NR_CellGroupConf
|
||||
|
||||
sched_ctrl->active_bwp = bwpList && BWP->dl_bwp_id > 0 ? bwpList->list.array[BWP->dl_bwp_id - 1] : NULL;
|
||||
|
||||
const int target_ss = sched_ctrl->active_bwp ? NR_SearchSpace__searchSpaceType_PR_ue_Specific : NR_SearchSpace__searchSpaceType_PR_common;
|
||||
const NR_SIB1_t *sib1 = nr_mac->common_channels[0].sib1 ? nr_mac->common_channels[0].sib1->message.choice.c1->choice.systemInformationBlockType1 : NULL;
|
||||
sched_ctrl->search_space = get_searchspace(sib1,
|
||||
scc,
|
||||
sched_ctrl->active_bwp ? sched_ctrl->active_bwp->bwp_Dedicated : NULL,
|
||||
target_ss);
|
||||
sched_ctrl->coreset = get_coreset(nr_mac,
|
||||
scc,
|
||||
sched_ctrl->active_bwp ? sched_ctrl->active_bwp->bwp_Dedicated : NULL,
|
||||
sched_ctrl->search_space,
|
||||
target_ss);
|
||||
sched_ctrl->sched_pdcch = set_pdcch_structure(nr_mac,
|
||||
sched_ctrl->search_space,
|
||||
sched_ctrl->coreset,
|
||||
scc,
|
||||
BWP->dl_genericParameters,
|
||||
NULL);
|
||||
sched_ctrl->next_dl_bwp_id = -1;
|
||||
sched_ctrl->next_ul_bwp_id = -1;
|
||||
const struct NR_UplinkConfig__uplinkBWP_ToAddModList *ubwpList = servingCellConfig ? servingCellConfig->uplinkConfig->uplinkBWP_ToAddModList : NULL;
|
||||
@@ -2944,30 +2961,20 @@ void nr_mac_update_timers(module_id_t module_id,
|
||||
}
|
||||
}
|
||||
|
||||
configure_UE_BWP(BWP, scc, UE->CellGroup);
|
||||
configure_UE_BWP(RC.nrmac[module_id], BWP, scc, sched_ctrl, UE->CellGroup);
|
||||
|
||||
// Update coreset/searchspace
|
||||
NR_BWP_Downlink_t *bwp = sched_ctrl->active_bwp;
|
||||
NR_BWP_DownlinkDedicated_t *bwpd = NULL;
|
||||
int target_ss = NR_SearchSpace__searchSpaceType_PR_common;
|
||||
if (bwp) {
|
||||
target_ss = NR_SearchSpace__searchSpaceType_PR_ue_Specific;
|
||||
bwpd = sched_ctrl->active_bwp->bwp_Dedicated;
|
||||
} else if (cg &&
|
||||
cg->spCellConfig &&
|
||||
cg->spCellConfig->spCellConfigDedicated &&
|
||||
(cg->spCellConfig->spCellConfigDedicated->initialDownlinkBWP)) {
|
||||
target_ss = NR_SearchSpace__searchSpaceType_PR_ue_Specific;
|
||||
bwpd = cg->spCellConfig->spCellConfigDedicated->initialDownlinkBWP;
|
||||
}
|
||||
sched_ctrl->search_space = get_searchspace(sib1, scc, (void*)bwpd, target_ss);
|
||||
sched_ctrl->coreset = get_coreset(RC.nrmac[module_id], scc, (void*)bwpd, sched_ctrl->search_space, target_ss);
|
||||
sched_ctrl->sched_pdcch = set_pdcch_structure(RC.nrmac[module_id],
|
||||
sched_ctrl->search_space,
|
||||
sched_ctrl->coreset,
|
||||
scc,
|
||||
BWP->dl_genericParameters,
|
||||
RC.nrmac[module_id]->type0_PDCCH_CSS_config);
|
||||
|
||||
sched_ctrl->maxL = 2;
|
||||
if (cg &&
|
||||
cg->spCellConfig &&
|
||||
|
||||
@@ -332,8 +332,7 @@ NR_ControlResourceSet_t *get_coreset(gNB_MAC_INST *nrmac,
|
||||
NR_SearchSpace__searchSpaceType_PR ss_type);
|
||||
|
||||
/* find a search space within a BWP */
|
||||
NR_SearchSpace_t *get_searchspace(const NR_SIB1_t *sib1,
|
||||
NR_ServingCellConfigCommon_t *scc,
|
||||
NR_SearchSpace_t *get_searchspace(NR_ServingCellConfigCommon_t *scc,
|
||||
NR_BWP_DownlinkDedicated_t *bwp_Dedicated,
|
||||
NR_SearchSpace__searchSpaceType_PR target_ss);
|
||||
|
||||
@@ -396,8 +395,10 @@ NR_UE_info_t * find_nr_UE(NR_UEs_t* UEs, rnti_t rntiP);
|
||||
|
||||
int find_nr_RA_id(module_id_t mod_idP, int CC_idP, rnti_t rntiP);
|
||||
|
||||
void configure_UE_BWP(NR_UE_BWP_t *BWP,
|
||||
void configure_UE_BWP(gNB_MAC_INST *nr_mac,
|
||||
NR_UE_BWP_t *BWP,
|
||||
NR_ServingCellConfigCommon_t *scc,
|
||||
NR_UE_sched_ctrl_t *sched_ctrl,
|
||||
NR_CellGroupConfig_t *CellGroup);
|
||||
|
||||
NR_UE_info_t* add_new_nr_ue(gNB_MAC_INST *nr_mac, rnti_t rntiP, NR_CellGroupConfig_t *CellGroup);
|
||||
|
||||
Reference in New Issue
Block a user