[Epic-ID: ODUHIGH-538][Issue-ID: ODUHIGH-563] Fixes to read SCTP and EGTP configurati... 51/12551/6
authorlal.harshita <Harshita.Lal@radisys.com>
Tue, 20 Feb 2024 10:44:46 +0000 (16:14 +0530)
committerlal.harshita <Harshita.Lal@radisys.com>
Wed, 21 Feb 2024 07:30:58 +0000 (13:00 +0530)
Change-Id: I9c78f7cf9b8e574fa1dba8af362737d5e136e886
Signed-off-by: lal.harshita <Harshita.Lal@radisys.com>
build/config/odu_config.xml
src/du_app/du_cfg.c
src/du_app/du_cfg.h
src/du_app/du_f1ap_msg_hdl.c

index 777316e..2bb3682 100644 (file)
@@ -15,9 +15,9 @@
    <MAX_NUM_DRB>29</MAX_NUM_DRB>
    <MAX_NUM_UE_SUPPORTED>3</MAX_NUM_UE_SUPPORTED>
    <MAX_NUM_UE>32</MAX_NUM_UE>
-   <DU_IP_V4_ADDR>192.168.130.71</DU_IP_V4_ADDR>
-   <CU_IP_V4_ADDR>192.168.130.72</CU_IP_V4_ADDR>
-   <RIC_IP_V4_ADDR>192.168.130.70</RIC_IP_V4_ADDR>
+   <DU_IP_V4_ADDR>192.168.130.81</DU_IP_V4_ADDR>
+   <CU_IP_V4_ADDR>192.168.130.82</CU_IP_V4_ADDR>
+   <RIC_IP_V4_ADDR>192.168.130.80</RIC_IP_V4_ADDR>
    <SCTP>
       <F1_SCTP_PORT>38472</F1_SCTP_PORT>
       <E2_SCTP_PORT>36421</E2_SCTP_PORT>
index 6ea0cdb..6f95194 100644 (file)
@@ -351,35 +351,6 @@ uint8_t readMacCfg()
    return ROK;
 }
 
-/*******************************************************************
- *
- * @brief Configures the DU Parameters
- *
- * @details
- *
- *    Function : fillDuPort
- *
- *    Functionality:
- *       - fills the DU Ports.  
- *
- * @params[in] duPort array to be filled
- * @return ROK     - success
- *         RFAILED - failure
- *
- * ****************************************************************/
-uint8_t fillDuPort(uint16_t *duPort)
-{
-
-#ifdef O1_ENABLE
-   duPort[F1_INTERFACE]   = g_cfg.DU_Port;
-   duPort[E2_INTERFACE]   = g_cfg.RIC_Port;
-#else
-   duPort[F1_INTERFACE]   = F1_SCTP_PORT;     /* DU Port idx  0 38472 */
-   duPort[E2_INTERFACE]   = E2_SCTP_PORT;    /* RIC Port idx 1 36421 */
-#endif
-   return ROK;
-}
-
 /*******************************************************************
  *
  * @brief Configures the DU Parameters
@@ -604,7 +575,6 @@ uint8_t readCfg()
    CmLList *node;
    uint8_t srvdCellIdx, bandIdx, sliceIdx, plmnIdx, ranFuncIdx, eventTriggerStyleIdx, reportStyleIdx, tnlAssocIdx;
    uint8_t brdcstPlmnIdx, freqBandIdx, srvdPlmnIdx;
-   uint32_t ipv4_du, ipv4_cu, ipv4_ric;
    MibParams mib;
    Sib1Params sib1;
    SupportedSliceList *taiSliceSuppLst;
@@ -623,61 +593,8 @@ uint8_t readCfg()
    /* Gnb Id */
    duCb.gnbId = GNB_ID;
    
