Merge "[Epic-ID: ODUHIGH-556][Task-ID: ODUHIGH-559]Correction in PUCCH allocation"
authorSangeeta Vaidhyanathan <svaidhya@radisys.com>
Tue, 20 Feb 2024 10:16:31 +0000 (10:16 +0000)
committerGerrit Code Review <gerrit@o-ran-sc.org>
Tue, 20 Feb 2024 10:16:31 +0000 (10:16 +0000)
Dockerfile
Dockerfile-cu-stub
build/common/du_app.mak
build/config/odu_config.xml
build/odu/makefile
src/du_app/du_cfg.c
src/du_app/du_cfg.h
src/du_app/du_mgr_main.c

index 84b8383..76b6fc5 100644 (file)
@@ -5,7 +5,7 @@ FROM nexus3.o-ran-sc.org:10002/o-ran-sc/bldr-ubuntu18-c-go:1.9.0
 ADD . /opt/o-du-l2
 WORKDIR /opt/o-du-l2
 
-RUN apt-get update && apt-get install -y libpcap-dev
+RUN apt-get update && apt-get install -y libpcap-dev && apt-get install -y libxml2-dev
 
 RUN cd build/odu && make clean_odu odu MACHINE=BIT64 MODE=FDD
 
index e1efcd5..1512680 100644 (file)
@@ -3,7 +3,7 @@ FROM nexus3.o-ran-sc.org:10002/o-ran-sc/bldr-ubuntu18-c-go:1.9.0
 ADD . /opt/o-du-l2
 WORKDIR /opt/o-du-l2
 
-RUN apt-get update && apt-get install -y libpcap-dev
+RUN apt-get update && apt-get install -y libpcap-dev && apt-get install -y libxml2-dev
 
 RUN cd build/odu && make clean_cu cu_stub NODE=TEST_STUB MACHINE=BIT64 MODE=FDD
 
index ad15417..2be0cc6 100644 (file)
@@ -35,15 +35,13 @@ HDR_FILES+=$(wildcard $(CM_DIR)/lrg*.[hx])
 lib: $(LIB_DIR)/libduapp.a
 include $(COM_BUILD_DIR)/compile.mak
 
-ifdef XML_BASED_CONFIG
-I_OPTS+=-I/usr/include/libxml2
-endif
 I_OPTS+=-I$(ROOT_DIR)/src/mt
 I_OPTS+=-I$(ROOT_DIR)/src/codec_utils/common
 I_OPTS+=-I$(ROOT_DIR)/src/codec_utils/F1AP
 I_OPTS+=-I$(ROOT_DIR)/src/codec_utils/RRC
 I_OPTS+=-I$(ROOT_DIR)/src/codec_utils/E2AP
 I_OPTS+=-I$(ROOT_DIR)/src/codec_utils/E2SM_KPM
+I_OPTS+=-I/usr/include/libxml2
 
 ifeq ($(O1_ENABLE),YES)
 I_OPTS+=-I$(ROOT_DIR)/src/o1
index 97f7b9d..777316e 100644 (file)
@@ -1,6 +1,15 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
-<DU_CFG_PARAMS xmlns = "odu_config.xml">
+<DU_CFG_PARAMS xmlns = "urn:o-ran:odu:configuration">
+   <THREAD_AFFINITY>
+      <DU_APP_CORE>16</DU_APP_CORE>
+      <EGTP_CORE>27</EGTP_CORE>
+      <RLC_MAC_CORE>18</RLC_MAC_CORE>
+      <RLC_UL_CORE>22</RLC_UL_CORE>
+      <SCH_CORE>22</SCH_CORE>
+      <SCTP_CORE>25</SCTP_CORE>
+      <LOWER_MAC_CORE>21</LOWER_MAC_CORE>
+   </THREAD_AFFINITY>
    <DU_ID>1</DU_ID>
    <DU_NAME>ORAN OAM DU</DU_NAME>
    <MAX_NUM_DRB>29</MAX_NUM_DRB>
    <MAX_SFN>1024</MAX_SFN>
    <BASE_SCS>15</BASE_SCS>
    <MAX_SYMB_PER_SLOT>14</MAX_SYMB_PER_SLOT>
