Commit 32a39e9a authored by Raymond Knopp's avatar Raymond Knopp

CU configuration modifications

parent ce07a11e
...@@ -139,8 +139,6 @@ static uint32_t eNB_app_register(ngran_node_t node_type,uint32_t enb_id_start, u ...@@ -139,8 +139,6 @@ static uint32_t eNB_app_register(ngran_node_t node_type,uint32_t enb_id_start, u
RCconfig_S1(msg_p, enb_id); RCconfig_S1(msg_p, enb_id);
if (node_type == ngran_eNB_CU || node_type == ngran_ng_eNB_CU) RCconfig_CU_F1(enb_id);
if (enb_id == 0) RCconfig_gtpu(); if (enb_id == 0) RCconfig_gtpu();
LOG_I(ENB_APP,"default drx %d\n",((S1AP_REGISTER_ENB_REQ(msg_p)).default_drx)); LOG_I(ENB_APP,"default drx %d\n",((S1AP_REGISTER_ENB_REQ(msg_p)).default_drx));
...@@ -205,14 +203,14 @@ void *eNB_app_task(void *args_p) ...@@ -205,14 +203,14 @@ void *eNB_app_task(void *args_p)
LOG_I(ENB_APP,"Allocating eNB_RRC_INST for %d instances\n",RC.nb_inst); LOG_I(ENB_APP,"Allocating eNB_RRC_INST for %d instances\n",RC.nb_inst);
RC.rrc = (eNB_RRC_INST **)malloc(RC.nb_inst*sizeof(eNB_RRC_INST *)); RC.rrc = (eNB_RRC_INST **)malloc(RC.nb_inst*sizeof(eNB_RRC_INST *));
LOG_I(PHY, "%s() RC.nb_inst:%d RC.rrc:%p\n", __FUNCTION__, RC.nb_inst, RC.rrc); LOG_I(ENB_APP, "%s() RC.nb_inst:%d RC.rrc:%p\n", __FUNCTION__, RC.nb_inst, RC.rrc);
if (RC.nb_macrlc_inst>0) AssertFatal(RC.nb_macrlc_inst == enb_id_end-enb_id_start, if (RC.nb_macrlc_inst>0) AssertFatal(RC.nb_macrlc_inst == enb_id_end-enb_id_start,
"Number of MACRLC instances %d != number of RRC instances %d\n", "Number of MACRLC instances %d != number of RRC instances %d\n",
RC.nb_macrlc_inst,enb_id_end-enb_id_start); RC.nb_macrlc_inst,enb_id_end-enb_id_start);
for (enb_id = enb_id_start; (enb_id < enb_id_end) ; enb_id++) { for (enb_id = enb_id_start; (enb_id < enb_id_end) ; enb_id++) {
RC.rrc[enb_id] = (eNB_RRC_INST*)malloc(sizeof(eNB_RRC_INST)); RC.rrc[enb_id] = (eNB_RRC_INST*)malloc(sizeof(eNB_RRC_INST));
LOG_I(PHY, "%s() Creating RRC instance RC.rrc[%d]:%p (%d of %d)\n", __FUNCTION__, enb_id, RC.rrc[enb_id], enb_id+1, enb_id_end); LOG_I(ENB_APP, "%s() Creating RRC instance RC.rrc[%d]:%p (%d of %d)\n", __FUNCTION__, enb_id, RC.rrc[enb_id], enb_id+1, enb_id_end);
memset((void *)RC.rrc[enb_id],0,sizeof(eNB_RRC_INST)); memset((void *)RC.rrc[enb_id],0,sizeof(eNB_RRC_INST));
configure_rrc(enb_id); configure_rrc(enb_id);
......
...@@ -784,6 +784,20 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) { ...@@ -784,6 +784,20 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
rrc->node_type = ngran_eNB; rrc->node_type = ngran_eNB;
} }
else if (strcmp(*(ENBParamList.paramarray[i][ENB_TRANSPORT_S_PREFERENCE_IDX].strptr), "f1") == 0) { else if (strcmp(*(ENBParamList.paramarray[i][ENB_TRANSPORT_S_PREFERENCE_IDX].strptr), "f1") == 0) {
paramdef_t SCTPParams[] = SCTPPARAMS_DESC;
paramdef_t NETParams[] = NETPARAMS_DESC;
char aprefix[MAX_OPTNAME_SIZE*2 + 8];
sprintf(aprefix,"%s.[%i].%s",ENB_CONFIG_STRING_ENB_LIST,i,ENB_CONFIG_STRING_SCTP_CONFIG);
config_get( SCTPParams,sizeof(SCTPParams)/sizeof(paramdef_t),aprefix);
int gNB_CU_id = *(ENBParamList.paramarray[0][ENB_ENB_ID_IDX].uptr);
LOG_I(ENB_APP,"F1AP: gNB_CU_id[%d] %d\n",k,gNB_CU_id);
char *gNB_CU_name = *(ENBParamList.paramarray[0][ENB_ENB_NAME_IDX].strptr);
LOG_I(ENB_APP,"F1AP: gNB_CU_name[%d] %s\n",k,gNB_CU_name);
rrc->eth_params_s.local_if_name = strdup(*(ENBParamList.paramarray[i][ENB_LOCAL_S_IF_NAME_IDX].strptr)); rrc->eth_params_s.local_if_name = strdup(*(ENBParamList.paramarray[i][ENB_LOCAL_S_IF_NAME_IDX].strptr));
LOG_I(RRC,"Configuring CU-DU interfaces for MACRLC on %s\n",rrc->eth_params_s.local_if_name); LOG_I(RRC,"Configuring CU-DU interfaces for MACRLC on %s\n",rrc->eth_params_s.local_if_name);
rrc->eth_params_s.my_addr = strdup(*(ENBParamList.paramarray[i][ENB_LOCAL_S_ADDRESS_IDX].strptr)); rrc->eth_params_s.my_addr = strdup(*(ENBParamList.paramarray[i][ENB_LOCAL_S_ADDRESS_IDX].strptr));
...@@ -800,6 +814,8 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) { ...@@ -800,6 +814,8 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
LOG_I(RRC,"remote port (F1U) %d\n",rrc->eth_params_s.remote_portd); LOG_I(RRC,"remote port (F1U) %d\n",rrc->eth_params_s.remote_portd);
rrc->eth_params_s.transp_preference = ETH_UDP_MODE; rrc->eth_params_s.transp_preference = ETH_UDP_MODE;
rrc->node_type = ngran_eNB_CU; rrc->node_type = ngran_eNB_CU;
rrc->sctp_in_streams = (uint16_t)*(SCTPParams[ENB_SCTP_INSTREAMS_IDX].uptr);
rrc->sctp_out_streams = (uint16_t)*(SCTPParams[ENB_SCTP_OUTSTREAMS_IDX].uptr);
} }
else { // no F1 else { // no F1
...@@ -2341,17 +2357,6 @@ int RCconfig_gtpu(void ) { ...@@ -2341,17 +2357,6 @@ int RCconfig_gtpu(void ) {
return 0; return 0;
} }
int RCconfig_CU_F1(uint32_t i) {
AssertFatal(1==0,"Shouldn't get here yet\n");
// 1. wait for F1AP_SETUP_REQ
// 2. configure cells with selected PLMN(s)
// 3. send F1AP_SETUP_RESP and return to setup S1AP
while(
}
int RCconfig_DU_F1(MessageDef *msg_p, uint32_t i) { int RCconfig_DU_F1(MessageDef *msg_p, uint32_t i) {
int k; int k;
......
...@@ -720,6 +720,9 @@ typedef struct eNB_RRC_INST_s { ...@@ -720,6 +720,9 @@ typedef struct eNB_RRC_INST_s {
int srs_enable[MAX_NUM_CCs]; int srs_enable[MAX_NUM_CCs];
int cell_info_configured; int cell_info_configured;
pthread_mutex_t cell_info_mutex; pthread_mutex_t cell_info_mutex;
uint16_t sctp_in_streams;
uint16_t sctp_out_streams;
} eNB_RRC_INST; } eNB_RRC_INST;
#define MAX_UE_CAPABILITY_SIZE 255 #define MAX_UE_CAPABILITY_SIZE 255
......
Active_eNBs = ( "eNB-Eurecom-LTEBox"); Active_eNBs = ( "eNB-CU-Eurecom-LTEBox");
# Asn1_verbosity, choice in: none, info, annoying # Asn1_verbosity, choice in: none, info, annoying
Asn1_verbosity = "none"; Asn1_verbosity = "none";
......
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