X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2Fdu_app%2Fdu_cfg.c;h=6ea0cdb4a576e64c47254d4ffa95539b99355a75;hb=d18d80cc82c8bae113c62a45b30345bfb4ca570f;hp=f477c1fb146951d66f51886dac74de53ced6b2ac;hpb=42e50f5a3e46d7ca3afe97907b39d2a0c79a21c2;p=o-du%2Fl2.git diff --git a/src/du_app/du_cfg.c b/src/du_app/du_cfg.c index f477c1fb1..6ea0cdb4a 100644 --- a/src/du_app/du_cfg.c +++ b/src/du_app/du_cfg.c @@ -19,12 +19,10 @@ /* This file contains all utility functions */ #include "common_def.h" -#ifdef XML_BASED_CONFIG #include #include #include #include -#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);