Remove NRRRC_CONFIGURATION_REQ and initalize RRC properly
Use a struct to initialize the RRC at the beginning, and remove the NRRRC_CONFIGURATION_REQ. This message is not necessary; the RRC/CU should be initialized from the F1 Setup Request, coming from the DU.
This commit is contained in:
@@ -298,6 +298,7 @@ static int create_gNB_tasks(void) {
|
|||||||
LOG_D(GNB_APP, "%s(gnb_nb:%d)\n", __FUNCTION__, gnb_nb);
|
LOG_D(GNB_APP, "%s(gnb_nb:%d)\n", __FUNCTION__, gnb_nb);
|
||||||
itti_wait_ready(1);
|
itti_wait_ready(1);
|
||||||
LOG_I(PHY, "%s() Task ready initialize structures\n", __FUNCTION__);
|
LOG_I(PHY, "%s() Task ready initialize structures\n", __FUNCTION__);
|
||||||
|
ngran_node_t node_type = get_node_type();
|
||||||
|
|
||||||
RCconfig_NR_L1();
|
RCconfig_NR_L1();
|
||||||
RCconfig_nr_prs();
|
RCconfig_nr_prs();
|
||||||
@@ -314,13 +315,11 @@ static int create_gNB_tasks(void) {
|
|||||||
|
|
||||||
LOG_I(GNB_APP,"Allocating gNB_RRC_INST for %d instances\n",RC.nb_nr_inst);
|
LOG_I(GNB_APP,"Allocating gNB_RRC_INST for %d instances\n",RC.nb_nr_inst);
|
||||||
|
|
||||||
RC.nrrrc = (gNB_RRC_INST **)malloc(RC.nb_nr_inst*sizeof(gNB_RRC_INST *));
|
if (RC.nb_nr_inst > 0) {
|
||||||
LOG_I(PHY, "%s() RC.nb_nr_inst:%d RC.nrrrc:%p\n", __FUNCTION__, RC.nb_nr_inst, RC.nrrrc);
|
AssertFatal(RC.nb_nr_inst == 1, "multiple RRC instances are not supported\n");
|
||||||
ngran_node_t node_type = get_node_type();
|
RC.nrrrc = calloc(1, sizeof(*RC.nrrrc));
|
||||||
for (int gnb_id = gnb_id_start; (gnb_id < gnb_id_end) ; gnb_id++) {
|
RC.nrrrc[0] = calloc(1,sizeof(gNB_RRC_INST));
|
||||||
RC.nrrrc[gnb_id] = (gNB_RRC_INST*)calloc(1,sizeof(gNB_RRC_INST));
|
RCconfig_NRRRC(RC.nrrrc[0]);
|
||||||
LOG_I(PHY, "%s() Creating RRC instance RC.nrrrc[%d]:%p (%d of %d)\n", __FUNCTION__, gnb_id, RC.nrrrc[gnb_id], gnb_id+1, gnb_id_end);
|
|
||||||
configure_nr_rrc(gnb_id);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (RC.nb_nr_inst > 0 &&
|
if (RC.nb_nr_inst > 0 &&
|
||||||
|
|||||||
@@ -55,7 +55,6 @@ MESSAGE_DEF(RRC_STATE_IND, MESSAGE_PRIORITY_MED, RrcStateInd,
|
|||||||
// eNB: ENB_APP -> RRC messages
|
// eNB: ENB_APP -> RRC messages
|
||||||
MESSAGE_DEF(RRC_CONFIGURATION_REQ, MESSAGE_PRIORITY_MED, RrcConfigurationReq, rrc_configuration_req)
|
MESSAGE_DEF(RRC_CONFIGURATION_REQ, MESSAGE_PRIORITY_MED, RrcConfigurationReq, rrc_configuration_req)
|
||||||
MESSAGE_DEF(NBIOTRRC_CONFIGURATION_REQ, MESSAGE_PRIORITY_MED, NbIoTRrcConfigurationReq, nbiotrrc_configuration_req)
|
MESSAGE_DEF(NBIOTRRC_CONFIGURATION_REQ, MESSAGE_PRIORITY_MED, NbIoTRrcConfigurationReq, nbiotrrc_configuration_req)
|
||||||
MESSAGE_DEF(NRRRC_CONFIGURATION_REQ, MESSAGE_PRIORITY_MED, gNB_RrcConfigurationReq, nrrrc_configuration_req)
|
|
||||||
|
|
||||||
// UE: NAS -> RRC messages
|
// UE: NAS -> RRC messages
|
||||||
MESSAGE_DEF(NAS_KENB_REFRESH_REQ, MESSAGE_PRIORITY_MED, NasKenbRefreshReq, nas_kenb_refresh_req)
|
MESSAGE_DEF(NAS_KENB_REFRESH_REQ, MESSAGE_PRIORITY_MED, NasKenbRefreshReq, nas_kenb_refresh_req)
|
||||||
|
|||||||
@@ -69,8 +69,6 @@
|
|||||||
|
|
||||||
#define NBIOTRRC_CONFIGURATION_REQ(mSGpTR) (mSGpTR)->ittiMsg.nbiotrrc_configuration_req
|
#define NBIOTRRC_CONFIGURATION_REQ(mSGpTR) (mSGpTR)->ittiMsg.nbiotrrc_configuration_req
|
||||||
|
|
||||||
#define NRRRC_CONFIGURATION_REQ(mSGpTR) (mSGpTR)->ittiMsg.nrrrc_configuration_req
|
|
||||||
|
|
||||||
#define NAS_KENB_REFRESH_REQ(mSGpTR) (mSGpTR)->ittiMsg.nas_kenb_refresh_req
|
#define NAS_KENB_REFRESH_REQ(mSGpTR) (mSGpTR)->ittiMsg.nas_kenb_refresh_req
|
||||||
#define NAS_CELL_SELECTION_REQ(mSGpTR) (mSGpTR)->ittiMsg.nas_cell_selection_req
|
#define NAS_CELL_SELECTION_REQ(mSGpTR) (mSGpTR)->ittiMsg.nas_cell_selection_req
|
||||||
#define NAS_CONN_ESTABLI_REQ(mSGpTR) (mSGpTR)->ittiMsg.nas_conn_establi_req
|
#define NAS_CONN_ESTABLI_REQ(mSGpTR) (mSGpTR)->ittiMsg.nas_conn_establi_req
|
||||||
|
|||||||
@@ -58,25 +58,6 @@ extern RAN_CONTEXT_t RC;
|
|||||||
|
|
||||||
#define GNB_REGISTER_RETRY_DELAY 10
|
#define GNB_REGISTER_RETRY_DELAY 10
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
|
||||||
void configure_nr_rrc(uint32_t gnb_id)
|
|
||||||
{
|
|
||||||
MessageDef *msg_p = NULL;
|
|
||||||
// int CC_id;
|
|
||||||
|
|
||||||
msg_p = itti_alloc_new_message (TASK_GNB_APP, 0, NRRRC_CONFIGURATION_REQ);
|
|
||||||
|
|
||||||
if (RC.nrrrc[gnb_id]) {
|
|
||||||
RCconfig_NRRRC(msg_p,gnb_id, RC.nrrrc[gnb_id]);
|
|
||||||
|
|
||||||
LOG_I(GNB_APP, "RRC starting with node type %d\n", RC.nrrrc[gnb_id]->node_type);
|
|
||||||
LOG_I(GNB_APP,"Sending configuration message to NR_RRC task\n");
|
|
||||||
itti_send_msg_to_task (TASK_RRC_GNB, GNB_MODULE_ID_TO_INSTANCE(gnb_id), msg_p);
|
|
||||||
|
|
||||||
}
|
|
||||||
else AssertFatal(0,"NRRRC context for gNB %u not allocated\n",gnb_id);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
/*------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -33,7 +33,6 @@
|
|||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
void *gNB_app_task(void *args_p);
|
void *gNB_app_task(void *args_p);
|
||||||
void configure_nr_rrc(uint32_t gnb_id);
|
|
||||||
uint32_t gNB_app_register(uint32_t gnb_id_start, uint32_t gnb_id_end);
|
uint32_t gNB_app_register(uint32_t gnb_id_start, uint32_t gnb_id_end);
|
||||||
uint32_t gNB_app_register_x2(uint32_t gnb_id_start, uint32_t gnb_id_end);
|
uint32_t gNB_app_register_x2(uint32_t gnb_id_start, uint32_t gnb_id_end);
|
||||||
#endif /* GNB_APP_H_ */
|
#endif /* GNB_APP_H_ */
|
||||||
|
|||||||
@@ -1242,13 +1242,14 @@ static void check_ssb_raster(uint64_t freq, int band, int scs)
|
|||||||
gscn, freq, band);
|
gscn, freq, band);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RCconfig_NRRRC(MessageDef *msg_p, uint32_t i, gNB_RRC_INST *rrc)
|
void RCconfig_NRRRC(gNB_RRC_INST *rrc)
|
||||||
{
|
{
|
||||||
|
|
||||||
int num_gnbs = 0;
|
int num_gnbs = 0;
|
||||||
char aprefix[MAX_OPTNAME_SIZE*2 + 8];
|
char aprefix[MAX_OPTNAME_SIZE*2 + 8];
|
||||||
int32_t gnb_id = 0;
|
int32_t gnb_id = 0;
|
||||||
int k = 0;
|
int k = 0;
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
paramdef_t GNBSParams[] = GNBSPARAMS_DESC;
|
paramdef_t GNBSParams[] = GNBSPARAMS_DESC;
|
||||||
////////// Identification parameters
|
////////// Identification parameters
|
||||||
@@ -1268,6 +1269,7 @@ void RCconfig_NRRRC(MessageDef *msg_p, uint32_t i, gNB_RRC_INST *rrc)
|
|||||||
config_get( GNBSParams,sizeof(GNBSParams)/sizeof(paramdef_t),NULL);
|
config_get( GNBSParams,sizeof(GNBSParams)/sizeof(paramdef_t),NULL);
|
||||||
num_gnbs = GNBSParams[GNB_ACTIVE_GNBS_IDX].numelt;
|
num_gnbs = GNBSParams[GNB_ACTIVE_GNBS_IDX].numelt;
|
||||||
AssertFatal (i<num_gnbs,"Failed to parse config file no %uth element in %s \n",i, GNB_CONFIG_STRING_ACTIVE_GNBS);
|
AssertFatal (i<num_gnbs,"Failed to parse config file no %uth element in %s \n",i, GNB_CONFIG_STRING_ACTIVE_GNBS);
|
||||||
|
AssertFatal(num_gnbs == 1, "required section \"gNBs\" not in config!\n");
|
||||||
|
|
||||||
if (num_gnbs > 0) {
|
if (num_gnbs > 0) {
|
||||||
|
|
||||||
@@ -1334,6 +1336,7 @@ void RCconfig_NRRRC(MessageDef *msg_p, uint32_t i, gNB_RRC_INST *rrc)
|
|||||||
|
|
||||||
// search if in active list
|
// search if in active list
|
||||||
|
|
||||||
|
gNB_RrcConfigurationReq nrrrc_config = {0};
|
||||||
for (k=0; k <num_gnbs ; k++) {
|
for (k=0; k <num_gnbs ; k++) {
|
||||||
if (strcmp(GNBSParams[GNB_ACTIVE_GNBS_IDX].strlistptr[k], *(GNBParamList.paramarray[i][GNB_GNB_NAME_IDX].strptr) )== 0) {
|
if (strcmp(GNBSParams[GNB_ACTIVE_GNBS_IDX].strlistptr[k], *(GNBParamList.paramarray[i][GNB_GNB_NAME_IDX].strptr) )== 0) {
|
||||||
|
|
||||||
@@ -1350,8 +1353,8 @@ void RCconfig_NRRRC(MessageDef *msg_p, uint32_t i, gNB_RRC_INST *rrc)
|
|||||||
for (int I = 0; I < sizeof(PLMNParams) / sizeof(paramdef_t); ++I)
|
for (int I = 0; I < sizeof(PLMNParams) / sizeof(paramdef_t); ++I)
|
||||||
PLMNParams[I].chkPptr = &(config_check_PLMNParams[I]);
|
PLMNParams[I].chkPptr = &(config_check_PLMNParams[I]);
|
||||||
|
|
||||||
NRRRC_CONFIGURATION_REQ (msg_p).cell_identity = gnb_id;
|
nrrrc_config.cell_identity = gnb_id;
|
||||||
NRRRC_CONFIGURATION_REQ (msg_p).tac = *GNBParamList.paramarray[i][GNB_TRACKING_AREA_CODE_IDX].uptr;
|
nrrrc_config.tac = *GNBParamList.paramarray[i][GNB_TRACKING_AREA_CODE_IDX].uptr;
|
||||||
AssertFatal(!GNBParamList.paramarray[i][GNB_MOBILE_COUNTRY_CODE_IDX_OLD].strptr
|
AssertFatal(!GNBParamList.paramarray[i][GNB_MOBILE_COUNTRY_CODE_IDX_OLD].strptr
|
||||||
&& !GNBParamList.paramarray[i][GNB_MOBILE_NETWORK_CODE_IDX_OLD].strptr,
|
&& !GNBParamList.paramarray[i][GNB_MOBILE_NETWORK_CODE_IDX_OLD].strptr,
|
||||||
"It seems that you use an old configuration file. Please change the existing\n"
|
"It seems that you use an old configuration file. Please change the existing\n"
|
||||||
@@ -1367,46 +1370,46 @@ void RCconfig_NRRRC(MessageDef *msg_p, uint32_t i, gNB_RRC_INST *rrc)
|
|||||||
AssertFatal(0, "The number of PLMN IDs must be in [1,6], but is %d\n",
|
AssertFatal(0, "The number of PLMN IDs must be in [1,6], but is %d\n",
|
||||||
PLMNParamList.numelt);
|
PLMNParamList.numelt);
|
||||||
|
|
||||||
NRRRC_CONFIGURATION_REQ(msg_p).num_plmn = PLMNParamList.numelt;
|
nrrrc_config.num_plmn = PLMNParamList.numelt;
|
||||||
|
|
||||||
for (int l = 0; l < PLMNParamList.numelt; ++l) {
|
for (int l = 0; l < PLMNParamList.numelt; ++l) {
|
||||||
|
|
||||||
NRRRC_CONFIGURATION_REQ (msg_p).mcc[l] = *PLMNParamList.paramarray[l][GNB_MOBILE_COUNTRY_CODE_IDX].uptr;
|
nrrrc_config.mcc[l] = *PLMNParamList.paramarray[l][GNB_MOBILE_COUNTRY_CODE_IDX].uptr;
|
||||||
NRRRC_CONFIGURATION_REQ (msg_p).mnc[l] = *PLMNParamList.paramarray[l][GNB_MOBILE_NETWORK_CODE_IDX].uptr;
|
nrrrc_config.mnc[l] = *PLMNParamList.paramarray[l][GNB_MOBILE_NETWORK_CODE_IDX].uptr;
|
||||||
NRRRC_CONFIGURATION_REQ (msg_p).mnc_digit_length[l] = *PLMNParamList.paramarray[l][GNB_MNC_DIGIT_LENGTH].u8ptr;
|
nrrrc_config.mnc_digit_length[l] = *PLMNParamList.paramarray[l][GNB_MNC_DIGIT_LENGTH].u8ptr;
|
||||||
AssertFatal((NRRRC_CONFIGURATION_REQ (msg_p).mnc_digit_length[l] == 2) ||
|
AssertFatal((nrrrc_config.mnc_digit_length[l] == 2) ||
|
||||||
(NRRRC_CONFIGURATION_REQ (msg_p).mnc_digit_length[l] == 3),"BAD MNC DIGIT LENGTH %d",
|
(nrrrc_config.mnc_digit_length[l] == 3),"BAD MNC DIGIT LENGTH %d",
|
||||||
NRRRC_CONFIGURATION_REQ (msg_p).mnc_digit_length[l]);
|
nrrrc_config.mnc_digit_length[l]);
|
||||||
}
|
}
|
||||||
LOG_I(GNB_APP,"pdsch_AntennaPorts N1 %d\n",*GNBParamList.paramarray[i][GNB_PDSCH_ANTENNAPORTS_N1_IDX].iptr);
|
LOG_I(GNB_APP,"pdsch_AntennaPorts N1 %d\n",*GNBParamList.paramarray[i][GNB_PDSCH_ANTENNAPORTS_N1_IDX].iptr);
|
||||||
NRRRC_CONFIGURATION_REQ (msg_p).pdsch_AntennaPorts.N1 = *GNBParamList.paramarray[i][GNB_PDSCH_ANTENNAPORTS_N1_IDX].iptr;
|
nrrrc_config.pdsch_AntennaPorts.N1 = *GNBParamList.paramarray[i][GNB_PDSCH_ANTENNAPORTS_N1_IDX].iptr;
|
||||||
LOG_I(GNB_APP,"pdsch_AntennaPorts N2 %d\n",*GNBParamList.paramarray[i][GNB_PDSCH_ANTENNAPORTS_N2_IDX].iptr);
|
LOG_I(GNB_APP,"pdsch_AntennaPorts N2 %d\n",*GNBParamList.paramarray[i][GNB_PDSCH_ANTENNAPORTS_N2_IDX].iptr);
|
||||||
NRRRC_CONFIGURATION_REQ (msg_p).pdsch_AntennaPorts.N2 = *GNBParamList.paramarray[i][GNB_PDSCH_ANTENNAPORTS_N2_IDX].iptr;
|
nrrrc_config.pdsch_AntennaPorts.N2 = *GNBParamList.paramarray[i][GNB_PDSCH_ANTENNAPORTS_N2_IDX].iptr;
|
||||||
LOG_I(GNB_APP,"pdsch_AntennaPorts XP %d\n",*GNBParamList.paramarray[i][GNB_PDSCH_ANTENNAPORTS_XP_IDX].iptr);
|
LOG_I(GNB_APP,"pdsch_AntennaPorts XP %d\n",*GNBParamList.paramarray[i][GNB_PDSCH_ANTENNAPORTS_XP_IDX].iptr);
|
||||||
NRRRC_CONFIGURATION_REQ (msg_p).pdsch_AntennaPorts.XP = *GNBParamList.paramarray[i][GNB_PDSCH_ANTENNAPORTS_XP_IDX].iptr;
|
nrrrc_config.pdsch_AntennaPorts.XP = *GNBParamList.paramarray[i][GNB_PDSCH_ANTENNAPORTS_XP_IDX].iptr;
|
||||||
LOG_I(GNB_APP,"pusch_AntennaPorts %d\n",*GNBParamList.paramarray[i][GNB_PUSCH_ANTENNAPORTS_IDX].iptr);
|
LOG_I(GNB_APP,"pusch_AntennaPorts %d\n",*GNBParamList.paramarray[i][GNB_PUSCH_ANTENNAPORTS_IDX].iptr);
|
||||||
NRRRC_CONFIGURATION_REQ (msg_p).pusch_AntennaPorts = *GNBParamList.paramarray[i][GNB_PUSCH_ANTENNAPORTS_IDX].iptr;
|
nrrrc_config.pusch_AntennaPorts = *GNBParamList.paramarray[i][GNB_PUSCH_ANTENNAPORTS_IDX].iptr;
|
||||||
LOG_I(GNB_APP,"minTXRXTIME %d\n",*GNBParamList.paramarray[i][GNB_MINRXTXTIME_IDX].iptr);
|
LOG_I(GNB_APP,"minTXRXTIME %d\n",*GNBParamList.paramarray[i][GNB_MINRXTXTIME_IDX].iptr);
|
||||||
NRRRC_CONFIGURATION_REQ (msg_p).minRXTXTIME = *GNBParamList.paramarray[i][GNB_MINRXTXTIME_IDX].iptr;
|
nrrrc_config.minRXTXTIME = *GNBParamList.paramarray[i][GNB_MINRXTXTIME_IDX].iptr;
|
||||||
DevAssert(NRRRC_CONFIGURATION_REQ (msg_p).minRXTXTIME == minRXTXTIME);
|
DevAssert(nrrrc_config.minRXTXTIME == minRXTXTIME);
|
||||||
LOG_I(GNB_APP,"SIB1 TDA %d\n",*GNBParamList.paramarray[i][GNB_SIB1_TDA_IDX].iptr);
|
LOG_I(GNB_APP,"SIB1 TDA %d\n",*GNBParamList.paramarray[i][GNB_SIB1_TDA_IDX].iptr);
|
||||||
NRRRC_CONFIGURATION_REQ (msg_p).sib1_tda = *GNBParamList.paramarray[i][GNB_SIB1_TDA_IDX].iptr;
|
nrrrc_config.sib1_tda = *GNBParamList.paramarray[i][GNB_SIB1_TDA_IDX].iptr;
|
||||||
LOG_I(GNB_APP,"Do CSI-RS %d\n",*GNBParamList.paramarray[i][GNB_DO_CSIRS_IDX].iptr);
|
LOG_I(GNB_APP,"Do CSI-RS %d\n",*GNBParamList.paramarray[i][GNB_DO_CSIRS_IDX].iptr);
|
||||||
NRRRC_CONFIGURATION_REQ (msg_p).do_CSIRS = *GNBParamList.paramarray[i][GNB_DO_CSIRS_IDX].iptr;
|
nrrrc_config.do_CSIRS = *GNBParamList.paramarray[i][GNB_DO_CSIRS_IDX].iptr;
|
||||||
LOG_I(GNB_APP, "Do SRS %d\n",*GNBParamList.paramarray[i][GNB_DO_SRS_IDX].iptr);
|
LOG_I(GNB_APP, "Do SRS %d\n",*GNBParamList.paramarray[i][GNB_DO_SRS_IDX].iptr);
|
||||||
NRRRC_CONFIGURATION_REQ (msg_p).do_SRS = *GNBParamList.paramarray[i][GNB_DO_SRS_IDX].iptr;
|
nrrrc_config.do_SRS = *GNBParamList.paramarray[i][GNB_DO_SRS_IDX].iptr;
|
||||||
NRRRC_CONFIGURATION_REQ (msg_p).force_256qam_off = *GNBParamList.paramarray[i][GNB_FORCE256QAMOFF_IDX].iptr;
|
nrrrc_config.force_256qam_off = *GNBParamList.paramarray[i][GNB_FORCE256QAMOFF_IDX].iptr;
|
||||||
LOG_I(GNB_APP, "256 QAM: %s\n", NRRRC_CONFIGURATION_REQ (msg_p).force_256qam_off ? "force off" : "may be on");
|
LOG_I(GNB_APP, "256 QAM: %s\n", nrrrc_config.force_256qam_off ? "force off" : "may be on");
|
||||||
NRRRC_CONFIGURATION_REQ (msg_p).scc = scc;
|
nrrrc_config.scc = scc;
|
||||||
NRRRC_CONFIGURATION_REQ (msg_p).scd = scd;
|
nrrrc_config.scd = scd;
|
||||||
NRRRC_CONFIGURATION_REQ (msg_p).enable_sdap = *GNBParamList.paramarray[i][GNB_ENABLE_SDAP_IDX].iptr;
|
nrrrc_config.enable_sdap = *GNBParamList.paramarray[i][GNB_ENABLE_SDAP_IDX].iptr;
|
||||||
LOG_I(GNB_APP, "SDAP layer is %s\n", NRRRC_CONFIGURATION_REQ (msg_p).enable_sdap ? "enabled" : "disabled");
|
LOG_I(GNB_APP, "SDAP layer is %s\n", nrrrc_config.enable_sdap ? "enabled" : "disabled");
|
||||||
NRRRC_CONFIGURATION_REQ (msg_p).drbs = *GNBParamList.paramarray[i][GNB_DRBS].iptr;
|
nrrrc_config.drbs = *GNBParamList.paramarray[i][GNB_DRBS].iptr;
|
||||||
LOG_I(GNB_APP, "Data Radio Bearer count %d\n", NRRRC_CONFIGURATION_REQ (msg_p).drbs);
|
LOG_I(GNB_APP, "Data Radio Bearer count %d\n", nrrrc_config.drbs);
|
||||||
|
|
||||||
}//
|
}//
|
||||||
}//End for (k=0; k <num_gnbs ; k++)
|
}//End for (k=0; k <num_gnbs ; k++)
|
||||||
memcpy(&rrc->configuration, &NRRRC_CONFIGURATION_REQ(msg_p), sizeof(NRRRC_CONFIGURATION_REQ(msg_p)));
|
openair_rrc_gNB_configuration(rrc, &nrrrc_config);
|
||||||
}//End if (num_gnbs>0)
|
}//End if (num_gnbs>0)
|
||||||
|
|
||||||
config_security(rrc);
|
config_security(rrc);
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ extern void NRRCConfig(void);
|
|||||||
//void enb_config_display(void);
|
//void enb_config_display(void);
|
||||||
//void ru_config_display(void);
|
//void ru_config_display(void);
|
||||||
|
|
||||||
void RCconfig_NRRRC(MessageDef *msg_p, uint32_t i, gNB_RRC_INST *rrc);
|
void RCconfig_NRRRC(gNB_RRC_INST *rrc);
|
||||||
int RCconfig_NR_NG(MessageDef *msg_p, uint32_t i);
|
int RCconfig_NR_NG(MessageDef *msg_p, uint32_t i);
|
||||||
int RCconfig_NR_X2(MessageDef *msg_p, uint32_t i);
|
int RCconfig_NR_X2(MessageDef *msg_p, uint32_t i);
|
||||||
int RCconfig_NR_DU_F1(MessageDef *msg_p, uint32_t i);
|
int RCconfig_NR_DU_F1(MessageDef *msg_p, uint32_t i);
|
||||||
|
|||||||
@@ -35,6 +35,8 @@
|
|||||||
#include "LAYER2/RLC/rlc.h"
|
#include "LAYER2/RLC/rlc.h"
|
||||||
#include "openair2/RRC/common.h"
|
#include "openair2/RRC/common.h"
|
||||||
|
|
||||||
|
void openair_rrc_gNB_configuration(gNB_RRC_INST *rrc, gNB_RrcConfigurationReq *configuration);
|
||||||
|
|
||||||
extern UE_RRC_INST *UE_rrc_inst;
|
extern UE_RRC_INST *UE_rrc_inst;
|
||||||
|
|
||||||
extern uint8_t DRB2LCHAN[8];
|
extern uint8_t DRB2LCHAN[8];
|
||||||
|
|||||||
@@ -296,18 +296,12 @@ static void rrc_gNB_CU_DU_init(gNB_RRC_INST *rrc)
|
|||||||
cu_init_f1_ue_data();
|
cu_init_f1_ue_data();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void openair_rrc_gNB_configuration(const module_id_t gnb_mod_idP, gNB_RrcConfigurationReq *configuration)
|
void openair_rrc_gNB_configuration(gNB_RRC_INST *rrc, gNB_RrcConfigurationReq *configuration)
|
||||||
{
|
{
|
||||||
protocol_ctxt_t ctxt = { 0 };
|
|
||||||
gNB_RRC_INST *rrc=RC.nrrrc[gnb_mod_idP];
|
|
||||||
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, gnb_mod_idP, GNB_FLAG_YES, NOT_A_RNTI, 0, 0,gnb_mod_idP);
|
|
||||||
LOG_I(NR_RRC,
|
|
||||||
PROTOCOL_NR_RRC_CTXT_FMT" Init...\n",
|
|
||||||
PROTOCOL_NR_RRC_CTXT_ARGS(&ctxt));
|
|
||||||
AssertFatal(rrc != NULL, "RC.nrrrc not initialized!");
|
AssertFatal(rrc != NULL, "RC.nrrrc not initialized!");
|
||||||
AssertFatal(NUMBER_OF_UE_MAX < (module_id_t)0xFFFFFFFFFFFFFFFF, " variable overflow");
|
AssertFatal(NUMBER_OF_UE_MAX < (module_id_t)0xFFFFFFFFFFFFFFFF, " variable overflow");
|
||||||
AssertFatal(configuration!=NULL,"configuration input is null\n");
|
AssertFatal(configuration!=NULL,"configuration input is null\n");
|
||||||
rrc->module_id = gnb_mod_idP;
|
rrc->module_id = 0;
|
||||||
rrc_gNB_CU_DU_init(rrc);
|
rrc_gNB_CU_DU_init(rrc);
|
||||||
uid_linear_allocator_init(&rrc->uid_allocator);
|
uid_linear_allocator_init(&rrc->uid_allocator);
|
||||||
RB_INIT(&rrc->rrc_ue_head);
|
RB_INIT(&rrc->rrc_ue_head);
|
||||||
@@ -316,7 +310,6 @@ static void openair_rrc_gNB_configuration(const module_id_t gnb_mod_idP, gNB_Rrc
|
|||||||
/// System Information INIT
|
/// System Information INIT
|
||||||
pthread_mutex_init(&rrc->cell_info_mutex,NULL);
|
pthread_mutex_init(&rrc->cell_info_mutex,NULL);
|
||||||
rrc->cell_info_configured = 0;
|
rrc->cell_info_configured = 0;
|
||||||
LOG_I(NR_RRC, PROTOCOL_NR_RRC_CTXT_FMT" Checking release \n",PROTOCOL_NR_RRC_CTXT_ARGS(&ctxt));
|
|
||||||
init_NR_SI(rrc, configuration);
|
init_NR_SI(rrc, configuration);
|
||||||
return;
|
return;
|
||||||
} // END openair_rrc_gNB_configuration
|
} // END openair_rrc_gNB_configuration
|
||||||
@@ -2620,11 +2613,6 @@ void *rrc_gnb_task(void *args_p) {
|
|||||||
rrc_gNB_process_NGAP_PDUSESSION_RELEASE_COMMAND(msg_p, instance);
|
rrc_gNB_process_NGAP_PDUSESSION_RELEASE_COMMAND(msg_p, instance);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* Messages from gNB app */
|
|
||||||
case NRRRC_CONFIGURATION_REQ:
|
|
||||||
openair_rrc_gNB_configuration(instance, &NRRRC_CONFIGURATION_REQ(msg_p));
|
|
||||||
break;
|
|
||||||
|
|
||||||
/* Messages from F1AP task */
|
/* Messages from F1AP task */
|
||||||
case F1AP_SETUP_REQ:
|
case F1AP_SETUP_REQ:
|
||||||
AssertFatal(NODE_IS_CU(RC.nrrrc[instance]->node_type), "should not receive F1AP_SETUP_REQUEST, need call by CU!\n");
|
AssertFatal(NODE_IS_CU(RC.nrrrc[instance]->node_type), "should not receive F1AP_SETUP_REQUEST, need call by CU!\n");
|
||||||
|
|||||||
Reference in New Issue
Block a user