-#ifdef O1_ENABLE
-   if( getStartupConfig(&g_cfg) != ROK )
-   {
-      RETVALUE(RFAILED);
-   }
-   cmInetAddr((S8*)g_cfg.DU_IPV4_Addr, &ipv4_du);
-   cmInetAddr((S8*)g_cfg.CU_IPV4_Addr, &ipv4_cu);
-   cmInetAddr((S8*)g_cfg.RIC_IPV4_Addr, &ipv4_ric);
-
-   duCfgParam.sctpParams.cuPort = g_cfg.CU_Port;
-   duCfgParam.sctpParams.ricPort = g_cfg.RIC_Port;
-#else   
-   cmInetAddr((S8*)DU_IP_V4_ADDR, &ipv4_du);
-   cmInetAddr((S8*)CU_IP_V4_ADDR, &ipv4_cu);
-   cmInetAddr((S8*)RIC_IP_V4_ADDR, &ipv4_ric);
-
-   duCfgParam.sctpParams.cuPort = F1_SCTP_PORT;
-   duCfgParam.sctpParams.ricPort = E2_SCTP_PORT;
-#endif
-
-   fillDuPort(duCfgParam.sctpParams.duPort);
-   
-   /* F1 DU IP Address and Port*/
-   duCfgParam.sctpParams.duIpAddr.ipV4Addr = ipv4_du;
-
-   /* F1 CU IP Address and Port*/
-   duCfgParam.sctpParams.cuIpAddr.ipV4Addr = ipv4_cu;
-
-   /* Fill RIC Params */
-   duCfgParam.sctpParams.ricIpAddr.ipV4Addr = ipv4_ric;
-
-   /* EGTP Parameters */
-   duCfgParam.egtpParams.localIp.ipV4Pres = TRUE;
-   duCfgParam.egtpParams.localIp.ipV4Addr = ipv4_du;
-   duCfgParam.egtpParams.localPort = F1_EGTP_PORT;
-   duCfgParam.egtpParams.destIp.ipV4Pres = TRUE;
-   duCfgParam.egtpParams.destIp.ipV4Addr = ipv4_cu;
-   duCfgParam.egtpParams.destPort = F1_EGTP_PORT;
-   duCfgParam.egtpParams.minTunnelId = MIN_TEID;
-   duCfgParam.egtpParams.maxTunnelId = MAX_TEID;
-
-   duCfgParam.maxUe = 32; //TODO: Check
-   
-   /* DU Info */
-   duCfgParam.duId = DU_ID;
-   DU_ALLOC(duCfgParam.duName, sizeof(DU_NAME));
-   if(!duCfgParam.duName)
-   {
-      DU_LOG("\nDEBUG --> DU_APP: readCfg(): Memory allocation failure for DU name");   
-      return RFAILED;
-   }
-   strcpy((char*)duCfgParam.duName,DU_NAME);
-
    memset(&duCb.e2apDb, 0, sizeof(E2apDb));
-   duCb.e2apDb.e2NodeId =  DU_ID;
+   duCb.e2apDb.e2NodeId =  1; //Will be removed as part of E2 config parser
    duCb.e2apDb.e2TransInfo.transIdCounter = 0;
 
    duCb.e2apDb.numOfTNLAssoc = 1;
@@ -1129,7 +1046,6 @@ uint8_t cpyRrmPolicyInDuCfgParams(RrmPolicyList rrmPolicy[], uint8_t policyNum,
    return ROK;
 }
 
