[ Jira id - ODUHIGH-593 ] Pack and unpack function nomenclature correction
[o-du/l2.git] / src / du_app / du_cfg.c
index 1ddbd01..239285a 100644 (file)
@@ -1019,7 +1019,6 @@ uint8_t parseF1NrFddInfo(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur, F1NrFddInfo
    return ROK;
 }
 
-#ifdef NR_TDD
 /*******************************************************************
  *
  * @brief Fill NR TDD Info
@@ -1064,7 +1063,6 @@ uint8_t parseF1NrTddInfo(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur, F1NrTddInfo
    }
    return ROK;
 }
-#endif
 
 /*******************************************************************
  *
@@ -1097,10 +1095,9 @@ uint8_t parseNrModeInfo(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur, NrModeInfo *
          strcpy((char*)modeCfg, (char*)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));      
       }
 
-#ifndef NR_TDD
-      if ((!xmlStrcmp(cur->name, (const xmlChar *)"F1_NR_FDD_INFO")) && (cur->ns == ns))
+      if(strcmp(modeCfg, "FDD") == 0)
       {
-         if(strcmp(modeCfg, "FDD") == 0)
+         if ((!xmlStrcmp(cur->name, (const xmlChar *)"F1_NR_FDD_INFO")) && (cur->ns == ns))
          {
             if(parseF1NrFddInfo(doc, ns, cur, &nrModeInfo->mode.fdd) != ROK)
             {
@@ -1108,10 +1105,9 @@ uint8_t parseNrModeInfo(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur, NrModeInfo *
             }
          }
       }
-#else
-      if ((!xmlStrcmp(cur->name, (const xmlChar *)"F1_NR_TDD_INFO")) && (cur->ns == ns))
+      else
       {
-         if(strcmp(modeCfg, "TDD") == 0)
+         if ((!xmlStrcmp(cur->name, (const xmlChar *)"F1_NR_TDD_INFO")) && (cur->ns == ns))
          {
             if(parseF1NrTddInfo(doc, ns, cur, &nrModeInfo->mode.tdd) != ROK)
             {
@@ -1120,7 +1116,6 @@ uint8_t parseNrModeInfo(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur, NrModeInfo *
          }
       }
 
-#endif            
       cur = cur -> next;
    }
    return ROK;
@@ -1898,7 +1893,7 @@ uint8_t parseCarrierCfg(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur,CarrierCfg *c
 
       if ((!xmlStrcmp(cur->name, (const xmlChar *)"NR_DL_ARFCN")) && (cur->ns == ns))
       {
-         carrierCfg->arfcnDL = convertArfcnToFreqKhz(atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1)));
+         carrierCfg->arfcnDL = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
       }
 
       if ((!xmlStrcmp(cur->name, (const xmlChar *)"UL_BW")) && (cur->ns == ns))
@@ -1908,7 +1903,7 @@ uint8_t parseCarrierCfg(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur,CarrierCfg *c
 
       if ((!xmlStrcmp(cur->name, (const xmlChar *)"NR_UL_ARFCN")) && (cur->ns == ns))
       {
-         carrierCfg->arfcnUL = convertArfcnToFreqKhz(atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1)));
+         carrierCfg->arfcnUL = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
       }
 #endif
 
@@ -4306,7 +4301,6 @@ uint8_t parseMacSliceCfgReq(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur,MacSliceC
 }
 #endif
 
-#ifdef THREAD_AFFINITY
 /*******************************************************************
  *
  * @brief Set thread affinity to the core configured via XML file
@@ -4334,7 +4328,7 @@ uint8_t parseThreadAffinity(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur, ThreadIn
       if ((!xmlStrcmp(cur->name, (const xmlChar *)"DU_APP_CORE")) && (cur->ns == ns))
       {
          threads->duAppCoreId = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
-#ifdef INTEL_THREAD_AFFINITY
+#ifdef THREAD_AFFINITY
          ODU_SET_THREAD_AFFINITY(&threads->duAppSTskId, SS_AFFINITY_MODE_EXCL, threads->duAppCoreId, 0);
 #endif
       }
@@ -4342,7 +4336,7 @@ uint8_t parseThreadAffinity(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur, ThreadIn
       if ((!xmlStrcmp(cur->name, (const xmlChar *)"EGTP_CORE")) && (cur->ns == ns))
       {
          threads->egtpCoreId = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
-#ifdef INTEL_THREAD_AFFINITY
+#ifdef THREAD_AFFINITY
          ODU_SET_THREAD_AFFINITY(&threads->egtpSTskId, SS_AFFINITY_MODE_EXCL, threads->egtpCoreId, 0);
 #endif
       }
@@ -4350,7 +4344,7 @@ uint8_t parseThreadAffinity(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur, ThreadIn
       if ((!xmlStrcmp(cur->name, (const xmlChar *)"RLC_MAC_CORE")) && (cur->ns == ns))
       {
          threads->rlcMacCoreId = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
-#ifdef INTEL_THREAD_AFFINITY
+#ifdef THREAD_AFFINITY
          ODU_SET_THREAD_AFFINITY(&threads->rlcMacSTskId, SS_AFFINITY_MODE_EXCL, threads->rlcMacCoreId, 0);
 #endif
       }
@@ -4358,7 +4352,7 @@ uint8_t parseThreadAffinity(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur, ThreadIn
       if ((!xmlStrcmp(cur->name, (const xmlChar *)"RLC_UL_CORE")) && (cur->ns == ns))
       {
          threads->rlcUlCoreId = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
-#ifdef INTEL_THREAD_AFFINITY
+#ifdef THREAD_AFFINITY
          ODU_SET_THREAD_AFFINITY(&threads->rlcUlSTskId, SS_AFFINITY_MODE_EXCL, threads->rlcUlCoreId, 0);
 #endif
       }
@@ -4366,7 +4360,7 @@ uint8_t parseThreadAffinity(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur, ThreadIn
       if ((!xmlStrcmp(cur->name, (const xmlChar *)"SCH_CORE")) && (cur->ns == ns))
       {
          threads->schCoreId = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
-#ifdef INTEL_THREAD_AFFINITY
+#ifdef THREAD_AFFINITY
          ODU_SET_THREAD_AFFINITY(&threads->schSTskId, SS_AFFINITY_MODE_EXCL, threads->schCoreId, 0);
 #endif
       }
@@ -4374,7 +4368,7 @@ uint8_t parseThreadAffinity(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur, ThreadIn
       if ((!xmlStrcmp(cur->name, (const xmlChar *)"SCTP_CORE")) && (cur->ns == ns))
       {
          threads->sctpCoreId = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
-#ifdef INTEL_THREAD_AFFINITY
+#ifdef THREAD_AFFINITY
          ODU_SET_THREAD_AFFINITY(&threads->sctpSTskId, SS_AFFINITY_MODE_EXCL, threads->sctpCoreId, 0);
 #endif
       }
@@ -4382,7 +4376,7 @@ uint8_t parseThreadAffinity(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur, ThreadIn
       if ((!xmlStrcmp(cur->name, (const xmlChar *)"LOWER_MAC_CORE")) && (cur->ns == ns))
       {
          threads->lwrMacCoreId = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
-#ifdef INTEL_THREAD_AFFINITY
+#ifdef THREAD_AFFINITY
          ODU_SET_THREAD_AFFINITY(&threads->lwrMacSTskId, SS_AFFINITY_MODE_EXCL, threads->lwrMacCoreId, 0);
 #endif
       }
@@ -4391,7 +4385,6 @@ uint8_t parseThreadAffinity(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur, ThreadIn
    }
    return ROK;
 }
-#endif
 
 /*******************************************************************
  *
@@ -5001,6 +4994,149 @@ uint8_t parseGlobalConfigParams(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur)
    return ROK;
 }
 
+/*******************************************************************
+ *
+ * @brief Free the memory allocate for slice supported list 
+ *
+ * @details
+ *
+ *    Function : parseDuCfgParams
+ *
+ *    Functionality: Free the memory allocate for slice supported list 
+ *
+ * @return void
+ *
+ * ****************************************************************/
+void freeSliceSuppLst(SupportedSliceList *sliceSuppLst) 
+{
+   uint8_t sliceIdx=0;
+
+   if(sliceSuppLst->numSupportedSlices&&sliceSuppLst->snssai)
+   {
+      for(sliceIdx=0;sliceIdx<sliceSuppLst->numSupportedSlices;sliceIdx++)
+      {
+         if(sliceSuppLst->snssai)
+         {
+            if(sliceSuppLst->snssai[sliceIdx])
+            {
+               DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL, sliceSuppLst->snssai[sliceIdx], sizeof(Snssai));
+            }
+            DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL, \
+            sliceSuppLst->snssai, (sliceSuppLst->numSupportedSlices) * sizeof(Snssai*));
+         }
+      }
+   }
+}
+
+/*******************************************************************
+ *
+ * @brief Free the memory allocate in parseDuCfgParams 
+ *
+ * @details
+ *
+ *    Function : parseDuCfgParams
+ *
+ *    Functionality: Free the memory allocate in parseDuCfgParams
+ *
+ * @return void
+ *
+ * ****************************************************************/
+void freeDuCfgParams()
+{
+   uint8_t ranFuncIdx=0,reportStyleIdx=0;
+   uint8_t policyIdx = 0,memIdx=0;
+   MacSliceRrmPolicy *rrmPolicy =NULLP;
+   MacSliceCfgReq *macSliceCfgReq=NULLP;
+   F1DuSysInfo *sysInfo;
+   CsiRsCfg *csiRsCfg;
+   RanFunction  *ranFunction;
+   RicReportStyle  *ricReportStyle;
+   CmLListCp  *measurementInfoList;
+   CmLList *measInfoNode = NULLP;
+
+   if(duCfgParam.duName)
+   {
+      DU_FREE(duCfgParam.duName, strlen(duCfgParam.duName));
+   }
+   
+   freeSliceSuppLst(&duCfgParam.macCellCfg.cellCfg.plmnInfoList[0].suppSliceList);
+   csiRsCfg=&duCfgParam.macCellCfg.csiRsCfg;
+   if(csiRsCfg->csiFreqDomainAlloc)
+   {
+      DU_FREE(csiRsCfg->csiFreqDomainAlloc, sizeof(uint8_t));
+   }
+   if(duCfgParam.macCellCfg.cellCfg.sib1Cfg.sib1Pdu)
+   {
+      DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL, \
+      duCfgParam.macCellCfg.cellCfg.sib1Cfg.sib1Pdu, duCfgParam.macCellCfg.cellCfg.sib1Cfg.sib1PduLen);
+   }
+
+   if(duCb.e2apDb.numOfRanFunction)
+   {
+      for(ranFuncIdx=0;ranFuncIdx<duCb.e2apDb.numOfRanFunction;ranFuncIdx++)
+      {
+         ranFunction=&duCb.e2apDb.ranFunction[ranFuncIdx];
+         for(reportStyleIdx=0;reportStyleIdx<ranFunction->numOfReportStyleSupported;reportStyleIdx++)
+         {
+            ricReportStyle=&ranFunction->reportStyleList[reportStyleIdx];
+            measurementInfoList=&ricReportStyle->measurementInfoList;
+            CM_LLIST_FIRST_NODE(measurementInfoList, measInfoNode);
+            while(measInfoNode)
+            {
+               MeasurementInfoForAction *measurementInfoForAction;
+               measurementInfoForAction= (MeasurementInfoForAction*)measInfoNode->node;
+               cmLListDelFrm(measurementInfoList, measInfoNode);
+               DU_FREE(measurementInfoForAction, sizeof(MeasurementInfoForAction));
+               DU_FREE(measInfoNode, sizeof(CmLList));
+               CM_LLIST_FIRST_NODE(measurementInfoList, measInfoNode);
+            }
+         }
+      }
+   }
+   
+   freeSliceSuppLst(&duCfgParam.srvdCellLst[0].duCellInfo.cellInfo.srvdPlmn[0].taiSliceSuppLst);
+   sysInfo=&duCfgParam.srvdCellLst[0].duSysInfo;
+   if(sysInfo->mibMsg)
+   {
+      DU_FREE(sysInfo->mibMsg, sysInfo->mibLen);
+   }
+   if(sysInfo->sib1Msg)
+   {
+      DU_FREE(sysInfo->sib1Msg, sysInfo->sib1Len);
+   }
+
+   macSliceCfgReq=&duCfgParam.tempSliceCfg;
+   if(macSliceCfgReq->listOfRrmPolicy)
+   {
+      for(policyIdx = 0; policyIdx < macSliceCfgReq->numOfRrmPolicy; policyIdx++)
+      {
+         if (macSliceCfgReq->listOfRrmPolicy[policyIdx])
+         {
+            rrmPolicy=macSliceCfgReq->listOfRrmPolicy[policyIdx];
+            if(rrmPolicy->rRMPolicyMemberList)
+            {
+               for(memIdx = 0; memIdx < rrmPolicy->numOfRrmPolicyMem; memIdx++)
+               {
+                  if (rrmPolicy->rRMPolicyMemberList[memIdx])
+                  {
+                     DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL,\
+                           rrmPolicy->rRMPolicyMemberList[memIdx], sizeof(RrmPolicyMemberList));
+                  }
+               }
+               DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL,rrmPolicy->rRMPolicyMemberList,\
+                     rrmPolicy->numOfRrmPolicyMem * sizeof(RrmPolicyMemberList*));
+            }
+
+            DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL, \
+                  macSliceCfgReq->listOfRrmPolicy[policyIdx], sizeof(MacSliceRrmPolicy));
+         }
+      }
+      DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL, \
+            macSliceCfgReq->listOfRrmPolicy,  macSliceCfgReq->numOfRrmPolicy * sizeof(MacSliceRrmPolicy*));
+   }
+}
+
+
 /*******************************************************************
  *
  * @brief Fill DU Config Parmeters 
@@ -5020,6 +5156,7 @@ uint8_t parseGlobalConfigParams(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur)
  * ****************************************************************/
 uint8_t parseDuCfgParams(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur)
 {
+   uint8_t ret=ROK;
    char *tempDuName = "";
    char *duIpV4Addr;
    char *cuIpV4Addr;
@@ -5033,12 +5170,11 @@ uint8_t parseDuCfgParams(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur)
    {
       if ((!xmlStrcmp(cur->name, (const xmlChar *)"THREAD_AFFINITY")) && (cur->ns == ns))
       {
-#ifdef THREAD_AFFINITY      
          if(parseThreadAffinity(doc, ns, cur, &duCfgParam.threadInfo) != ROK)
          {
-            return RFAILED;
+            ret = RFAILED;
+            break;
          }
-#endif         
       }
 
       if ((!xmlStrcmp(cur->name, (const xmlChar *)"GNB_ID")) && (cur->ns == ns))
@@ -5058,7 +5194,8 @@ uint8_t parseDuCfgParams(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur)
          if(!duCfgParam.duName)
          {
             DU_LOG("\nERROR --> DU_APP: %s: Memory allocation failed at line %d", __func__, __LINE__);
-            return RFAILED;
+            ret = RFAILED;
+            break;
          }
          strcpy((char*)duCfgParam.duName, tempDuName);
       }
@@ -5101,7 +5238,8 @@ uint8_t parseDuCfgParams(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur)
       {
          if(parseSctpParams(doc, ns, cur, &duCfgParam.sctpParams) != ROK)
          {
-            return RFAILED;
+            ret = RFAILED;
+            break;
          }
          duCfgParam.sctpParams.duIpAddr.ipV4Pres = true;
          duCfgParam.sctpParams.duIpAddr.ipV4Addr = duIp;
@@ -5115,7 +5253,8 @@ uint8_t parseDuCfgParams(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur)
       {
          if(parseEgtpParams(doc, ns, cur, &duCfgParam.egtpParams) != ROK)
          {
-            return RFAILED;
+            ret = RFAILED;
+            break;
          }
          duCfgParam.egtpParams.localIp.ipV4Addr = duIp;
          duCfgParam.egtpParams.localIp.ipV4Pres = true;
@@ -5128,7 +5267,8 @@ uint8_t parseDuCfgParams(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur)
       {
          if(parseMibParams(doc, ns, cur, &duCfgParam.mibParams) != ROK)
          {
-            return RFAILED;
+            ret = RFAILED;
+            break;
          }
       }
 
@@ -5136,7 +5276,8 @@ uint8_t parseDuCfgParams(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur)
       {
          if(parseSib1Params(doc, ns, cur, &duCfgParam.sib1Params) != ROK)
          {
-            return RFAILED;
+            ret = RFAILED;
+            break;
          }
       }
 
@@ -5144,7 +5285,8 @@ uint8_t parseDuCfgParams(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur)
       {
          if(parseF1DuServedCellInfo(doc, ns, cur, &duCfgParam.srvdCellLst[0]) != ROK)
          {
-            return RFAILED;
+            ret = RFAILED;
+            break;
          }
       }
 
@@ -5152,7 +5294,8 @@ uint8_t parseDuCfgParams(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur)
       {
          if(parseMacCellCfg(doc, ns, cur, &duCfgParam.macCellCfg) != ROK)
          {
-            return RFAILED;
+            ret = RFAILED;
+            break;
          }
       }
 
@@ -5161,7 +5304,8 @@ uint8_t parseDuCfgParams(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur)
       {
          if(parseMacSliceCfgReq(doc, ns, cur, &duCfgParam.tempSliceCfg) != ROK)
          {
-            return RFAILED;
+            ret = RFAILED;
+            break;
          }
       }
 #endif      
@@ -5170,7 +5314,8 @@ uint8_t parseDuCfgParams(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur)
       {
          if(parseDuTimerParams(doc, ns, cur, &duCb.duTimersInfo) != ROK)
          {
-            return RFAILED;
+            ret = RFAILED;
+            break;
          }
       }
 
@@ -5178,7 +5323,8 @@ uint8_t parseDuCfgParams(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur)
       {
          if(parseE2ConfigParams(doc, ns, cur, &duCb.e2apDb) != ROK)
          {
-            return RFAILED;
+            ret = RFAILED;
+            break;
          }
          else
          {
@@ -5192,13 +5338,19 @@ uint8_t parseDuCfgParams(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur)
       {
          if(parseGlobalConfigParams(doc, ns, cur) != ROK)
          {
-            return RFAILED;
+            ret = RFAILED;
+            break;
          }
       }
 
       cur = cur -> next;
    }
-   return ROK;
+
+   if(ret != ROK)
+   {
+      freeDuCfgParams();
+   }
+   return ret;
 }
 
 /*******************************************************************
@@ -5220,7 +5372,11 @@ uint8_t parseDuCfgParams(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur)
  * ****************************************************************/
 uint8_t duReadCfg()
 {
-   const char *filename = "../build/config/odu_config.xml";
+#ifdef NR_TDD
+   const char *filename = "../build/config/tdd_odu_config.xml";
+#else
+   const char *filename = "../build/config/fdd_odu_config.xml";
+#endif
    xmlDocPtr doc = NULLP;
    xmlNodePtr cur = NULLP;
    xmlNsPtr ns = NULLP;