+<!--
+   <GNB_ID>1</GNB_ID>
+   <DU_TIMER_INFO>
+      <TIMER_TQ_CP>
+         <TIMER_LEN>2</TIMER_LEN>
+      </TIMER_TQ_CP>
+      <TIMER_RESOLUTION>1</TIMER_RESOLUTION>
+   </DU_TIMER_INFO>
+   <E2AP_CFG>
+      <E2_NODE_ID>1</E2_NODE_ID>
+      <NUM_OF_TNL_ASSOC>1</NUM_OF_TNL_ASSOC>
+      <TNL_ASSOC_LIST>
+         <TNL_ASSOC>
+            <LOCAL_IP>192.168.130.71</LOCAL_IP>
+            <LOCAL_PORT>36421<LOCAL_PORT>
+            <DESTINATION_IP>192.168.130.70</DESTINATION_IP>
+            <DESTINATION_PORT>36421</DESTINATION_PORT>
+            <ASSOC_USAGE>2</ASSOC_USAGE> 
+         </TNL_ASSOC>
+      </TNL_ASSOC_LIST>
+      <NUM_OF_RAN_FUNCTION>1</NUM_OF_RAN_FUNCTION>
+      <RAN_FUNCTION_LIST>
+         <RAN_FUNCTION>
+            <ID>1</ID>
+            <RAN_FUNCTION_NAME>
+               <SHORT_NAME>ORAN-E2SM-KPM</SHORT_NAME>
+               <SEVICE_MODEL_OID>1.3.6.1.4.1.53148.1.2.2.2</SEVICE_MODEL_OID>
+               <DESCRIPTION>KPM Monitor</DESCRIPTION>
+            </RAN_FUNCTION_NAME>
+            <REVISION_COUNTER>0</REVISION_COUNTER>
+            <NUM_OF_EVENT_TRIGGER_STYLE_SUPPORTED>1</NUM_OF_EVENT_TRIGGER_STYLE_SUPPORTED>
+            <EVENT_TRIGGERED_STYLE_LIST>
+               <EVENT_TRIGGERED_STYLE>
+                  <STYLE_TYPE>1</STYLE_TYPE>
+                  <NAME>Periodic Report</NAME>
+                  <FORMAT_TYPE>1</FORMAT_TYPE>
+               </EVENT_TRIGGERED_STYLE>
+            </EVENT_TRIGGERED_STYLE_LIST>
+            <NUM_OF_REPORT_STYLE_SUPPORTED>1</NUM_OF_REPORT_STYLE_SUPPORTED>
+            <REPORT_STYLE_SUPPORTED_LIST>
+               <REPORT_STYLE>
+                  <RIC_STYLE>
+                     <STYLE_TYPE>1</STYLE_TYPE>
+                     <NAME>E2 Node Measurement</NAME>
+                     <FORMAT_TYPE>1</FORMAT_TYPE>
+                  </RIC_STYLE>
+                  <NUM_OF_MEASUREMENT_INFO>2</NUM_OF_MEASUREMENT_INFO>
+                  <MEASUREMENT_INFO_LIST>
+                     <MEASUREMENT_INFO>
+                        <ID>1</ID>
+                        <NAME>RRU.PrbTotDl</NAME>
+                     </MEASUREMENT_INFO>
+                     <MEASUREMENT_INFO>
+                        <ID>2</ID>
+                        <NAME>RRU.PrbTotUl</NAME>
+                     </MEASUREMENT_INFO>
+                  </MEASUREMENT_INFO_LIST>
+               </REPORT_STYLE>
+            </REPORT_STYLE_SUPPORTED_LIST>
+            <RIC_INDICATION_HEADER_FORMAT>1</RIC_INDICATION_HEADER_FORMAT>
+            <RIC_INDICATION_MESSAGE_FORMAT>1</RIC_INDICATION_MESSAGE_FORMAT>
+         </RAN_FUNCTION>
+      </RAN_FUNCTION_LIST>
+   </E2AP_CFG>
+-->
 </DU_CFG_PARAMS>   
 
 
