From 3443248322d2fea10e7717f11b2c681dd63d201e Mon Sep 17 00:00:00 2001 From: francescomani Date: Tue, 2 Jan 2024 17:08:33 +0100 Subject: [PATCH] reworking NOS1 bearer configuration to take info from file --- executables/nr-ue.c | 25 ++----------------------- executables/nr-uesoftmodem.c | 7 ++++--- openair2/RRC/NR_UE/rrc_UE.c | 18 +++++++----------- 3 files changed, 13 insertions(+), 37 deletions(-) diff --git a/executables/nr-ue.c b/executables/nr-ue.c index 6e668c8901..e42fff1b4e 100644 --- a/executables/nr-ue.c +++ b/executables/nr-ue.c @@ -989,29 +989,8 @@ void init_NR_UE(int nb_inst, char *uecap_file, char *reconfig_file, char *rbconf NR_UE_MAC_INST_t *mac = get_mac_inst(i); AssertFatal((mac->if_module = nr_ue_if_module_init(i)) != NULL, "can not initialize IF module\n"); if (!get_softmodem_params()->sa) { - init_nsa_message(&rrc_inst[i], reconfig_file, rbconfig_file); - // TODO why do we need noS1 configuration? - // temporarily moved here to understand why not using the one provided by gNB - nr_rlc_activate_srb0(i, NULL, send_srb0_rrc); - if (IS_SOFTMODEM_NOS1) { - // get default noS1 configuration - NR_RadioBearerConfig_t *rbconfig = NULL; - NR_RLC_BearerConfig_t *rlc_rbconfig = NULL; - fill_nr_noS1_bearer_config(&rbconfig, &rlc_rbconfig); - - // set up PDCP, RLC, MAC - nr_pdcp_layer_init(false); - nr_pdcp_add_drbs(ENB_FLAG_NO, i, rbconfig->drb_ToAddModList, 0, NULL, NULL); - nr_rlc_add_drb(i, rbconfig->drb_ToAddModList->list.array[0]->drb_Identity, rlc_rbconfig); - struct NR_CellGroupConfig__rlc_BearerToAddModList rlc_toadd_list; - rlc_toadd_list.list.count = 1; - rlc_toadd_list.list.array = calloc(1, sizeof(NR_RLC_BearerConfig_t)); - rlc_toadd_list.list.array[0] = rlc_rbconfig; - nr_rrc_mac_config_req_ue_logicalChannelBearer(0, &rlc_toadd_list, NULL); - - // free memory - free_nr_noS1_bearer_config(&rbconfig, NULL); - } + init_nsa_message(rrc_inst, reconfig_file, rbconfig_file); + nr_rlc_activate_srb0(mac_inst->crnti, NULL, send_srb0_rrc); } } } diff --git a/executables/nr-uesoftmodem.c b/executables/nr-uesoftmodem.c index 6fe411c253..4e5e14089c 100644 --- a/executables/nr-uesoftmodem.c +++ b/executables/nr-uesoftmodem.c @@ -368,7 +368,8 @@ void init_openair0(void) { } } -static void init_pdcp(int ue_id) { +static void init_pdcp(int ue_id) +{ uint32_t pdcp_initmask = (!IS_SOFTMODEM_NOS1) ? LINK_ENB_PDCP_TO_GTPV1U_BIT : (LINK_ENB_PDCP_TO_GTPV1U_BIT | PDCP_USE_NETLINK_BIT | LINK_ENB_PDCP_TO_IP_DRIVER_BIT); /*if (IS_SOFTMODEM_RFSIM || (nfapi_getmode()==NFAPI_UE_STUB_PNF)) { @@ -510,8 +511,6 @@ int main(int argc, char **argv) memset(PHY_vars_UE_g[0][CC_id], 0, sizeof(*PHY_vars_UE_g[0][CC_id])); } - init_NR_UE(NB_UE_INST, uecap_file, reconfig_file, rbconfig_file); - int mode_offset = get_softmodem_params()->nsa ? NUMBER_OF_UE_MAX : 1; uint16_t node_number = get_softmodem_params()->node_number; ue_id_g = (node_number == 0) ? 0 : node_number - 2; @@ -525,6 +524,8 @@ int main(int argc, char **argv) } } + init_NR_UE(NB_UE_INST, uecap_file, reconfig_file, rbconfig_file); + if (get_softmodem_params()->emulate_l1) { RCconfig_nr_ue_macrlc(); get_channel_model_mode(uniqCfg); diff --git a/openair2/RRC/NR_UE/rrc_UE.c b/openair2/RRC/NR_UE/rrc_UE.c index badf181f39..08bc17e89f 100644 --- a/openair2/RRC/NR_UE/rrc_UE.c +++ b/openair2/RRC/NR_UE/rrc_UE.c @@ -275,14 +275,12 @@ void process_nsa_message(NR_UE_RRC_INST_t *rrc, nsa_message_t nsa_message_type, SEQUENCE_free( &asn_DEF_NR_RadioBearerConfig, RadioBearerConfig, 1 ); return; } - if (get_softmodem_params()->nsa) { - LOG_D(NR_RRC, "Calling nr_rrc_ue_process_RadioBearerConfig() at %d with: e_rab_id = %ld, drbID = %ld, cipher_algo = %ld, key = %ld \n", - __LINE__, RadioBearerConfig->drb_ToAddModList->list.array[0]->cnAssociation->choice.eps_BearerIdentity, - RadioBearerConfig->drb_ToAddModList->list.array[0]->drb_Identity, - RadioBearerConfig->securityConfig->securityAlgorithmConfig->cipheringAlgorithm, - *RadioBearerConfig->securityConfig->keyToUse); - nr_rrc_ue_process_RadioBearerConfig(rrc, rrc->perNB + 0, RadioBearerConfig); - } + LOG_D(NR_RRC, "Calling nr_rrc_ue_process_RadioBearerConfig()with: e_rab_id = %ld, drbID = %ld, cipher_algo = %ld, key = %ld \n", + RadioBearerConfig->drb_ToAddModList->list.array[0]->cnAssociation->choice.eps_BearerIdentity, + RadioBearerConfig->drb_ToAddModList->list.array[0]->drb_Identity, + RadioBearerConfig->securityConfig->securityAlgorithmConfig->cipheringAlgorithm, + *RadioBearerConfig->securityConfig->keyToUse); + nr_rrc_ue_process_RadioBearerConfig(rrc, rrc->perNB + 0, RadioBearerConfig); if (LOG_DEBUGFLAG(DEBUG_ASN1)) xer_fprint(stdout, &asn_DEF_NR_RadioBearerConfig, (const void *)RadioBearerConfig); ASN_STRUCT_FREE(asn_DEF_NR_RadioBearerConfig, RadioBearerConfig); @@ -795,9 +793,7 @@ void nr_rrc_cellgroup_configuration(rrcPerNB_t *rrcNB, NR_UE_RRC_INST_t *rrc, NR } } - // TODO verify why we need this limitation - if (get_softmodem_params()->sa || get_softmodem_params()->nsa) - nr_rrc_manage_rlc_bearers(rrc, cellGroupConfig, rrcNB); + nr_rrc_manage_rlc_bearers(rrc, cellGroupConfig, rrcNB); AssertFatal(cellGroupConfig->sCellToReleaseList == NULL, "Secondary serving cell release not implemented\n");