-#ifdef XML_BASED_CONFIG
 /*******************************************************************
  *
  * @brief Fill SCTP Parameters
@@ -1150,14 +1066,20 @@ uint8_t cpyRrmPolicyInDuCfgParams(RrmPolicyList rrmPolicy[], uint8_t policyNum,
  * ****************************************************************/
 uint8_t parseSctpParams(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur, SctpParams *sctp)
 {
-   uint8_t max_du_port;
-   uint16_t f1_sctp_port;
-   uint16_t e2_sctp_port;
+   uint8_t max_du_port = 0;
+   uint16_t f1_sctp_port = 0;
+   uint16_t e2_sctp_port = 0;
 
    memset(sctp, 0, sizeof(SctpParams));
    cur = cur->xmlChildrenNode;
    while (cur != NULL) 
    {
+#ifdef O1_ENABLE
+      sctp->duPort[F1_INTERFACE] = g_cfg.DU_Port;
+      sctp->duPort[E2_INTERFACE] = g_cfg.RIC_Port;
+      sctp->cuPort = g_cfg.CU_Port;
+      sctp->ricPort = g_cfg.RIC_Port;
+#else
       if ((!xmlStrcmp(cur->name, (const xmlChar *)"MAX_DU_PORT")) && (cur->ns == ns))
       {
          max_du_port = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
@@ -1167,6 +1089,7 @@ uint8_t parseSctpParams(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur, SctpParams *
             sctp->duPort[E2_INTERFACE] = e2_sctp_port;    /* RIC Port idx 1  */
          }
       }
+
       if ((!xmlStrcmp(cur->name, (const xmlChar *)"F1_SCTP_PORT")) && (cur->ns == ns))
       {
          f1_sctp_port = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
@@ -1176,10 +1099,6 @@ uint8_t parseSctpParams(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur, SctpParams *
          e2_sctp_port = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
       }
 
-#ifdef O1_ENABLE
-      sctp->cuPort = g_cfg.CU_Port;
-      sctp->ricPort = g_cfg.RIC_Port;
-#else
       sctp->cuPort = f1_sctp_port;
       sctp->ricPort = e2_sctp_port;
 #endif
@@ -1229,6 +1148,7 @@ uint8_t parseEgtpParams(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur, F1EgtpParams
    return ROK;
 }
 
+#ifdef XML_BASED_CONFIG
 /*******************************************************************
  *
  * @brief Fill MIB configuration 
@@ -1290,44 +1210,6 @@ uint8_t parseMibParams(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur, MibParams *mi
    return ROK;
 }
 
-/*******************************************************************
- *
- * @brief Fill RRC version 
- *
- * @details
- *
- *    Function : parseF1RrcVersion
- *
- *    Functionality: Fill RRC version
- *
- * @params[in] XML document pointer
- *             XML namespace
- *             Current node in XML
- *             Pointer to structure to be filled
- * @return ROK     - success
- *         RFAILED - failure
- *
- * ****************************************************************/
-uint8_t parseF1RrcVersion(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur,F1RrcVersion *f1RrcVersion)
-{
-   memset(f1RrcVersion, 0, sizeof(F1RrcVersion));
-   cur = cur->xmlChildrenNode;
-   while(cur != NULL)
-   {
-      if((!xmlStrcmp(cur->name, (const xmlChar *)"RRC_VER")) && (cur->ns == ns))
-      {
-         strcpy((char*)f1RrcVersion->rrcVer, (char*)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
-      }
-
-      if((!xmlStrcmp(cur->name, (const xmlChar *)"EXT_RRC_VER")) && (cur->ns == ns))
-      {
-         f1RrcVersion->extRrcVer = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
-      }
-      cur = cur -> next;
-   }
-   return ROK;
-}
-
 /*******************************************************************
  *
  * @brief Fill PLMN ID
@@ -5395,17 +5277,6 @@ uint8_t parseDuCfgParams(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur)
 #endif         
       }
 
-#ifdef XML_BASED_CONFIG
-      if ((!xmlStrcmp(cur->name, (const xmlChar *)"MAX_NUM_DRB")) && (cur->ns == ns))
-      {
-         duCfgParam.maxNumDrb = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
-      }
-
-      if ((!xmlStrcmp(cur->name, (const xmlChar *)"MAX_NUM_UE_SUPPORTED")) && (cur->ns == ns))
-      {
-         duCfgParam.maxSupportedUes = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
-      }
-
       if ((!xmlStrcmp(cur->name, (const xmlChar *)"DU_ID")) && (cur->ns == ns))
       {
          duCfgParam.duId = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
@@ -5423,6 +5294,16 @@ uint8_t parseDuCfgParams(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur)
          strcpy((char*)duCfgParam.duName, tempDuName);
       }
 
+      if ((!xmlStrcmp(cur->name, (const xmlChar *)"MAX_NUM_DRB")) && (cur->ns == ns))
+      {
+         duCfgParam.maxNumDrb = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
+      }
+
+      if ((!xmlStrcmp(cur->name, (const xmlChar *)"MAX_NUM_UE_SUPPORTED")) && (cur->ns == ns))
+      {
+         duCfgParam.maxSupportedUes = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
+      }
+
       if ((!xmlStrcmp(cur->name, (const xmlChar *)"MAX_NUM_UE")) && (cur->ns == ns))
       {
          duCfgParam.maxUe = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
@@ -5484,6 +5365,7 @@ uint8_t parseDuCfgParams(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur)
          duCfgParam.egtpParams.maxTunnelId = duCfgParam.maxNumDrb * duCfgParam.maxSupportedUes; 
       }
 
+#ifdef XML_BASED_CONFIG
       if ((!xmlStrcmp(cur->name, (const xmlChar *)"MIB_PARAMS")) && (cur->ns == ns))
       {
          if(parseMibParams(doc, ns, cur, &duCfgParam.mibParams) != ROK)
@@ -5492,14 +5374,6 @@ uint8_t parseDuCfgParams(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur)
          }
       }
 
-      if ((!xmlStrcmp(cur->name, (const xmlChar *)"F1_RRC_VERSION")) && (cur->ns == ns))
-      {
-         if(parseF1RrcVersion(doc, ns, cur, &duCfgParam.rrcVersion) != ROK)
-         {
-            return RFAILED;
-         }
-      }
-
       if ((!xmlStrcmp(cur->name, (const xmlChar *)"F1_DU_SRVD_CELL_INFO")) && (cur->ns == ns))
       {
          if(parseF1DuServedCellInfo(doc, ns, cur, &duCfgParam.srvdCellLst[0]) != ROK)
@@ -5774,11 +5648,6 @@ void printDuConfig()
    DU_LOG("Cell Barred %ld\n", mib->cellBarred);
    DU_LOG("Intra Frequency Reselection %ld\n", mib->intraFreqReselection);
    
-   f1RrcVersion = &duCfgParam.rrcVersion;   
-   DU_LOG("\n ** RRC Version ** \n");
-   DU_LOG("RRC Version %s\n", f1RrcVersion->rrcVer);
-   DU_LOG("Extended RRC Version %d\n", f1RrcVersion->extRrcVer);
-
    duSysInfo = &duCfgParam.srvdCellLst[0].duSysInfo;
    DU_LOG("\n ** DU System Information ** \n");
    DU_LOG("MIB length %d\n", duSysInfo->mibLen);
index 1b902dd..cc638f1 100644 (file)
 #define GNB_ID  1 /* As per 38.423,Sec 9.2.2.1, gnbId range b/w 0 to 4294967295 */
 
 #define DU_INST 0
-#define DU_ID 1
 
-#ifndef O1_ENABLE
-#define DU_IP_V4_ADDR "192.168.130.81"
-#define CU_IP_V4_ADDR "192.168.130.82"
-#define RIC_IP_V4_ADDR "192.168.130.80"
-
-#define F1_SCTP_PORT 38472  /* As per the spec 38.472, the registered port number for F1AP is 38472 */
-#define E2_SCTP_PORT 36421
-#endif
-
-#define F1_EGTP_PORT  2152  /* As per the spec 29.281, the registered port number for GTP-U is 2152 */
 #define NR_PCI 1
 #define NR_CELL_ID 1
 
-#define DU_NAME "ORAN OAM DU"
 #define CELL_TYPE SMALL
 
 //TODO: while testing for TDD, Mu1 and 100 MHz, this flag must be enabled
@@ -1275,9 +1263,7 @@ typedef struct duCfgParams
    ThreadInfo         threadInfo;
    SctpParams         sctpParams;                  /* SCTP Params */
    F1EgtpParams       egtpParams;                  /* EGTP Params */
-   SchedulerCfg       schedCfg;
    F1DuSrvdCellInfo   srvdCellLst[MAX_NUM_CELL];  /* Serving cell list *///TODO: this must be removed eventually
-   F1RrcVersion       rrcVersion;                 /* RRC version */
    MacCellCfg         macCellCfg;                    /* MAC cell configuration */
    MibParams          mibParams;                  /* MIB Params */
    Sib1Params         sib1Params;                 /* SIB1 Params */
index 85f3396..87c1536 100644 (file)
@@ -10567,7 +10567,7 @@ uint8_t extractUpTnlInfo(uint8_t drbId, uint8_t configType,\
 #ifdef O1_ENABLE
    cmInetAddr((S8*)g_cfg.DU_IPV4_Addr, &ipv4_du);
 #else
-   cmInetAddr((char *)DU_IP_V4_ADDR, &ipv4_du);
+   ipv4_du = duCfgParam.egtpParams.localIp.ipV4Addr;
 #endif
 
    for(tnlIdx=0; tnlIdx < tnlInfo->list.count; tnlIdx++)