index 39fcf83..efbb000 100644 (file)
@@ -74,7 +74,7 @@ endif
 # macro for output file name and makefile name
 #
 
-PLTFRM_FLAGS= -UMSPD -DODU -DINTEL_FAPI -UODU_MEMORY_DEBUG_LOG -DDEBUG_ASN_PRINT -UDEBUG_PRINT -DERROR_PRINT -USTART_DL_UL_DATA -UNR_DRX -UCALL_FLOW_DEBUG_LOG -UODU_SLOT_IND_DEBUG_LOG 
+PLTFRM_FLAGS=-UMSPD -DODU -DINTEL_FAPI -UODU_MEMORY_DEBUG_LOG -DDEBUG_ASN_PRINT -UDEBUG_PRINT -DERROR_PRINT -USTART_DL_UL_DATA -UNR_DRX -UCALL_FLOW_DEBUG_LOG -UODU_SLOT_IND_DEBUG_LOG 
 
 ifeq ($(MODE),TDD)
    PLTFRM_FLAGS += -DNR_TDD
@@ -86,8 +86,11 @@ endif
 ifeq ($(NODE),TEST_STUB)
        PLTFRM_FLAGS+=-DODU_TEST_STUB
 endif
+ifdef PHY
+   PLTFRM_FLAGS+=-DTHREAD_AFFINITY
+endif  
 ifeq ($(PHY), INTEL_L1)
-       PLTFRM_FLAGS+=-DSS_USE_WLS_MEM -DINTEL_WLS_MEM -DDEBUG_MODE -DINTEL_L1_V20_03_ONWARDS -DINTEL_THREAD_AFFINITY
+       PLTFRM_FLAGS+=-DSS_USE_WLS_MEM -DINTEL_WLS_MEM -DDEBUG_MODE -DINTEL_L1_V20_03_ONWARDS
 ifeq ($(PHY_MODE),TIMER)
        PLTFRM_FLAGS+=-DINTEL_TIMER_MODE
 endif
@@ -109,10 +112,7 @@ export BUILD
 export I_OPTS
 
 # Add to the linker options the platform specific components
-L_OPTS+=-lnsl -lrt -lm -lpthread -lsctp
-ifdef XML_BASED_CONFIG
-L_OPTS+=-lxml2
-endif
+L_OPTS+=-lnsl -lrt -lm -lpthread -lsctp -lxml2
 
 ifeq ($(PHY), INTEL_L1)
        L_OPTS+=-L/root/Intel-L1-20.11.1/phy/wls_lib/ -lwls                         \
index f477c1f..6ea0cdb 100644 (file)
 /* This file contains all utility functions */
 #include "common_def.h"
 
-#ifdef XML_BASED_CONFIG
 #include <libxml/parser.h>
 #include <libxml/tree.h>
 #include <libxml/xmlmemory.h>
 #include <arpa/inet.h>
-#endif
 
 #include "du_tmr.h"
 #include "legtp.h"
@@ -5282,6 +5280,80 @@ uint8_t parseMacSliceCfgReq(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur,MacSliceC
    }
    return ROK;
 }
