fix for RA SS
This commit is contained in:
@@ -300,6 +300,8 @@ typedef struct {
|
|||||||
/// BeamfailurerecoveryConfig
|
/// BeamfailurerecoveryConfig
|
||||||
NR_BeamFailureRecoveryConfig_t RA_BeamFailureRecoveryConfig;
|
NR_BeamFailureRecoveryConfig_t RA_BeamFailureRecoveryConfig;
|
||||||
|
|
||||||
|
/// RA SearchSpace
|
||||||
|
NR_SearchSpace_t *ss;
|
||||||
} RA_config_t;
|
} RA_config_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
|||||||
@@ -79,6 +79,29 @@ void init_RA(module_id_t mod_id,
|
|||||||
prach_resources->POWER_OFFSET_2STEP_RA = 0;
|
prach_resources->POWER_OFFSET_2STEP_RA = 0;
|
||||||
prach_resources->RA_SCALING_FACTOR_BI = 1;
|
prach_resources->RA_SCALING_FACTOR_BI = 1;
|
||||||
|
|
||||||
|
struct NR_PDCCH_ConfigCommon__commonSearchSpaceList *commonSearchSpaceList;
|
||||||
|
NR_SearchSpaceId_t ss_id = 0;
|
||||||
|
NR_SearchSpace_t *ss = NULL;
|
||||||
|
if(mac->scc) {
|
||||||
|
commonSearchSpaceList = mac->scc->downlinkConfigCommon->initialDownlinkBWP->pdcch_ConfigCommon->choice.setup->commonSearchSpaceList;
|
||||||
|
ss_id = *mac->scc->downlinkConfigCommon->initialDownlinkBWP->pdcch_ConfigCommon->choice.setup->ra_SearchSpace;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if(mac->scc_SIB) {
|
||||||
|
commonSearchSpaceList = mac->scc_SIB->downlinkConfigCommon.initialDownlinkBWP.pdcch_ConfigCommon->choice.setup->commonSearchSpaceList;
|
||||||
|
ss_id = *mac->scc_SIB->downlinkConfigCommon.initialDownlinkBWP.pdcch_ConfigCommon->choice.setup->ra_SearchSpace;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
AssertFatal(1==0,"Both scc and scc_SIB are null\n");
|
||||||
|
}
|
||||||
|
AssertFatal(commonSearchSpaceList->list.count > 0, "common SearchSpace list has 0 elements\n");
|
||||||
|
// Common searchspace list
|
||||||
|
for (int i = 0; i < commonSearchSpaceList->list.count; i++) {
|
||||||
|
ss = commonSearchSpaceList->list.array[i];
|
||||||
|
if (ss->searchSpaceId == ss_id)
|
||||||
|
ra->ss = ss;
|
||||||
|
}
|
||||||
|
|
||||||
if (rach_ConfigDedicated) {
|
if (rach_ConfigDedicated) {
|
||||||
if (rach_ConfigDedicated->cfra){
|
if (rach_ConfigDedicated->cfra){
|
||||||
LOG_I(MAC, "Initialization of 2-step contention-free random access procedure\n");
|
LOG_I(MAC, "Initialization of 2-step contention-free random access procedure\n");
|
||||||
@@ -682,8 +705,8 @@ void nr_get_RA_window(NR_UE_MAC_INST_t *mac){
|
|||||||
AssertFatal(&setup->rach_ConfigGeneric != NULL, "In %s: FATAL! rach_ConfigGeneric is NULL...\n", __FUNCTION__);
|
AssertFatal(&setup->rach_ConfigGeneric != NULL, "In %s: FATAL! rach_ConfigGeneric is NULL...\n", __FUNCTION__);
|
||||||
NR_RACH_ConfigGeneric_t *rach_ConfigGeneric = &setup->rach_ConfigGeneric;
|
NR_RACH_ConfigGeneric_t *rach_ConfigGeneric = &setup->rach_ConfigGeneric;
|
||||||
long scs = (mac->scc) ?
|
long scs = (mac->scc) ?
|
||||||
&mac->scc->downlinkConfigCommon->frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing :
|
mac->scc->downlinkConfigCommon->frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing :
|
||||||
&mac->scc_SIB->downlinkConfigCommon.frequencyInfoDL.scs_SpecificCarrierList.list.array[0]->subcarrierSpacing;
|
mac->scc_SIB->downlinkConfigCommon.frequencyInfoDL.scs_SpecificCarrierList.list.array[0]->subcarrierSpacing;
|
||||||
|
|
||||||
ra_ResponseWindow = rach_ConfigGeneric->ra_ResponseWindow;
|
ra_ResponseWindow = rach_ConfigGeneric->ra_ResponseWindow;
|
||||||
|
|
||||||
|
|||||||
@@ -861,12 +861,11 @@ NR_UE_L2_STATE_t nr_ue_scheduler(nr_downlink_indication_t *dl_info, nr_uplink_in
|
|||||||
else {
|
else {
|
||||||
// this is for Msg2/Msg4
|
// this is for Msg2/Msg4
|
||||||
if (mac->ra.ra_state >= WAIT_RAR) {
|
if (mac->ra.ra_state >= WAIT_RAR) {
|
||||||
NR_SearchSpace_t *ss0 = mac->search_space_zero;
|
|
||||||
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;
|
||||||
rel15->num_dci_options = 1;
|
rel15->num_dci_options = 1;
|
||||||
rel15->dci_format_options[0] = NR_DL_DCI_FORMAT_1_0;
|
rel15->dci_format_options[0] = NR_DL_DCI_FORMAT_1_0;
|
||||||
config_dci_pdu(mac, rel15, dl_config, mac->ra.ra_state == WAIT_RAR ? NR_RNTI_RA : NR_RNTI_TC , -1);
|
config_dci_pdu(mac, rel15, dl_config, mac->ra.ra_state == WAIT_RAR ? NR_RNTI_RA : NR_RNTI_TC , -1);
|
||||||
fill_dci_search_candidates(ss0, rel15);
|
fill_dci_search_candidates(mac->ra.ss, rel15);
|
||||||
dl_config->number_pdus = 1;
|
dl_config->number_pdus = 1;
|
||||||
LOG_D(MAC,"mac->cg %p: Calling fill_scheduled_response rnti %x, type0_pdcch, num_pdus %d\n",mac->cg,rel15->rnti,dl_config->number_pdus);
|
LOG_D(MAC,"mac->cg %p: Calling fill_scheduled_response rnti %x, type0_pdcch, num_pdus %d\n",mac->cg,rel15->rnti,dl_config->number_pdus);
|
||||||
fill_scheduled_response(&scheduled_response, dl_config, NULL, NULL, mod_id, cc_id, rx_frame, rx_slot, dl_info->thread_id);
|
fill_scheduled_response(&scheduled_response, dl_config, NULL, NULL, mod_id, cc_id, rx_frame, rx_slot, dl_info->thread_id);
|
||||||
|
|||||||
@@ -897,13 +897,7 @@ void nr_generate_Msg2(module_id_t module_idP, int CC_id, frame_t frameP, sub_fra
|
|||||||
if(ra->ra_ss) {
|
if(ra->ra_ss) {
|
||||||
ss = ra->ra_ss;
|
ss = ra->ra_ss;
|
||||||
} else {
|
} else {
|
||||||
if (nr_mac->sched_ctrlCommon == NULL){
|
AssertFatal(1==0,"RA SS missing\n");
|
||||||
nr_mac->sched_ctrlCommon = calloc(1,sizeof(*nr_mac->sched_ctrlCommon));
|
|
||||||
}
|
|
||||||
if(nr_mac->sched_ctrlCommon->search_space == NULL)
|
|
||||||
AssertFatal(1==0,"This seach space should have been already filled in SIB1\n");
|
|
||||||
else
|
|
||||||
ss = nr_mac->sched_ctrlCommon->search_space;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
NR_BWP_Downlink_t *bwp = NULL;
|
NR_BWP_Downlink_t *bwp = NULL;
|
||||||
@@ -1169,13 +1163,7 @@ void nr_generate_Msg4(module_id_t module_idP, int CC_id, frame_t frameP, sub_fra
|
|||||||
if(ra->ra_ss) {
|
if(ra->ra_ss) {
|
||||||
ss = ra->ra_ss;
|
ss = ra->ra_ss;
|
||||||
} else {
|
} else {
|
||||||
if (nr_mac->sched_ctrlCommon == NULL){
|
AssertFatal(1==0,"RA SS missing\n");
|
||||||
nr_mac->sched_ctrlCommon = calloc(1,sizeof(*nr_mac->sched_ctrlCommon));
|
|
||||||
}
|
|
||||||
if(nr_mac->sched_ctrlCommon->search_space == NULL)
|
|
||||||
AssertFatal(1==0,"This seach space should have been already filled in SIB1\n");
|
|
||||||
else
|
|
||||||
ss = nr_mac->sched_ctrlCommon->search_space;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
NR_BWP_Downlink_t *bwp = ra->CellGroup ? ra->CellGroup->spCellConfig->spCellConfigDedicated->downlinkBWP_ToAddModList->list.array[ra->bwp_id - 1] : NULL;
|
NR_BWP_Downlink_t *bwp = ra->CellGroup ? ra->CellGroup->spCellConfig->spCellConfigDedicated->downlinkBWP_ToAddModList->list.array[ra->bwp_id - 1] : NULL;
|
||||||
|
|||||||
@@ -1005,7 +1005,6 @@ int nr_decode_SI( const protocol_ctxt_t *const ctxt_pP, const uint8_t gNB_index
|
|||||||
}
|
}
|
||||||
if (new_sib == 1) {
|
if (new_sib == 1) {
|
||||||
NR_UE_rrc_inst[ctxt_pP->module_id].Info[gNB_index].SIcnt++;
|
NR_UE_rrc_inst[ctxt_pP->module_id].Info[gNB_index].SIcnt++;
|
||||||
|
|
||||||
if (NR_UE_rrc_inst[ctxt_pP->module_id].Info[gNB_index].SIcnt == sib1->si_SchedulingInfo->schedulingInfoList.list.count)
|
if (NR_UE_rrc_inst[ctxt_pP->module_id].Info[gNB_index].SIcnt == sib1->si_SchedulingInfo->schedulingInfoList.list.count)
|
||||||
nr_rrc_set_sub_state( ctxt_pP->module_id, RRC_SUB_STATE_IDLE_SIB_COMPLETE );
|
nr_rrc_set_sub_state( ctxt_pP->module_id, RRC_SUB_STATE_IDLE_SIB_COMPLETE );
|
||||||
|
|
||||||
@@ -1126,13 +1125,12 @@ int8_t nr_rrc_ue_generate_ra_msg(module_id_t module_id, uint8_t gNB_index) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int8_t nr_rrc_ue_decode_NR_BCCH_DL_SCH_Message(
|
int8_t nr_rrc_ue_decode_NR_BCCH_DL_SCH_Message(module_id_t module_id,
|
||||||
module_id_t module_id,
|
const uint8_t gNB_index,
|
||||||
const uint8_t gNB_index,
|
uint8_t *const Sdu,
|
||||||
uint8_t *const Sdu,
|
const uint8_t Sdu_len,
|
||||||
const uint8_t Sdu_len,
|
const uint8_t rsrq,
|
||||||
const uint8_t rsrq,
|
const uint8_t rsrp) {
|
||||||
const uint8_t rsrp) {
|
|
||||||
|
|
||||||
NR_BCCH_DL_SCH_Message_t *bcch_message = NULL;
|
NR_BCCH_DL_SCH_Message_t *bcch_message = NULL;
|
||||||
NR_SIB1_t *sib1 = NR_UE_rrc_inst[module_id].sib1[gNB_index];
|
NR_SIB1_t *sib1 = NR_UE_rrc_inst[module_id].sib1[gNB_index];
|
||||||
|
|||||||
Reference in New Issue
Block a user