Merge remote-tracking branch 'origin/NR_UE_fix_cset0_ss0' into integration_2024_w08
This commit is contained in:
@@ -420,9 +420,7 @@ void release_common_ss_cset(NR_BWP_PDCCH_t *pdcch)
|
|||||||
asn1cFreeStruc(asn_DEF_NR_SearchSpace, pdcch->otherSI_SS);
|
asn1cFreeStruc(asn_DEF_NR_SearchSpace, pdcch->otherSI_SS);
|
||||||
asn1cFreeStruc(asn_DEF_NR_SearchSpace, pdcch->ra_SS);
|
asn1cFreeStruc(asn_DEF_NR_SearchSpace, pdcch->ra_SS);
|
||||||
asn1cFreeStruc(asn_DEF_NR_SearchSpace, pdcch->paging_SS);
|
asn1cFreeStruc(asn_DEF_NR_SearchSpace, pdcch->paging_SS);
|
||||||
asn1cFreeStruc(asn_DEF_NR_SearchSpace, pdcch->search_space_zero);
|
|
||||||
asn1cFreeStruc(asn_DEF_NR_ControlResourceSet, pdcch->commonControlResourceSet);
|
asn1cFreeStruc(asn_DEF_NR_ControlResourceSet, pdcch->commonControlResourceSet);
|
||||||
asn1cFreeStruc(asn_DEF_NR_ControlResourceSet, pdcch->coreset0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void modlist_ss(NR_SearchSpace_t *source, NR_SearchSpace_t *target)
|
static void modlist_ss(NR_SearchSpace_t *source, NR_SearchSpace_t *target)
|
||||||
@@ -443,12 +441,13 @@ static void modlist_ss(NR_SearchSpace_t *source, NR_SearchSpace_t *target)
|
|||||||
UPDATE_MAC_IE(target->searchSpaceType, source->searchSpaceType, struct NR_SearchSpace__searchSpaceType);
|
UPDATE_MAC_IE(target->searchSpaceType, source->searchSpaceType, struct NR_SearchSpace__searchSpaceType);
|
||||||
}
|
}
|
||||||
|
|
||||||
static NR_SearchSpace_t *get_common_search_space(const struct NR_PDCCH_ConfigCommon__commonSearchSpaceList *commonSearchSpaceList,
|
static NR_SearchSpace_t *get_common_search_space(const NR_UE_MAC_INST_t *mac,
|
||||||
|
const struct NR_PDCCH_ConfigCommon__commonSearchSpaceList *commonSearchSpaceList,
|
||||||
const NR_BWP_PDCCH_t *pdcch,
|
const NR_BWP_PDCCH_t *pdcch,
|
||||||
const NR_SearchSpaceId_t ss_id)
|
const NR_SearchSpaceId_t ss_id)
|
||||||
{
|
{
|
||||||
if (ss_id == 0)
|
if (ss_id == 0)
|
||||||
return pdcch->search_space_zero;
|
return mac->search_space_zero;
|
||||||
|
|
||||||
NR_SearchSpace_t *css = NULL;
|
NR_SearchSpace_t *css = NULL;
|
||||||
for (int i = 0; i < commonSearchSpaceList->list.count; i++) {
|
for (int i = 0; i < commonSearchSpaceList->list.count; i++) {
|
||||||
@@ -462,12 +461,15 @@ static NR_SearchSpace_t *get_common_search_space(const struct NR_PDCCH_ConfigCom
|
|||||||
return css;
|
return css;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void configure_common_ss_coreset(NR_BWP_PDCCH_t *pdcch, NR_PDCCH_ConfigCommon_t *pdcch_ConfigCommon)
|
static void configure_common_ss_coreset(const NR_UE_MAC_INST_t *mac,
|
||||||
|
NR_BWP_PDCCH_t *pdcch,
|
||||||
|
NR_PDCCH_ConfigCommon_t *pdcch_ConfigCommon)
|
||||||
{
|
{
|
||||||
if (pdcch_ConfigCommon) {
|
if (pdcch_ConfigCommon) {
|
||||||
asn1cFreeStruc(asn_DEF_NR_SearchSpace, pdcch->otherSI_SS);
|
asn1cFreeStruc(asn_DEF_NR_SearchSpace, pdcch->otherSI_SS);
|
||||||
if (pdcch_ConfigCommon->searchSpaceOtherSystemInformation)
|
if (pdcch_ConfigCommon->searchSpaceOtherSystemInformation)
|
||||||
pdcch->otherSI_SS = get_common_search_space(pdcch_ConfigCommon->commonSearchSpaceList,
|
pdcch->otherSI_SS = get_common_search_space(mac,
|
||||||
|
pdcch_ConfigCommon->commonSearchSpaceList,
|
||||||
pdcch,
|
pdcch,
|
||||||
*pdcch_ConfigCommon->searchSpaceOtherSystemInformation);
|
*pdcch_ConfigCommon->searchSpaceOtherSystemInformation);
|
||||||
|
|
||||||
@@ -477,7 +479,7 @@ static void configure_common_ss_coreset(NR_BWP_PDCCH_t *pdcch, NR_PDCCH_ConfigCo
|
|||||||
pdcch->ra_SS = pdcch->otherSI_SS;
|
pdcch->ra_SS = pdcch->otherSI_SS;
|
||||||
else
|
else
|
||||||
pdcch->ra_SS =
|
pdcch->ra_SS =
|
||||||
get_common_search_space(pdcch_ConfigCommon->commonSearchSpaceList, pdcch, *pdcch_ConfigCommon->ra_SearchSpace);
|
get_common_search_space(mac, pdcch_ConfigCommon->commonSearchSpaceList, pdcch, *pdcch_ConfigCommon->ra_SearchSpace);
|
||||||
}
|
}
|
||||||
|
|
||||||
asn1cFreeStruc(asn_DEF_NR_SearchSpace, pdcch->paging_SS);
|
asn1cFreeStruc(asn_DEF_NR_SearchSpace, pdcch->paging_SS);
|
||||||
@@ -488,7 +490,7 @@ static void configure_common_ss_coreset(NR_BWP_PDCCH_t *pdcch, NR_PDCCH_ConfigCo
|
|||||||
pdcch->paging_SS = pdcch->ra_SS;
|
pdcch->paging_SS = pdcch->ra_SS;
|
||||||
if (!pdcch->paging_SS)
|
if (!pdcch->paging_SS)
|
||||||
pdcch->paging_SS =
|
pdcch->paging_SS =
|
||||||
get_common_search_space(pdcch_ConfigCommon->commonSearchSpaceList, pdcch, *pdcch_ConfigCommon->pagingSearchSpace);
|
get_common_search_space(mac, pdcch_ConfigCommon->commonSearchSpaceList, pdcch, *pdcch_ConfigCommon->pagingSearchSpace);
|
||||||
}
|
}
|
||||||
|
|
||||||
UPDATE_MAC_IE(pdcch->commonControlResourceSet, pdcch_ConfigCommon->commonControlResourceSet, NR_ControlResourceSet_t);
|
UPDATE_MAC_IE(pdcch->commonControlResourceSet, pdcch_ConfigCommon->commonControlResourceSet, NR_ControlResourceSet_t);
|
||||||
@@ -1304,7 +1306,7 @@ static void configure_common_BWP_dl(NR_UE_MAC_INST_t *mac, int bwp_id, NR_BWP_Do
|
|||||||
NR_BWP_PDCCH_t *pdcch = &mac->config_BWP_PDCCH[bwp_id];
|
NR_BWP_PDCCH_t *pdcch = &mac->config_BWP_PDCCH[bwp_id];
|
||||||
if (dl_common->pdcch_ConfigCommon) {
|
if (dl_common->pdcch_ConfigCommon) {
|
||||||
if (dl_common->pdcch_ConfigCommon->present == NR_SetupRelease_PDCCH_ConfigCommon_PR_setup)
|
if (dl_common->pdcch_ConfigCommon->present == NR_SetupRelease_PDCCH_ConfigCommon_PR_setup)
|
||||||
configure_common_ss_coreset(pdcch, dl_common->pdcch_ConfigCommon->choice.setup);
|
configure_common_ss_coreset(mac, pdcch, dl_common->pdcch_ConfigCommon->choice.setup);
|
||||||
if (dl_common->pdcch_ConfigCommon->present == NR_SetupRelease_PDCCH_ConfigCommon_PR_release)
|
if (dl_common->pdcch_ConfigCommon->present == NR_SetupRelease_PDCCH_ConfigCommon_PR_release)
|
||||||
release_common_ss_cset(pdcch);
|
release_common_ss_cset(pdcch);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -446,9 +446,7 @@ typedef struct {
|
|||||||
NR_SearchSpace_t *otherSI_SS;
|
NR_SearchSpace_t *otherSI_SS;
|
||||||
NR_SearchSpace_t *ra_SS;
|
NR_SearchSpace_t *ra_SS;
|
||||||
NR_SearchSpace_t *paging_SS;
|
NR_SearchSpace_t *paging_SS;
|
||||||
NR_ControlResourceSet_t *coreset0;
|
|
||||||
NR_ControlResourceSet_t *commonControlResourceSet;
|
NR_ControlResourceSet_t *commonControlResourceSet;
|
||||||
NR_SearchSpace_t *search_space_zero;
|
|
||||||
A_SEQUENCE_OF(NR_ControlResourceSet_t) list_Coreset;
|
A_SEQUENCE_OF(NR_ControlResourceSet_t) list_Coreset;
|
||||||
A_SEQUENCE_OF(NR_SearchSpace_t) list_SS;
|
A_SEQUENCE_OF(NR_SearchSpace_t) list_SS;
|
||||||
} NR_BWP_PDCCH_t;
|
} NR_BWP_PDCCH_t;
|
||||||
@@ -472,6 +470,8 @@ typedef struct NR_UE_MAC_INST_s {
|
|||||||
A_SEQUENCE_OF(NR_UE_DL_BWP_t) dl_BWPs;
|
A_SEQUENCE_OF(NR_UE_DL_BWP_t) dl_BWPs;
|
||||||
A_SEQUENCE_OF(NR_UE_UL_BWP_t) ul_BWPs;
|
A_SEQUENCE_OF(NR_UE_UL_BWP_t) ul_BWPs;
|
||||||
NR_BWP_PDCCH_t config_BWP_PDCCH[MAX_NUM_BWP_UE];
|
NR_BWP_PDCCH_t config_BWP_PDCCH[MAX_NUM_BWP_UE];
|
||||||
|
NR_ControlResourceSet_t *coreset0;
|
||||||
|
NR_SearchSpace_t *search_space_zero;
|
||||||
NR_UE_DL_BWP_t *current_DL_BWP;
|
NR_UE_DL_BWP_t *current_DL_BWP;
|
||||||
NR_UE_UL_BWP_t *current_UL_BWP;
|
NR_UE_UL_BWP_t *current_UL_BWP;
|
||||||
|
|
||||||
|
|||||||
@@ -223,6 +223,9 @@ void release_mac_configuration(NR_UE_MAC_INST_t *mac)
|
|||||||
for (int i = 0; i < mac->ul_BWPs.count; i++)
|
for (int i = 0; i < mac->ul_BWPs.count; i++)
|
||||||
release_ul_BWP(mac, i);
|
release_ul_BWP(mac, i);
|
||||||
|
|
||||||
|
asn1cFreeStruc(asn_DEF_NR_SearchSpace, mac->search_space_zero);
|
||||||
|
asn1cFreeStruc(asn_DEF_NR_ControlResourceSet, mac->coreset0);
|
||||||
|
|
||||||
for (int i = 0; i < mac->lc_ordered_list.count; i++) {
|
for (int i = 0; i < mac->lc_ordered_list.count; i++) {
|
||||||
nr_lcordered_info_t *lc_info = mac->lc_ordered_list.array[i];
|
nr_lcordered_info_t *lc_info = mac->lc_ordered_list.array[i];
|
||||||
asn_sequence_del(&mac->lc_ordered_list, i, 0);
|
asn_sequence_del(&mac->lc_ordered_list, i, 0);
|
||||||
|
|||||||
@@ -121,7 +121,7 @@ void config_dci_pdu(NR_UE_MAC_INST_t *mac,
|
|||||||
coreset = ue_get_coreset(pdcch_config, coreset_id);
|
coreset = ue_get_coreset(pdcch_config, coreset_id);
|
||||||
rel15->coreset.CoreSetType = NFAPI_NR_CSET_CONFIG_PDCCH_CONFIG;
|
rel15->coreset.CoreSetType = NFAPI_NR_CSET_CONFIG_PDCCH_CONFIG;
|
||||||
} else {
|
} else {
|
||||||
coreset = pdcch_config->coreset0;
|
coreset = mac->coreset0;
|
||||||
rel15->coreset.CoreSetType = NFAPI_NR_CSET_CONFIG_MIB_SIB1;
|
rel15->coreset.CoreSetType = NFAPI_NR_CSET_CONFIG_MIB_SIB1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -483,22 +483,22 @@ void ue_dci_configuration(NR_UE_MAC_INST_t *mac, fapi_nr_dl_config_request_t *dl
|
|||||||
mac->mib_ssb,
|
mac->mib_ssb,
|
||||||
1, // If the UE is not configured with a periodicity, the UE assumes a periodicity of a half frame
|
1, // If the UE is not configured with a periodicity, the UE assumes a periodicity of a half frame
|
||||||
ssb_offset_point_a);
|
ssb_offset_point_a);
|
||||||
if (pdcch_config->search_space_zero == NULL)
|
if (mac->search_space_zero == NULL)
|
||||||
pdcch_config->search_space_zero = calloc(1, sizeof(*pdcch_config->search_space_zero));
|
mac->search_space_zero = calloc(1, sizeof(*mac->search_space_zero));
|
||||||
if (pdcch_config->coreset0 == NULL)
|
if (mac->coreset0 == NULL)
|
||||||
pdcch_config->coreset0 = calloc(1, sizeof(*pdcch_config->coreset0));
|
mac->coreset0 = calloc(1, sizeof(*mac->coreset0));
|
||||||
fill_coresetZero(pdcch_config->coreset0, &mac->type0_PDCCH_CSS_config);
|
fill_coresetZero(mac->coreset0, &mac->type0_PDCCH_CSS_config);
|
||||||
fill_searchSpaceZero(pdcch_config->search_space_zero, slots_per_frame, &mac->type0_PDCCH_CSS_config);
|
fill_searchSpaceZero(mac->search_space_zero, slots_per_frame, &mac->type0_PDCCH_CSS_config);
|
||||||
if (is_ss_monitor_occasion(frame, slot, slots_per_frame, pdcch_config->search_space_zero)) {
|
if (is_ss_monitor_occasion(frame, slot, slots_per_frame, mac->search_space_zero)) {
|
||||||
LOG_D(NR_MAC, "Monitoring DCI for SIB1 in frame %d slot %d\n", frame, slot);
|
LOG_D(NR_MAC, "Monitoring DCI for SIB1 in frame %d slot %d\n", frame, slot);
|
||||||
config_dci_pdu(mac, dl_config, TYPE_SI_RNTI_, slot, pdcch_config->search_space_zero);
|
config_dci_pdu(mac, dl_config, TYPE_SI_RNTI_, slot, mac->search_space_zero);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (mac->get_otherSI) {
|
if (mac->get_otherSI) {
|
||||||
// If searchSpaceOtherSystemInformation is set to zero,
|
// If searchSpaceOtherSystemInformation is set to zero,
|
||||||
// PDCCH monitoring occasions for SI message reception in SI-window
|
// PDCCH monitoring occasions for SI message reception in SI-window
|
||||||
// are same as PDCCH monitoring occasions for SIB1
|
// are same as PDCCH monitoring occasions for SIB1
|
||||||
const NR_SearchSpace_t *ss = pdcch_config->otherSI_SS ? pdcch_config->otherSI_SS : pdcch_config->search_space_zero;
|
const NR_SearchSpace_t *ss = pdcch_config->otherSI_SS ? pdcch_config->otherSI_SS : mac->search_space_zero;
|
||||||
// TODO configure SI-window
|
// TODO configure SI-window
|
||||||
if (monitior_dci_for_other_SI(mac, ss, slots_per_frame, frame, slot)) {
|
if (monitior_dci_for_other_SI(mac, ss, slots_per_frame, frame, slot)) {
|
||||||
LOG_D(NR_MAC, "Monitoring DCI for other SIs in frame %d slot %d\n", frame, slot);
|
LOG_D(NR_MAC, "Monitoring DCI for other SIs in frame %d slot %d\n", frame, slot);
|
||||||
|
|||||||
Reference in New Issue
Block a user