X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2Fmt%2Fmt_ss.c;h=d909e4b504d2e5ec0d30a253fda6bb1f437b86f1;hb=ba78fa13b01e0729fe0a6a7a18cbf1d52cdcda1c;hp=4127603c575e9302206bcd49f0218f60e1327362;hpb=65443172dd60a6ea312bd3a15959dbf54ad7f045;p=o-du%2Fl2.git diff --git a/src/mt/mt_ss.c b/src/mt/mt_ss.c index 4127603c5..d909e4b50 100644 --- a/src/mt/mt_ss.c +++ b/src/mt/mt_ss.c @@ -102,6 +102,12 @@ #include #endif /* SS_WATCHDOG */ +#ifdef SS_USE_WLS_MEM +#include +#include +#include +#endif + /* header/extern include files (.x) */ #include "gen.x" /* general layer */ @@ -153,15 +159,11 @@ #include "sys/syscall.h" #endif -#if defined(RGL_SPECIFIC_CHANGES) || defined(INTEL_WLS) +#if defined(RGL_SPECIFIC_CHANGES) || defined(INTEL_WLS) || defined(SS_USE_WLS_MEM) #include #include #endif -#ifdef INTEL_WLS -void LwrMacRecvPhyMsg(); -#endif - #if defined(SPLIT_RLC_DL_TASK) && defined(RLC_MAC_STA_RSP_RBUF) S16 rgBatchProc (Void); #endif @@ -434,6 +436,7 @@ SsRegCfg cfgRegInfo[SS_MAX_REGS] = { SS_POOL_DYNAMIC, MT_POOL_1_DSIZE }, { SS_POOL_DYNAMIC, MT_POOL_2_DSIZE }, { SS_POOL_DYNAMIC, MT_POOL_3_DSIZE }, + { SS_POOL_DYNAMIC, MT_POOL_4_DSIZE }, { SS_POOL_STATIC, 0 } } } @@ -460,6 +463,7 @@ SsRegCfg cfgRegInfo[SS_MAX_REGS] = { SS_POOL_DYNAMIC, MT_POOL_1_DSIZE }, { SS_POOL_DYNAMIC, MT_POOL_2_DSIZE }, { SS_POOL_DYNAMIC, MT_POOL_3_DSIZE }, + { SS_POOL_DYNAMIC, MT_POOL_4_DSIZE }, { SS_POOL_STATIC, 0 } } }, @@ -470,6 +474,7 @@ SsRegCfg cfgRegInfo[SS_MAX_REGS] = { SS_POOL_DYNAMIC, MT_POOL_1_DSIZE }, { SS_POOL_DYNAMIC, MT_POOL_2_DSIZE }, { SS_POOL_DYNAMIC, MT_POOL_3_DSIZE }, + { SS_POOL_DYNAMIC, MT_POOL_4_DSIZE }, { SS_POOL_STATIC, 0 } } }, @@ -480,6 +485,7 @@ SsRegCfg cfgRegInfo[SS_MAX_REGS] = { SS_POOL_DYNAMIC, MT_POOL_1_DSIZE }, { SS_POOL_DYNAMIC, MT_POOL_2_DSIZE }, { SS_POOL_DYNAMIC, MT_POOL_3_DSIZE }, + { SS_POOL_DYNAMIC, MT_POOL_4_DSIZE }, { SS_POOL_STATIC, 0 } } }, @@ -490,9 +496,21 @@ SsRegCfg cfgRegInfo[SS_MAX_REGS] = { SS_POOL_DYNAMIC, MT_POOL_1_DSIZE }, { SS_POOL_DYNAMIC, MT_POOL_2_DSIZE }, { SS_POOL_DYNAMIC, MT_POOL_3_DSIZE }, + { SS_POOL_DYNAMIC, MT_POOL_4_DSIZE }, + { SS_POOL_STATIC, 0 } + } + }, + { + SS_DFLT_REGION + 5, SS_MAX_POOLS_PER_REG - 1, + { + { SS_POOL_DYNAMIC, MT_POOL_0_DSIZE }, + { SS_POOL_DYNAMIC, MT_POOL_1_DSIZE }, + { SS_POOL_DYNAMIC, MT_POOL_2_DSIZE }, + { SS_POOL_DYNAMIC, MT_POOL_3_DSIZE }, + { SS_POOL_DYNAMIC, MT_POOL_4_DSIZE }, { SS_POOL_STATIC, 0 } } - } + } #endif /* SS_LOCKLESS_MEMORY */ }; /* mt003.301 Modifications - File Based task registration made @@ -512,7 +530,8 @@ MtDynMemCfg mtDynMemoCfg = {SS_BLK_RELEASE_THRESHOLD, SS_BLK_ACQUIRE_THRESHOLD}, {SS_BLK_RELEASE_THRESHOLD, SS_BLK_ACQUIRE_THRESHOLD}, {SS_BLK_RELEASE_THRESHOLD, SS_BLK_ACQUIRE_THRESHOLD}, - {SS_BLK_RELEASE_THRESHOLD, SS_BLK_ACQUIRE_THRESHOLD} + {SS_BLK_RELEASE_THRESHOLD, SS_BLK_ACQUIRE_THRESHOLD}, + {SS_BLK_RELEASE_THRESHOLD, SS_BLK_ACQUIRE_THRESHOLD} } }, { @@ -523,7 +542,8 @@ MtDynMemCfg mtDynMemoCfg = {SS_BLK_RELEASE_THRESHOLD, SS_BLK_ACQUIRE_THRESHOLD}, {SS_BLK_RELEASE_THRESHOLD, SS_BLK_ACQUIRE_THRESHOLD}, {SS_BLK_RELEASE_THRESHOLD, SS_BLK_ACQUIRE_THRESHOLD}, - {SS_BLK_RELEASE_THRESHOLD, SS_BLK_ACQUIRE_THRESHOLD} + {SS_BLK_RELEASE_THRESHOLD, SS_BLK_ACQUIRE_THRESHOLD}, + {SS_BLK_RELEASE_THRESHOLD, SS_BLK_ACQUIRE_THRESHOLD} } }, { @@ -534,7 +554,8 @@ MtDynMemCfg mtDynMemoCfg = {SS_BLK_RELEASE_THRESHOLD, SS_BLK_ACQUIRE_THRESHOLD}, {SS_BLK_RELEASE_THRESHOLD, SS_BLK_ACQUIRE_THRESHOLD}, {SS_BLK_RELEASE_THRESHOLD, SS_BLK_ACQUIRE_THRESHOLD}, - {SS_BLK_RELEASE_THRESHOLD, SS_BLK_ACQUIRE_THRESHOLD} + {SS_BLK_RELEASE_THRESHOLD, SS_BLK_ACQUIRE_THRESHOLD}, + {SS_BLK_RELEASE_THRESHOLD, SS_BLK_ACQUIRE_THRESHOLD} } }, { @@ -545,7 +566,8 @@ MtDynMemCfg mtDynMemoCfg = {SS_BLK_RELEASE_THRESHOLD, SS_BLK_ACQUIRE_THRESHOLD}, {SS_BLK_RELEASE_THRESHOLD, SS_BLK_ACQUIRE_THRESHOLD}, {SS_BLK_RELEASE_THRESHOLD, SS_BLK_ACQUIRE_THRESHOLD}, - {SS_BLK_RELEASE_THRESHOLD, SS_BLK_ACQUIRE_THRESHOLD} + {SS_BLK_RELEASE_THRESHOLD, SS_BLK_ACQUIRE_THRESHOLD}, + {SS_BLK_RELEASE_THRESHOLD, SS_BLK_ACQUIRE_THRESHOLD} } }, { @@ -556,7 +578,20 @@ MtDynMemCfg mtDynMemoCfg = {SS_BLK_RELEASE_THRESHOLD, SS_BLK_ACQUIRE_THRESHOLD}, {SS_BLK_RELEASE_THRESHOLD, SS_BLK_ACQUIRE_THRESHOLD}, {SS_BLK_RELEASE_THRESHOLD, SS_BLK_ACQUIRE_THRESHOLD}, - {SS_BLK_RELEASE_THRESHOLD, SS_BLK_ACQUIRE_THRESHOLD} + {SS_BLK_RELEASE_THRESHOLD, SS_BLK_ACQUIRE_THRESHOLD}, + {SS_BLK_RELEASE_THRESHOLD, SS_BLK_ACQUIRE_THRESHOLD} + } + }, + { + SS_DFLT_REGION + 5, /* region id */ + MT_MAX_BKTS, /* number of buckets */ + { + /* block size, no. of blocks, Upper threshold, lower threshold */ + {SS_BLK_RELEASE_THRESHOLD, SS_BLK_ACQUIRE_THRESHOLD}, + {SS_BLK_RELEASE_THRESHOLD, SS_BLK_ACQUIRE_THRESHOLD}, + {SS_BLK_RELEASE_THRESHOLD, SS_BLK_ACQUIRE_THRESHOLD}, + {SS_BLK_RELEASE_THRESHOLD, SS_BLK_ACQUIRE_THRESHOLD}, + {SS_BLK_RELEASE_THRESHOLD, SS_BLK_ACQUIRE_THRESHOLD} } } #if ((defined (SPLIT_RLC_DL_TASK)) && (!defined (L2_L3_SPLIT))) @@ -586,7 +621,8 @@ MtGlobMemCfg mtGlobMemoCfg = {MT_BKT_0_DSIZE, (MT_BKT_0_NUMBLKS + MT_BKT_0_NUMBLKS), SS_DFLT_MEM_BLK_SET_SIZE}, {MT_BKT_1_DSIZE, MT_BKT_1_NUMBLKS, SS_DFLT_MEM_BLK_SET_SIZE}, {MT_BKT_2_DSIZE, MT_BKT_2_NUMBLKS, SS_DFLT_MEM_BLK_SET_SIZE}, - {MT_BKT_3_DSIZE, MT_BKT_3_NUMBLKS, SS_DFLT_MEM_BLK_SET_SIZE} + {MT_BKT_3_DSIZE, MT_BKT_3_NUMBLKS, SS_DFLT_MEM_BLK_SET_SIZE}, + {MT_BKT_4_DSIZE, MT_BKT_4_NUMBLKS, SS_DFLT_MEM_BLK_SET_SIZE} #else {1024, 12800 /* MT_BKT_0_NUMBLKS */, SS_DFLT_MEM_BLK_SET_SIZE}, {1664, 12800 /* MT_BKT_1_NUMBLKS */, SS_DFLT_MEM_BLK_SET_SIZE}, @@ -620,7 +656,8 @@ MtMemCfg mtMemoCfg = {MT_BKT_0_DSIZE, MT_BKT_0_STATIC_NUMBLKS}, /* block size, no. of blocks */ {MT_BKT_1_DSIZE, MT_BKT_1_STATIC_NUMBLKS}, /* block size, no. of blocks */ {MT_BKT_2_DSIZE, MT_BKT_2_STATIC_NUMBLKS}, /* block size, no. of blocks */ - {MT_BKT_3_DSIZE, MT_BKT_3_STATIC_NUMBLKS} /* block size, no. of blocks */ + {MT_BKT_3_DSIZE, MT_BKT_3_STATIC_NUMBLKS}, /* block size, no. of blocks */ + {MT_BKT_4_DSIZE, MT_BKT_4_STATIC_NUMBLKS} #else {256, 491520}, /* 60 pages of 2M*/ {512, 12288}, /* 3 pages of 2M */ @@ -659,7 +696,8 @@ MtMemCfg mtMemoCfg = {MT_BKT_0_DSIZE, MT_BKT_0_STATIC_NUMBLKS}, /* block size, no. of blocks */ {MT_BKT_1_DSIZE, MT_BKT_1_STATIC_NUMBLKS}, /* block size, no. of blocks */ {MT_BKT_2_DSIZE, MT_BKT_2_STATIC_NUMBLKS}, /* block size, no. of blocks */ - {MT_BKT_3_DSIZE, MT_BKT_3_STATIC_NUMBLKS} /* block size, no. of blocks */ + {MT_BKT_3_DSIZE, MT_BKT_3_STATIC_NUMBLKS}, /* block size, no. of blocks */ + {MT_BKT_4_DSIZE, MT_BKT_4_STATIC_NUMBLKS} /* block size, no. of blocks */ } }, { @@ -670,7 +708,8 @@ MtMemCfg mtMemoCfg = {MT_BKT_0_DSIZE, MT_BKT_0_STATIC_NUMBLKS}, /* block size, no. of blocks */ {MT_BKT_1_DSIZE, MT_BKT_1_STATIC_NUMBLKS}, /* block size, no. of blocks */ {MT_BKT_2_DSIZE, MT_BKT_2_STATIC_NUMBLKS}, /* block size, no. of blocks */ - {MT_BKT_3_DSIZE, MT_BKT_3_STATIC_NUMBLKS} /* block size, no. of blocks */ + {MT_BKT_3_DSIZE, MT_BKT_3_STATIC_NUMBLKS}, /* block size, no. of blocks */ + {MT_BKT_4_DSIZE, MT_BKT_4_STATIC_NUMBLKS} /* block size, no. of blocks */ } }, { @@ -681,7 +720,8 @@ MtMemCfg mtMemoCfg = {MT_BKT_0_DSIZE, MT_BKT_0_STATIC_NUMBLKS}, /* block size, no. of blocks */ {MT_BKT_1_DSIZE, MT_BKT_1_STATIC_NUMBLKS}, /* block size, no. of blocks */ {MT_BKT_2_DSIZE, MT_BKT_2_STATIC_NUMBLKS}, /* block size, no. of blocks */ - {MT_BKT_3_DSIZE, MT_BKT_3_STATIC_NUMBLKS} /* block size, no. of blocks */ + {MT_BKT_3_DSIZE, MT_BKT_3_STATIC_NUMBLKS}, /* block size, no. of blocks */ + {MT_BKT_4_DSIZE, MT_BKT_4_STATIC_NUMBLKS} /* block size, no. of blocks */ } }, { @@ -692,10 +732,22 @@ MtMemCfg mtMemoCfg = {MT_BKT_0_DSIZE, MT_BKT_0_STATIC_NUMBLKS}, /* block size, no. of blocks */ {MT_BKT_1_DSIZE, MT_BKT_1_STATIC_NUMBLKS}, /* block size, no. of blocks */ {MT_BKT_2_DSIZE, MT_BKT_2_STATIC_NUMBLKS}, /* block size, no. of blocks */ - {MT_BKT_3_DSIZE, MT_BKT_3_STATIC_NUMBLKS} /* block size, no. of blocks */ + {MT_BKT_3_DSIZE, MT_BKT_3_STATIC_NUMBLKS}, /* block size, no. of blocks */ + {MT_BKT_4_DSIZE, MT_BKT_4_STATIC_NUMBLKS} /* block size, no. of blocks */ + } + }, + { + SS_DFLT_REGION + 5, /* region id */ + MT_MAX_BKTS, /* number of buckets */ + MT_HEAP_SIZE, /* heap size */ + { + {MT_BKT_0_DSIZE, MT_BKT_0_STATIC_NUMBLKS}, /* block size, no. of blocks */ + {MT_BKT_1_DSIZE, MT_BKT_1_STATIC_NUMBLKS}, /* block size, no. of blocks */ + {MT_BKT_2_DSIZE, MT_BKT_2_STATIC_NUMBLKS}, /* block size, no. of blocks */ + {MT_BKT_3_DSIZE, MT_BKT_3_STATIC_NUMBLKS}, /* block size, no. of blocks */ + {MT_BKT_4_DSIZE, MT_BKT_4_STATIC_NUMBLKS} /* block size, no. of blocks */ } } - #endif /* SS_LOCKLESS_MEMORY */ STATIC_MEM_CFG } @@ -712,15 +764,22 @@ S16 msOptInd; /* SGetOpt vars */ S8 *msOptArg; /* SGetOpt vars */ -#ifdef INTEL_WLS +#if defined (INTEL_WLS) || defined (SS_USE_WLS_MEM) typedef struct _MtRegMemSz { uint32_t reqdSz; uint8_t *startAddr; }MtRegMemSz; +#ifdef SS_USE_WLS_MEM +static MtRegMemSz mtDynMemSz[MT_MAX_BKTS]; +static S16 SPartitionWlsDynMem(); +static S16 SAllocateWlsDynMem(); +#endif +#ifdef INTEL_WLS static MtRegMemSz mtRegMemSz[MT_MAX_BKTS+1]; #endif +#endif /* private variable declarations */ @@ -732,7 +791,7 @@ static CmMmRegCb *mtCMMRegCb[SS_MAX_REGS]; /*mt010.301 - removed veriable defined for FA*/ -#ifdef INTEL_WLS +#if defined (INTEL_WLS) || defined (SS_USE_WLS_MEM) #ifdef NTL_LIB void mtSetNtlHdl(unsigned int hdl) @@ -746,11 +805,10 @@ unsigned int mtGetNtlHdl() } #endif /* NTL_LIB */ - -void * mtGetWlsHdl() +void mtGetWlsHdl(void **hdlr) { - return (osCp.wls.intf); -} + *hdlr = osCp.wls.intf; +} #ifdef XEON_MULTIPLE_CELL_CHANGES S8 gWrWlsDeviceName[MAX_WLS_DEVICE_NAME_LEN]; @@ -759,8 +817,21 @@ S16 smWrReadWlsConfigParams (Void); static int SOpenWlsIntf() { + uint8_t i; void *hdl; - #define WLS_DEVICE_NAME "/dev/wls" + #define WLS_DEVICE_NAME "wls0" + + char *my_argv[] = {"gnodeb", "-c3", "--proc-type=auto", "--file-prefix", WLS_DEVICE_NAME, "--iova-mode=pa"}; + printf("Calling rte_eal_init: "); + for (i = 0; i < RTE_DIM(my_argv); i++) + { + printf("%s ", my_argv[i]); + } + printf("\n"); + + if (rte_eal_init(RTE_DIM(my_argv), my_argv) < 0) + rte_panic("Cannot init EAL\n"); + #ifdef XEON_SPECIFIC_CHANGES #ifdef XEON_MULTIPLE_CELL_CHANGES @@ -769,7 +840,7 @@ static int SOpenWlsIntf() hdl = WLS_Open(WLS_DEVICE_NAME, 1); #endif #else - hdl = WLS_Open(WLS_DEVICE_NAME, WLS_MASTER_CLIENT, (512 *1024 * 1024)); + hdl = WLS_Open(WLS_DEVICE_NAME, WLS_MASTER_CLIENT, WLS_MEM_SIZE); #endif osCp.wls.intf = hdl; @@ -825,7 +896,7 @@ char **argv; /* argument vector */ } /* end of if statement */ #endif -#ifdef INTEL_WLS +#if defined (INTEL_WLS) || defined (SS_USE_WLS_MEM) if(!SOpenWlsIntf()) return (0); #endif /* INTEL_WLS */ @@ -1476,6 +1547,51 @@ Region region; RegionMemLeakInfo regMemLeakInfo; #endif /* T2K_MEM_LEAK_DBG */ +#ifdef SS_USE_WLS_MEM +static S16 SPartitionWlsDynMem() +{ + uint32_t i; + uint8_t *bktMemStrtAddr = (uint8_t *)(((uint8_t*)osCp.wls.allocAddr) + (4 * 1024 * 1024)); + + for (i = 0 ; i < mtGlobMemoCfg.numBkts ; i++) + { + mtDynMemSz[i].startAddr = bktMemStrtAddr; + bktMemStrtAddr += mtDynMemSz[i].reqdSz; + } + + printf("Global Memory Info: \n"); + for (i = 0 ; i < mtGlobMemoCfg.numBkts ; i++) + { + printf("mtDynMemSz[%d]: [0x%016lx]\n", i, (unsigned long int)mtDynMemSz[i].startAddr); + } + return ROK; +} + +static S16 SAllocateWlsDynMem() +{ + uint32_t reqdMemSz; + uint32_t i; + reqdMemSz = 0; + memset(&mtDynMemSz[0], 0, sizeof(mtDynMemSz)); + + for (i = 0 ; i < mtGlobMemoCfg.numBkts ; i++) + { + reqdMemSz += (mtGlobMemoCfg.bkt[i].blkSize * mtGlobMemoCfg.bkt[i].numBlks); + mtDynMemSz[i].reqdSz += (mtGlobMemoCfg.bkt[i].blkSize * mtGlobMemoCfg.bkt[i].numBlks); + } + osCp.wls.allocAddr = WLS_Alloc(osCp.wls.intf, +#ifdef INTEL_L1_V19_10 + WLS_MEMORY_SIZE); +#else + (reqdMemSz + (4 * 1024 * 1024))); +#endif + printf("\n *************** \n WLS memory: %lx, %d\n", (PTR)osCp.wls.allocAddr, reqdMemSz); + SPartitionWlsDynMem(); + return ROK; +} + +#endif + #ifdef INTEL_WLS S16 SPartitionWlsMemory() @@ -1711,13 +1827,22 @@ S16 ssdInitMem() globReg = (CmMmGlobRegCb *)osCp.globRegCb; +#ifdef SS_USE_WLS_MEM + SAllocateWlsDynMem(); +#endif + for(i = 0; i < mtGlobMemoCfg.numBkts; i++) { memSize = (mtGlobMemoCfg.bkt[i].blkSize * mtGlobMemoCfg.bkt[i].numBlks); +#if !defined (INTEL_WLS) && defined (SS_USE_WLS_MEM) + globReg->bktTbl[i].startAddr = (Data *)mtDynMemSz[i].startAddr; + printf("Starting Address of Bkt Entry [%d]: [0x%016lx], memSize[%d]\n", i, (unsigned long int)globReg->bktTbl[i].startAddr, memSize); +#else #ifndef INTEL_WLS globReg->bktTbl[i].startAddr = (Data *)calloc(memSize, sizeof(Data)); #else globReg->bktTbl[i].startAddr = (Data *)mtRegMemSz[i].startAddr; +#endif #endif if(globReg->bktTbl[i].startAddr == NULLP) { @@ -1753,6 +1878,7 @@ S16 ssdInitMem() #endif return RFAILED; } + dynRegCb->bktTbl[k].poolId = k; dynRegCb->bktTbl[k].size = mtGlobMemoCfg.bkt[k].blkSize; dynRegCb->bktTbl[k].blkSetRelThreshold = mtDynMemoCfg.region[i].bkt[k].blkSetRelThreshold; dynRegCb->bktTbl[k].blkSetAcquireThreshold = mtDynMemoCfg.region[i].bkt[k].blkSetAcquireThreshold; @@ -4856,11 +4982,6 @@ Ptr tskPtr; /* pointer to task entry */ #endif while (1) { -#ifndef ODU_TEST_STUB -#ifdef INTEL_WLS - LwrMacRecvPhyMsg(); -#endif -#endif /* Wait for a message from the demand queue */ #ifdef SS_CDMNDQ_SUPPORT ret = ssCDmndQWait(&sTsk->dQ);