+#endif
+
+#ifdef THREAD_AFFINITY
+/*******************************************************************
+ *
+ * @brief Set thread affinity to the core configured via XML file
+ *
+ * @details
+ *
+ *    Function : parseThreadAffinity
+ *
+ *    Functionality: Set thread affinity to the core configured 
+ *       via XML file
+ *
+ * @params[in] XML document pointer
+ *             XML namespace
+ *             Current node in XML
+ *             Thread information
+ * @return ROK     - success
+ *         RFAILED - failure
+ *
+ * ****************************************************************/
+uint8_t parseThreadAffinity(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur, ThreadInfo *threads)
+{
+   cur = cur -> xmlChildrenNode;
+   while(cur != NULL)
+   {
+      if ((!xmlStrcmp(cur->name, (const xmlChar *)"DU_APP_CORE")) && (cur->ns == ns))
+      {
+         threads->duAppCoreId = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
+         ODU_SET_THREAD_AFFINITY(&threads->duAppSTskId, SS_AFFINITY_MODE_EXCL, threads->duAppCoreId, 0);
+      }
+
+      if ((!xmlStrcmp(cur->name, (const xmlChar *)"EGTP_CORE")) && (cur->ns == ns))
+      {
+         threads->egtpCoreId = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
+         ODU_SET_THREAD_AFFINITY(&threads->egtpSTskId, SS_AFFINITY_MODE_EXCL, threads->egtpCoreId, 0);
+      }
+
+      if ((!xmlStrcmp(cur->name, (const xmlChar *)"RLC_MAC_CORE")) && (cur->ns == ns))
+      {
+         threads->rlcMacCoreId = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
+         ODU_SET_THREAD_AFFINITY(&threads->rlcMacSTskId, SS_AFFINITY_MODE_EXCL, threads->rlcMacCoreId, 0);
+      }
+
+      if ((!xmlStrcmp(cur->name, (const xmlChar *)"RLC_UL_CORE")) && (cur->ns == ns))
+      {
+         threads->rlcUlCoreId = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
+         ODU_SET_THREAD_AFFINITY(&threads->rlcUlSTskId, SS_AFFINITY_MODE_EXCL, threads->rlcUlCoreId, 0);
+      }
+
+      if ((!xmlStrcmp(cur->name, (const xmlChar *)"SCH_CORE")) && (cur->ns == ns))
+      {
+         threads->schCoreId = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
+         ODU_SET_THREAD_AFFINITY(&threads->schSTskId, SS_AFFINITY_MODE_EXCL, threads->schCoreId, 0);
+      }
+
+      if ((!xmlStrcmp(cur->name, (const xmlChar *)"SCTP_CORE")) && (cur->ns == ns))
+      {
+         threads->sctpCoreId = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
+         ODU_SET_THREAD_AFFINITY(&threads->sctpSTskId, SS_AFFINITY_MODE_EXCL, threads->sctpCoreId, 0);
+      }
+
+      if ((!xmlStrcmp(cur->name, (const xmlChar *)"LOWER_MAC_CORE")) && (cur->ns == ns))
+      {
+         threads->lwrMacCoreId = atoi((char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
+         ODU_SET_THREAD_AFFINITY(&threads->lwrMacSTskId, SS_AFFINITY_MODE_EXCL, threads->lwrMacCoreId, 0);
+      }
+
+      cur = cur -> next;
+   }
+   return ROK;
+}
+#endif
 
 /*******************************************************************
  *
@@ -5310,10 +5382,20 @@ uint8_t parseDuCfgParams(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur)
    CmInetIpAddr cuIp;
    CmInetIpAddr ricIp;
 
-   memset(&duCfgParam, 0, sizeof(struct duCfgParams));
    cur = cur->xmlChildrenNode;
    while(cur != NULL)
    {
+      if ((!xmlStrcmp(cur->name, (const xmlChar *)"THREAD_AFFINITY")) && (cur->ns == ns))
+      {
+#ifdef THREAD_AFFINITY      
+         if(parseThreadAffinity(doc, ns, cur, &duCfgParam.threadInfo) != ROK)
+         {
+            return RFAILED;
+         }
+#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));
@@ -5449,12 +5531,12 @@ uint8_t parseDuCfgParams(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur)
             return RFAILED;
          }
       }
+#endif      
 
       cur = cur -> next;
    }
    return ROK;
 }
-#endif
 
 /*******************************************************************
  *
@@ -5475,7 +5557,6 @@ uint8_t parseDuCfgParams(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur)
  * ****************************************************************/
 uint8_t duReadCfg()
 {
-#ifdef XML_BASED_CONFIG
    const char *filename = "../build/config/odu_config.xml";
    xmlDocPtr doc = NULLP;
    xmlNodePtr cur = NULLP;
@@ -5489,7 +5570,7 @@ uint8_t duReadCfg()
    }
 
    cur = xmlDocGetRootElement(doc);
-   ns = xmlSearchNsByHref(doc, cur, (const xmlChar *)"odu_config.xml");
+   ns = xmlSearchNsByHref(doc, cur, (const xmlChar *)"urn:o-ran:odu:configuration");
    if(ns == NULL)
    {
       DU_LOG("\nERROR  --> DU_APP: XML Namespace not found.\n");
@@ -5502,13 +5583,10 @@ uint8_t duReadCfg()
 
    xmlFreeDoc(doc);
    xmlCleanupParser();
-#endif
 
    Pst pst;
    Buffer *mBuf;
 
-   memset(&duCfgParam, 0, sizeof(DuCfgParams));
-
    /* Read configs into duCfgParams */
    if(readCfg() != ROK)
    {
@@ -5649,6 +5727,16 @@ void printDuConfig()
    DU_LOG("\n ** DU CONFIGURATION ** \n");
    DU_LOG("DU ID %d\n", duCfgParam.duId);
    DU_LOG("DU Name %s\n", duCfgParam.duName);
+
+   DU_LOG("\n ** Thread Affinity ** \n");
+   DU_LOG("DU APP CORE ID %d\n", duCfgParam.threadInfo.duAppCoreId);
+   DU_LOG("EGTP CORE ID %d\n", duCfgParam.threadInfo.egtpCoreId);
+   DU_LOG("SCTP CORE ID %d\n", duCfgParam.threadInfo.sctpCoreId);
+   DU_LOG("RLC-UL CORE ID %d\n", duCfgParam.threadInfo.rlcUlCoreId);
+   DU_LOG("RLC-DL and MAC CORE ID %d\n", duCfgParam.threadInfo.rlcMacCoreId);
+   DU_LOG("SCH CORE ID %d\n", duCfgParam.threadInfo.schCoreId);
+   DU_LOG("Lower MAC CORE ID %d\n", duCfgParam.threadInfo.lwrMacCoreId);
+
    DU_LOG("MAX NUM DRB %d\n", duCfgParam.maxNumDrb);
    DU_LOG("MAX SUPPORTED UE %d\n", duCfgParam.maxSupportedUes);
    DU_LOG("MAX UE %d\n",duCfgParam.maxUe);
index ea8a432..1b902dd 100644 (file)
@@ -1247,6 +1247,24 @@ typedef struct sib1Params
    SrvCellCfgCommSib     srvCellCfgCommSib;
 }Sib1Params;
 
+typedef struct threadInfo
+{
+   SSTskId duAppSTskId;
+   uint8_t duAppCoreId;
+   SSTskId egtpSTskId;
+   uint8_t egtpCoreId;
+   SSTskId sctpSTskId;
+   uint8_t sctpCoreId;
+   SSTskId rlcUlSTskId;
+   uint8_t rlcUlCoreId;
+   SSTskId rlcMacSTskId;
+   uint8_t rlcMacCoreId;
+   SSTskId schSTskId;
+   uint8_t schCoreId;
+   SSTskId lwrMacSTskId;
+   uint8_t lwrMacCoreId;
+}ThreadInfo;
+
 typedef struct duCfgParams
 {  
    uint32_t           duId;
@@ -1254,6 +1272,7 @@ typedef struct duCfgParams
    uint16_t           maxNumDrb;
    uint16_t           maxSupportedUes;
    uint32_t           maxUe;
+   ThreadInfo         threadInfo;
    SctpParams         sctpParams;                  /* SCTP Params */
    F1EgtpParams       egtpParams;                  /* EGTP Params */
    SchedulerCfg       schedCfg;
index d17d93d..f7d4e2a 100644 (file)
@@ -573,7 +573,7 @@ uint8_t phyStubInit(SSTskId sysTskId)
 uint8_t commonInit()
 {
    /* Declare system task Ids */
-   SSTskId du_app_stsk, egtp_stsk, sctp_stsk, rlc_ul_stsk, rlc_mac_cl_stsk, sch_stsk, lwr_mac_stsk, phy_stub_slot_ind_stsk;
+   SSTskId phyStubSlotIndSTskId;
 
    pthread_attr_t attr;
 
@@ -581,82 +581,59 @@ uint8_t commonInit()
 
    /* Intel L1 using core 0-15. ODU-High using 16-21 */
    /* system task for DU APP */
-   if(ODU_CREATE_TASK(PRIOR0, &du_app_stsk) != ROK)
+   if(ODU_CREATE_TASK(PRIOR0, &duCfgParam.threadInfo.duAppSTskId) != ROK)
    {
       DU_LOG("\nERROR  -->  DU_APP : System Task creation for DU APP failed");
       return RFAILED;
    }
 
-#ifdef INTEL_THREAD_AFFINITY
-   ODU_SET_THREAD_AFFINITY(&du_app_stsk, SS_AFFINITY_MODE_EXCL, 16, 0);
-#endif
-
    /* system task for EGTP */
-   if(ODU_CREATE_TASK(PRIOR0, &egtp_stsk) != ROK)
+   if(ODU_CREATE_TASK(PRIOR0, &duCfgParam.threadInfo.egtpSTskId) != ROK)
    {
       DU_LOG("\nERROR  -->  DU_APP : System Task creation for EGTP failed");
       return RFAILED;
    }
 
-#ifdef INTEL_THREAD_AFFINITY
-   ODU_SET_THREAD_AFFINITY(&egtp_stsk, SS_AFFINITY_MODE_EXCL, 27, 0);
-#endif
-
    /* system task for RLC_DL and MAC */
-   if(ODU_CREATE_TASK(PRIOR0, &rlc_mac_cl_stsk) != ROK)
+   if(ODU_CREATE_TASK(PRIOR0, &duCfgParam.threadInfo.rlcMacSTskId) != ROK)
    {
       DU_LOG("\nERROR  -->  DU_APP : System Task creation for RLC DL/MAC failed");
       return RFAILED;
    }
    pthread_attr_init(&attr);
    pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
-#ifdef INTEL_THREAD_AFFINITY
-   ODU_SET_THREAD_AFFINITY(&rlc_mac_cl_stsk, SS_AFFINITY_MODE_EXCL, 18, 0);
-#endif
 
    /* system task for RLC UL */
-   if(ODU_CREATE_TASK(PRIOR1, &rlc_ul_stsk) != ROK)
+   if(ODU_CREATE_TASK(PRIOR1, &duCfgParam.threadInfo.rlcUlSTskId) != ROK)
    {
       DU_LOG("\nERROR  -->  DU_APP : System Task creation for RLC UL failed");
       return RFAILED;
    }
-#ifdef INTEL_THREAD_AFFINITY
-   ODU_SET_THREAD_AFFINITY(&rlc_ul_stsk, SS_AFFINITY_MODE_EXCL, 22, 0);
-#endif
    
    /* system task for SCH */
-   if(ODU_CREATE_TASK(PRIOR1, &sch_stsk) != ROK)
+   if(ODU_CREATE_TASK(PRIOR1, &duCfgParam.threadInfo.schSTskId) != ROK)
    {
       DU_LOG("\nERROR  -->  DU_APP : System Task creation for SCH failed");
       return RFAILED;
    }
-#ifdef INTEL_THREAD_AFFINITY
-   ODU_SET_THREAD_AFFINITY(&sch_stsk, SS_AFFINITY_MODE_EXCL, 22, 0);
-#endif
 
    /* system task for SCTP receiver thread */
-   if(ODU_CREATE_TASK(PRIOR0, &sctp_stsk) != ROK)
+   if(ODU_CREATE_TASK(PRIOR0, &duCfgParam.threadInfo.sctpSTskId) != ROK)
    {
       DU_LOG("\nERROR  -->  DU_APP : System Task creation for SCTP failed");
       return RFAILED;
    }
-#ifdef INTEL_THREAD_AFFINITY
-   ODU_SET_THREAD_AFFINITY(&sctp_stsk, SS_AFFINITY_MODE_EXCL, 25, 0);
-#endif
 
    /* system task for lower-mac receiver thread */
-   if(ODU_CREATE_TASK(PRIOR0, &lwr_mac_stsk) != ROK)
+   if(ODU_CREATE_TASK(PRIOR0, &duCfgParam.threadInfo.lwrMacSTskId) != ROK)
    {
       DU_LOG("\nERROR  -->  DU_APP : System Task creation for Lower MAC failed");
       return RFAILED;
    }
-#ifdef INTEL_THREAD_AFFINITY
-   ODU_SET_THREAD_AFFINITY(&lwr_mac_stsk, SS_AFFINITY_MODE_EXCL, 21, 0);
-#endif
 
 #ifndef INTEL_WLS_MEM
    /* system task for phy stub's slot indication generator thread */
-   if(ODU_CREATE_TASK(PRIOR0, &phy_stub_slot_ind_stsk) != ROK)
+   if(ODU_CREATE_TASK(PRIOR0, &phyStubSlotIndSTskId) != ROK)
    {
       DU_LOG("\nERROR  -->  DU_APP : System Task creation for Phy stub slot indication generator failed. MAX STSK [%d]", SS_MAX_STSKS);
       return RFAILED;
@@ -665,50 +642,50 @@ uint8_t commonInit()
 #endif
 
    /* Create TAPA tasks */
-   if(duAppInit(du_app_stsk) != ROK)
+   if(duAppInit(duCfgParam.threadInfo.duAppSTskId) != ROK)
    {
       DU_LOG("\nERROR  -->  DU_APP : DU APP TAPA Task initialization failed");
       return RFAILED;
    }
 
-   if(egtpInit(egtp_stsk) != ROK)
+   if(egtpInit(duCfgParam.threadInfo.egtpSTskId) != ROK)
    {
       DU_LOG("\nERROR  -->  DU_APP : EGTP TAPA Task initialization failed");
       return RFAILED;
    }
 
-   if(sctpInit(sctp_stsk) != ROK)
+   if(sctpInit(duCfgParam.threadInfo.sctpSTskId) != ROK)
    {
       DU_LOG("\nERROR  -->  DU_APP : SCTP TAPA Task initialization failed");
       return RFAILED;
    }
 
-   if(rlcDlInit(rlc_mac_cl_stsk) != ROK)
+   if(rlcDlInit(duCfgParam.threadInfo.rlcMacSTskId) != ROK)
    {
       DU_LOG("\nERROR  -->  DU_APP : RLC DL Tapa Task initialization failed");
       return RFAILED;
    } 
 
-   if(rlcUlInit(rlc_ul_stsk) != ROK)
+   if(rlcUlInit(duCfgParam.threadInfo.rlcUlSTskId) != ROK)
    {
      DU_LOG("\nERROR  -->  DU_APP : RLC UL Tapa Task initialization failed");
      return RFAILED;
    } 
 
-   if(schInit(sch_stsk) != ROK)
+   if(schInit(duCfgParam.threadInfo.schSTskId) != ROK)
    {
       DU_LOG("\nERROR  -->  DU_APP : SCH Tapa Task initialization failed");
       return RFAILED;
    }
 
-   if(lwrMacInit(lwr_mac_stsk) != ROK)
+   if(lwrMacInit(duCfgParam.threadInfo.lwrMacSTskId) != ROK)
    {
       DU_LOG("\nERROR  -->  DU_APP : Lower MAC Tapa Task initialization failed");
       return RFAILED;
    }
 
 #ifndef INTEL_WLS_MEM
-   if(phyStubInit(phy_stub_slot_ind_stsk) != ROK)
+   if(phyStubInit(phyStubSlotIndSTskId) != ROK)
    {
       DU_LOG("\nERROR  -->  DU_APP : PHY stub slot indication Tapa Task initialization failed");
       return RFAILED;
@@ -775,6 +752,9 @@ uint8_t tst(void)
    if(start_O1_module() != ROK)
       return RFAILED;
 #endif
+
+   memset(&duCfgParam, 0, sizeof(DuCfgParams));
+
    //Initialize TAPA layers
    if(duInit() != ROK)
    {