Commit 9421fcc8 authored by francescomani's avatar francescomani

addressing review

parent c0f7e458
...@@ -861,6 +861,7 @@ int main(int argc, char **argv) ...@@ -861,6 +861,7 @@ int main(int argc, char **argv)
nr_l2_init_ue(NULL); nr_l2_init_ue(NULL);
UE_mac = get_mac_inst(0); UE_mac = get_mac_inst(0);
ue_init_config_request(UE_mac, mu);
UE->if_inst = nr_ue_if_module_init(0); UE->if_inst = nr_ue_if_module_init(0);
UE->if_inst->scheduled_response = nr_ue_scheduled_response; UE->if_inst->scheduled_response = nr_ue_scheduled_response;
...@@ -888,8 +889,8 @@ int main(int argc, char **argv) ...@@ -888,8 +889,8 @@ int main(int argc, char **argv)
//Configure UE //Configure UE
NR_BCCH_BCH_Message_t *mib = get_new_MIB_NR(scc); NR_BCCH_BCH_Message_t *mib = get_new_MIB_NR(scc);
nr_rrc_mac_config_req_mib(0, 0, 0, mib->message.choice.mib, false); nr_rrc_mac_config_req_mib(0, 0, mib->message.choice.mib, false);
nr_rrc_mac_config_req_scg(0, 0, 0, secondaryCellGroup); nr_rrc_mac_config_req_scg(0, 0, secondaryCellGroup);
nr_dcireq_t dcireq; nr_dcireq_t dcireq;
nr_scheduled_response_t scheduled_response; nr_scheduled_response_t scheduled_response;
......
...@@ -693,23 +693,17 @@ void configure_current_BWP(NR_UE_MAC_INST_t *mac, ...@@ -693,23 +693,17 @@ void configure_current_BWP(NR_UE_MAC_INST_t *mac,
} }
void init_config_request(NR_UE_MAC_INST_t *mac) void ue_init_config_request(NR_UE_MAC_INST_t *mac, int scs)
{ {
if(mac->dl_config_request == NULL && mac->ul_config_request == NULL) { int slots_per_frame = nr_slots_per_frame[scs];
int scs = mac->mib->subCarrierSpacingCommon; LOG_I(NR_MAC, "Initializing dl and ul config_request. num_slots = %d\n", slots_per_frame);
if(mac->frequency_range == FR2) mac->dl_config_request = calloc(slots_per_frame, sizeof(*mac->dl_config_request));
scs += 2; mac->ul_config_request = calloc(slots_per_frame, sizeof(*mac->ul_config_request));
int slots_per_frame = nr_slots_per_frame[scs]; for (int i = 0; i < slots_per_frame; i++)
LOG_I(NR_MAC, "Initializing dl and ul config_request. num_slots = %d\n", slots_per_frame); pthread_mutex_init(&(mac->ul_config_request[i].mutex_ul_config), NULL);
mac->dl_config_request = calloc(slots_per_frame, sizeof(*mac->dl_config_request));
mac->ul_config_request = calloc(slots_per_frame, sizeof(*mac->ul_config_request));
for (int i = 0; i < slots_per_frame; i++)
pthread_mutex_init(&(mac->ul_config_request[i].mutex_ul_config), NULL);
}
} }
void nr_rrc_mac_config_req_mib(module_id_t module_id, void nr_rrc_mac_config_req_mib(module_id_t module_id,
uint8_t gNB_index,
int cc_idP, int cc_idP,
NR_MIB_t *mib, NR_MIB_t *mib,
bool sched_sib1) bool sched_sib1)
...@@ -718,7 +712,6 @@ void nr_rrc_mac_config_req_mib(module_id_t module_id, ...@@ -718,7 +712,6 @@ void nr_rrc_mac_config_req_mib(module_id_t module_id,
AssertFatal(mib, "MIB should not be NULL\n"); AssertFatal(mib, "MIB should not be NULL\n");
// initialize dl and ul config_request upon first reception of MIB // initialize dl and ul config_request upon first reception of MIB
mac->mib = mib; // update by every reception mac->mib = mib; // update by every reception
init_config_request(mac);
mac->phy_config.Mod_id = module_id; mac->phy_config.Mod_id = module_id;
mac->phy_config.CC_id = cc_idP; mac->phy_config.CC_id = cc_idP;
mac->get_sib1 = sched_sib1; mac->get_sib1 = sched_sib1;
...@@ -726,7 +719,6 @@ void nr_rrc_mac_config_req_mib(module_id_t module_id, ...@@ -726,7 +719,6 @@ void nr_rrc_mac_config_req_mib(module_id_t module_id,
void nr_rrc_mac_config_req_sib1(module_id_t module_id, void nr_rrc_mac_config_req_sib1(module_id_t module_id,
int cc_idP, int cc_idP,
uint8_t gNB_index,
NR_ServingCellConfigCommonSIB_t *scc) NR_ServingCellConfigCommonSIB_t *scc)
{ {
NR_UE_MAC_INST_t *mac = get_mac_inst(module_id); NR_UE_MAC_INST_t *mac = get_mac_inst(module_id);
...@@ -745,7 +737,6 @@ void nr_rrc_mac_config_req_sib1(module_id_t module_id, ...@@ -745,7 +737,6 @@ void nr_rrc_mac_config_req_sib1(module_id_t module_id,
void nr_rrc_mac_config_req_mcg(module_id_t module_id, void nr_rrc_mac_config_req_mcg(module_id_t module_id,
int cc_idP, int cc_idP,
uint8_t gNB_index,
NR_CellGroupConfig_t *cell_group_config) NR_CellGroupConfig_t *cell_group_config)
{ {
LOG_I(MAC,"Applying CellGroupConfig from gNodeB\n"); LOG_I(MAC,"Applying CellGroupConfig from gNodeB\n");
...@@ -777,7 +768,7 @@ void nr_rrc_mac_config_req_mcg(module_id_t module_id, ...@@ -777,7 +768,7 @@ void nr_rrc_mac_config_req_mcg(module_id_t module_id,
mac->scc = cell_group_config->spCellConfig->reconfigurationWithSync->spCellConfigCommon; mac->scc = cell_group_config->spCellConfig->reconfigurationWithSync->spCellConfigCommon;
mac->nr_band = *mac->scc->downlinkConfigCommon->frequencyInfoDL->frequencyBandList.list.array[0]; mac->nr_band = *mac->scc->downlinkConfigCommon->frequencyInfoDL->frequencyBandList.list.array[0];
if (mac->scc_SIB) { if (mac->scc_SIB) {
free(mac->scc_SIB); ASN_STRUCT_FREE(asn_DEF_NR_ServingCellConfigCommonSIB, mac->scc_SIB);
mac->scc_SIB = NULL; mac->scc_SIB = NULL;
} }
mac->state = UE_NOT_SYNC; mac->state = UE_NOT_SYNC;
...@@ -806,7 +797,6 @@ void nr_rrc_mac_config_req_mcg(module_id_t module_id, ...@@ -806,7 +797,6 @@ void nr_rrc_mac_config_req_mcg(module_id_t module_id,
void nr_rrc_mac_config_req_scg(module_id_t module_id, void nr_rrc_mac_config_req_scg(module_id_t module_id,
int cc_idP, int cc_idP,
uint8_t gNB_index,
NR_CellGroupConfig_t *scell_group_config) NR_CellGroupConfig_t *scell_group_config)
{ {
......
...@@ -93,23 +93,19 @@ int nr_rrc_mac_config_req_ue_logicalChannelBearer(module_id_t module_id, ...@@ -93,23 +93,19 @@ int nr_rrc_mac_config_req_ue_logicalChannelBearer(module_id_t module_id,
void nr_rrc_mac_config_req_scg(module_id_t module_id, void nr_rrc_mac_config_req_scg(module_id_t module_id,
int cc_idP, int cc_idP,
uint8_t gNB_index,
NR_CellGroupConfig_t *scell_group_config); NR_CellGroupConfig_t *scell_group_config);
void nr_rrc_mac_config_req_mcg(module_id_t module_id, void nr_rrc_mac_config_req_mcg(module_id_t module_id,
int cc_idP, int cc_idP,
uint8_t gNB_index,
NR_CellGroupConfig_t *scell_group_config); NR_CellGroupConfig_t *scell_group_config);
void nr_rrc_mac_config_req_mib(module_id_t module_id, void nr_rrc_mac_config_req_mib(module_id_t module_id,
uint8_t gNB_index,
int cc_idP, int cc_idP,
NR_MIB_t *mibP, NR_MIB_t *mibP,
bool sched_sib1); bool sched_sib1);
void nr_rrc_mac_config_req_sib1(module_id_t module_id, void nr_rrc_mac_config_req_sib1(module_id_t module_id,
int cc_idP, int cc_idP,
uint8_t gNB_index,
NR_ServingCellConfigCommonSIB_t *scc); NR_ServingCellConfigCommonSIB_t *scc);
/**\brief initialization NR UE MAC instance(s), total number of MAC instance based on NB_NR_UE_MAC_INST*/ /**\brief initialization NR UE MAC instance(s), total number of MAC instance based on NB_NR_UE_MAC_INST*/
...@@ -425,6 +421,8 @@ void fill_dci_search_candidates(NR_SearchSpace_t *ss,fapi_nr_dl_config_dci_dl_pd ...@@ -425,6 +421,8 @@ void fill_dci_search_candidates(NR_SearchSpace_t *ss,fapi_nr_dl_config_dci_dl_pd
void build_ssb_to_ro_map(NR_UE_MAC_INST_t *mac); void build_ssb_to_ro_map(NR_UE_MAC_INST_t *mac);
void ue_init_config_request(NR_UE_MAC_INST_t *mac, int scs);
void configure_ss_coreset(NR_UE_MAC_INST_t *mac, void configure_ss_coreset(NR_UE_MAC_INST_t *mac,
NR_ServingCellConfig_t *scd, NR_ServingCellConfig_t *scd,
NR_BWP_Id_t dl_bwp_id); NR_BWP_Id_t dl_bwp_id);
......
...@@ -56,9 +56,17 @@ NR_UE_MAC_INST_t * nr_l2_init_ue(NR_UE_RRC_INST_t* rrc_inst) { ...@@ -56,9 +56,17 @@ NR_UE_MAC_INST_t * nr_l2_init_ue(NR_UE_RRC_INST_t* rrc_inst) {
for (int j = 0; j < NB_NR_UE_MAC_INST; j++) for (int j = 0; j < NB_NR_UE_MAC_INST; j++)
nr_ue_init_mac(j); nr_ue_init_mac(j);
int scs = get_softmodem_params()->sa ?
get_softmodem_params()->numerology :
rrc_inst ?
*rrc_inst->scell_group_config->spCellConfig->reconfigurationWithSync->spCellConfigCommon->ssbSubcarrierSpacing :
- 1;
if (scs > -1)
ue_init_config_request(nr_ue_mac_inst, scs);
if (rrc_inst && rrc_inst->scell_group_config) { if (rrc_inst && rrc_inst->scell_group_config) {
nr_rrc_mac_config_req_scg(0, 0, 0, rrc_inst->scell_group_config); nr_rrc_mac_config_req_scg(0, 0, rrc_inst->scell_group_config);
AssertFatal(rlc_module_init(0) == 0, "%s: Could not initialize RLC layer\n", __FUNCTION__); AssertFatal(rlc_module_init(0) == 0, "%s: Could not initialize RLC layer\n", __FUNCTION__);
if (IS_SOFTMODEM_NOS1){ if (IS_SOFTMODEM_NOS1){
// get default noS1 configuration // get default noS1 configuration
......
...@@ -220,9 +220,8 @@ void config_dci_pdu(NR_UE_MAC_INST_t *mac, fapi_nr_dl_config_dci_dl_pdu_rel15_t ...@@ -220,9 +220,8 @@ void config_dci_pdu(NR_UE_MAC_INST_t *mac, fapi_nr_dl_config_dci_dl_pdu_rel15_t
rel15->rnti = SI_RNTI; // SI-RNTI - 3GPP TS 38.321 Table 7.1-1: RNTI values rel15->rnti = SI_RNTI; // SI-RNTI - 3GPP TS 38.321 Table 7.1-1: RNTI values
if(mac->frequency_range == FR1) rel15->SubcarrierSpacing = mac->mib->subCarrierSpacingCommon;
rel15->SubcarrierSpacing = mac->mib->subCarrierSpacingCommon; if(mac->frequency_range == FR2)
else
rel15->SubcarrierSpacing = mac->mib->subCarrierSpacingCommon + 2; rel15->SubcarrierSpacing = mac->mib->subCarrierSpacingCommon + 2;
break; break;
case NR_RNTI_SFI: case NR_RNTI_SFI:
......
...@@ -676,9 +676,9 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fr ...@@ -676,9 +676,9 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fr
NR_Type0_PDCCH_CSS_config_t type0_PDCCH_CSS_config = mac->type0_PDCCH_CSS_config; NR_Type0_PDCCH_CSS_config_t type0_PDCCH_CSS_config = mac->type0_PDCCH_CSS_config;
mux_pattern = type0_PDCCH_CSS_config.type0_pdcch_ss_mux_pattern; mux_pattern = type0_PDCCH_CSS_config.type0_pdcch_ss_mux_pattern;
dl_config->dl_config_list[dl_config->number_pdus].pdu_type = FAPI_NR_DL_CONFIG_TYPE_SI_DLSCH; dl_config->dl_config_list[dl_config->number_pdus].pdu_type = FAPI_NR_DL_CONFIG_TYPE_SI_DLSCH;
if(mac->frequency_range == FR1) // in MIB SCS is signaled as 15or60 and 30or120
dlsch_config_pdu_1_0->SubcarrierSpacing = mac->mib->subCarrierSpacingCommon; dlsch_config_pdu_1_0->SubcarrierSpacing = mac->mib->subCarrierSpacingCommon;
else if(mac->frequency_range == FR2)
dlsch_config_pdu_1_0->SubcarrierSpacing = mac->mib->subCarrierSpacingCommon + 2; dlsch_config_pdu_1_0->SubcarrierSpacing = mac->mib->subCarrierSpacingCommon + 2;
if (pdsch_config) pdsch_config->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->dmrs_AdditionalPosition = NULL; // For PDSCH with mapping type A, the UE shall assume dmrs-AdditionalPosition='pos2' if (pdsch_config) pdsch_config->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->dmrs_AdditionalPosition = NULL; // For PDSCH with mapping type A, the UE shall assume dmrs-AdditionalPosition='pos2'
} else { } else {
......
...@@ -118,12 +118,8 @@ fapi_nr_ul_config_request_t *get_ul_config_request(NR_UE_MAC_INST_t *mac, int sl ...@@ -118,12 +118,8 @@ fapi_nr_ul_config_request_t *get_ul_config_request(NR_UE_MAC_INST_t *mac, int sl
int mu = mac->current_UL_BWP.scs; int mu = mac->current_UL_BWP.scs;
const int n = nr_slots_per_frame[mu]; const int n = nr_slots_per_frame[mu];
AssertFatal(fb_time < n, "Cannot schedule to a slot more than 1 frame away, ul_config_request is not big enough\n"); AssertFatal(fb_time < n, "Cannot schedule to a slot more than 1 frame away, ul_config_request is not big enough\n");
if (mac->ul_config_request) AssertFatal(mac->ul_config_request != NULL, "mac->ul_config_request not initialized, logic bug\n");
return &mac->ul_config_request[slot]; return &mac->ul_config_request[slot];
else {
LOG_E(NR_MAC, "mac->ul_config_request not set\n");
return NULL;
}
} }
/* /*
...@@ -132,12 +128,8 @@ fapi_nr_ul_config_request_t *get_ul_config_request(NR_UE_MAC_INST_t *mac, int sl ...@@ -132,12 +128,8 @@ fapi_nr_ul_config_request_t *get_ul_config_request(NR_UE_MAC_INST_t *mac, int sl
*/ */
fapi_nr_dl_config_request_t *get_dl_config_request(NR_UE_MAC_INST_t *mac, int slot) fapi_nr_dl_config_request_t *get_dl_config_request(NR_UE_MAC_INST_t *mac, int slot)
{ {
if (mac->dl_config_request) AssertFatal(mac->dl_config_request != NULL, "mac->dl_config_request not initialized, logic bug\n");
return &mac->dl_config_request[slot]; return &mac->dl_config_request[slot];
else {
LOG_E(NR_MAC, "mac->dl_config_request not set\n");
return NULL;
}
} }
void ul_layers_config(NR_UE_MAC_INST_t *mac, nfapi_nr_ue_pusch_pdu_t *pusch_config_pdu, dci_pdu_rel15_t *dci, nr_dci_format_t dci_format) void ul_layers_config(NR_UE_MAC_INST_t *mac, nfapi_nr_ue_pusch_pdu_t *pusch_config_pdu, dci_pdu_rel15_t *dci, nr_dci_format_t dci_format)
......
...@@ -1144,7 +1144,6 @@ int nr_ue_dl_indication(nr_downlink_indication_t *dl_info) ...@@ -1144,7 +1144,6 @@ int nr_ue_dl_indication(nr_downlink_indication_t *dl_info)
uint32_t ret_mask = 0x0; uint32_t ret_mask = 0x0;
module_id_t module_id = dl_info->module_id; module_id_t module_id = dl_info->module_id;
NR_UE_MAC_INST_t *mac = get_mac_inst(module_id); NR_UE_MAC_INST_t *mac = get_mac_inst(module_id);
fapi_nr_dl_config_request_t *dl_config = get_dl_config_request(mac, dl_info->slot);
if ((!dl_info->dci_ind && !dl_info->rx_ind)) { if ((!dl_info->dci_ind && !dl_info->rx_ind)) {
// UL indication to schedule DCI reception // UL indication to schedule DCI reception
...@@ -1179,6 +1178,7 @@ int nr_ue_dl_indication(nr_downlink_indication_t *dl_info) ...@@ -1179,6 +1178,7 @@ int nr_ue_dl_indication(nr_downlink_indication_t *dl_info)
if (ret >= 0) { if (ret >= 0) {
AssertFatal( nr_ue_if_module_inst[module_id] != NULL, "IF module is NULL!\n" ); AssertFatal( nr_ue_if_module_inst[module_id] != NULL, "IF module is NULL!\n" );
AssertFatal( nr_ue_if_module_inst[module_id]->scheduled_response != NULL, "scheduled_response is NULL!\n" ); AssertFatal( nr_ue_if_module_inst[module_id]->scheduled_response != NULL, "scheduled_response is NULL!\n" );
fapi_nr_dl_config_request_t *dl_config = get_dl_config_request(mac, dl_info->slot);
fill_scheduled_response(&scheduled_response, dl_config, NULL, NULL, dl_info->module_id, dl_info->cc_id, dl_info->frame, dl_info->slot, dl_info->phy_data); fill_scheduled_response(&scheduled_response, dl_config, NULL, NULL, dl_info->module_id, dl_info->cc_id, dl_info->frame, dl_info->slot, dl_info->phy_data);
nr_ue_if_module_inst[module_id]->scheduled_response(&scheduled_response); nr_ue_if_module_inst[module_id]->scheduled_response(&scheduled_response);
} }
......
...@@ -286,8 +286,7 @@ int8_t nr_rrc_ue_process_rrcReconfiguration(const module_id_t module_id, NR_RRCR ...@@ -286,8 +286,7 @@ int8_t nr_rrc_ue_process_rrcReconfiguration(const module_id_t module_id, NR_RRCR
nr_rrc_ue_process_scg_config(module_id,cellGroupConfig); nr_rrc_ue_process_scg_config(module_id,cellGroupConfig);
} }
if (get_softmodem_params()->nsa) { if (get_softmodem_params()->nsa) {
nr_rrc_mac_config_req_scg(0, 0, 0, cellGroupConfig); nr_rrc_mac_config_req_scg(0, 0, cellGroupConfig);
LOG_D(NR_RRC, "Filled scc now \n");
} }
} }
else else
...@@ -601,8 +600,8 @@ int8_t nr_rrc_ue_decode_NR_BCCH_BCH_Message(const module_id_t module_id, const u ...@@ -601,8 +600,8 @@ int8_t nr_rrc_ue_decode_NR_BCCH_BCH_Message(const module_id_t module_id, const u
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];
// if no sib1 because not acquired yet or expired, get a new one // if no sib1 because not acquired yet or expired, get a new one
bool get_sib1 = sib1 ? false : true; bool get_sib1 = sib1 == NULL;
nr_rrc_mac_config_req_mib(module_id, gNB_index, 0, NR_UE_rrc_inst[module_id].mib, get_sib1); nr_rrc_mac_config_req_mib(module_id, 0, NR_UE_rrc_inst[module_id].mib, get_sib1);
ret = 0; ret = 0;
} }
ASN_STRUCT_FREE(asn_DEF_NR_BCCH_BCH_Message, bcch_message); ASN_STRUCT_FREE(asn_DEF_NR_BCCH_BCH_Message, bcch_message);
...@@ -1212,7 +1211,7 @@ int8_t nr_rrc_ue_decode_NR_BCCH_DL_SCH_Message(module_id_t module_id, ...@@ -1212,7 +1211,7 @@ int8_t nr_rrc_ue_decode_NR_BCCH_DL_SCH_Message(module_id_t module_id,
} }
// take ServingCellConfigCommon and configure L1/L2 // take ServingCellConfigCommon and configure L1/L2
NR_UE_rrc_inst[module_id].servingCellConfigCommonSIB = sib1->servingCellConfigCommon; NR_UE_rrc_inst[module_id].servingCellConfigCommonSIB = sib1->servingCellConfigCommon;
nr_rrc_mac_config_req_sib1(module_id, 0, gNB_index, sib1->servingCellConfigCommon); nr_rrc_mac_config_req_sib1(module_id, 0, sib1->servingCellConfigCommon);
nr_rrc_ue_generate_ra_msg(module_id, gNB_index); nr_rrc_ue_generate_ra_msg(module_id, gNB_index);
} else { } else {
LOG_E(NR_RRC, "SIB1 not decoded\n"); LOG_E(NR_RRC, "SIB1 not decoded\n");
...@@ -1341,23 +1340,23 @@ void nr_rrc_ue_process_masterCellGroup(const protocol_ctxt_t *const ctxt_pP, ...@@ -1341,23 +1340,23 @@ void nr_rrc_ue_process_masterCellGroup(const protocol_ctxt_t *const ctxt_pP,
sizeof(struct NR_MAC_CellGroupConfig)); sizeof(struct NR_MAC_CellGroupConfig));
} }
if( cellGroupConfig->sCellToReleaseList != NULL){ if(cellGroupConfig->sCellToReleaseList != NULL) {
//TODO (perform SCell release as specified in 5.3.5.5.8) //TODO (perform SCell release as specified in 5.3.5.5.8)
} }
if( cellGroupConfig->spCellConfig != NULL){ if(cellGroupConfig->spCellConfig != NULL) {
if (NR_UE_rrc_inst[ctxt_pP->module_id].cell_group_config && if (NR_UE_rrc_inst[ctxt_pP->module_id].cell_group_config &&
NR_UE_rrc_inst[ctxt_pP->module_id].cell_group_config->spCellConfig) { NR_UE_rrc_inst[ctxt_pP->module_id].cell_group_config->spCellConfig) {
memcpy(NR_UE_rrc_inst[ctxt_pP->module_id].cell_group_config->spCellConfig,cellGroupConfig->spCellConfig, memcpy(NR_UE_rrc_inst[ctxt_pP->module_id].cell_group_config->spCellConfig,cellGroupConfig->spCellConfig,
sizeof(struct NR_SpCellConfig)); sizeof(struct NR_SpCellConfig));
} else { } else {
if (NR_UE_rrc_inst[ctxt_pP->module_id].cell_group_config) if (NR_UE_rrc_inst[ctxt_pP->module_id].cell_group_config)
NR_UE_rrc_inst[ctxt_pP->module_id].cell_group_config->spCellConfig = cellGroupConfig->spCellConfig; NR_UE_rrc_inst[ctxt_pP->module_id].cell_group_config->spCellConfig = cellGroupConfig->spCellConfig;
else else
NR_UE_rrc_inst[ctxt_pP->module_id].cell_group_config = cellGroupConfig; NR_UE_rrc_inst[ctxt_pP->module_id].cell_group_config = cellGroupConfig;
} }
LOG_D(RRC,"Sending CellGroupConfig to MAC\n"); LOG_D(RRC,"Sending CellGroupConfig to MAC\n");
nr_rrc_mac_config_req_mcg(ctxt_pP->module_id, 0, 0, cellGroupConfig); nr_rrc_mac_config_req_mcg(ctxt_pP->module_id, 0, cellGroupConfig);
//TODO (configure the SpCell as specified in 5.3.5.5.7) //TODO (configure the SpCell as specified in 5.3.5.5.7)
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment