From 32a39e9a678a08590917011c15c0df818af9f323 Mon Sep 17 00:00:00 2001
From: Raymond Knopp <raymond.knopp@eurecom.fr>
Date: Wed, 5 Sep 2018 22:28:56 +0200
Subject: [PATCH] CU configuration modifications

---
 openair2/ENB_APP/enb_app.c                    |  6 ++---
 openair2/ENB_APP/enb_config.c                 | 27 +++++++++++--------
 openair2/RRC/LTE/rrc_defs.h                   |  3 +++
 .../PROJECTS/GENERIC-LTE-EPC/CONF/cu.lte.conf |  2 +-
 4 files changed, 22 insertions(+), 16 deletions(-)

diff --git a/openair2/ENB_APP/enb_app.c b/openair2/ENB_APP/enb_app.c
index f0dd39d3e6..d4c3346ed2 100644
--- a/openair2/ENB_APP/enb_app.c
+++ b/openair2/ENB_APP/enb_app.c
@@ -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);
 
-	if (node_type == ngran_eNB_CU || node_type == ngran_ng_eNB_CU) RCconfig_CU_F1(enb_id);
-
 	if (enb_id == 0) RCconfig_gtpu();
 	
 	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)
   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 *));
-  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,
 				       "Number of MACRLC instances %d != number of RRC instances %d\n",
 				       RC.nb_macrlc_inst,enb_id_end-enb_id_start);
   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));
-    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));
     configure_rrc(enb_id);
 
diff --git a/openair2/ENB_APP/enb_config.c b/openair2/ENB_APP/enb_config.c
index de468b79ca..51a3ca6cd7 100644
--- a/openair2/ENB_APP/enb_config.c
+++ b/openair2/ENB_APP/enb_config.c
@@ -784,6 +784,20 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
 	rrc->node_type                             = ngran_eNB;
       }
       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));
 	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));
@@ -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);
 	rrc->eth_params_s.transp_preference        = ETH_UDP_MODE;
 	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
@@ -2341,17 +2357,6 @@ int RCconfig_gtpu(void ) {
 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 k;
diff --git a/openair2/RRC/LTE/rrc_defs.h b/openair2/RRC/LTE/rrc_defs.h
index 9767cc6ee9..ae3dd3402d 100644
--- a/openair2/RRC/LTE/rrc_defs.h
+++ b/openair2/RRC/LTE/rrc_defs.h
@@ -720,6 +720,9 @@ typedef struct eNB_RRC_INST_s {
   int srs_enable[MAX_NUM_CCs];
   int cell_info_configured;
   pthread_mutex_t cell_info_mutex;
+  uint16_t sctp_in_streams;
+  uint16_t sctp_out_streams;
+
 } eNB_RRC_INST;
 
 #define MAX_UE_CAPABILITY_SIZE 255
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/cu.lte.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/cu.lte.conf
index 49140cdfe7..ba0bd886a6 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/cu.lte.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/cu.lte.conf
@@ -1,4 +1,4 @@
-Active_eNBs = ( "eNB-Eurecom-LTEBox");
+Active_eNBs = ( "eNB-CU-Eurecom-LTEBox");
 # Asn1_verbosity, choice in: none, info, annoying
 Asn1_verbosity = "none";
 
-- 
GitLab