//****************************************************
// initialize QM (per SOC)
//***************************************************
-int netapi_init_qm(void)
+int netapi_init_qm(int max_descriptors)
{
Qmss_InitCfg qmssInitConfig;
int32_t result;
qmssInitConfig.linkingRAM0Base = 0;
qmssInitConfig.linkingRAM0Size = 0;
qmssInitConfig.linkingRAM1Base = 0;
- qmssInitConfig.maxDescNum = TUNE_NETAPI_QM_CONFIG_MAX_DESC_NUM;
+ qmssInitConfig.maxDescNum = max_descriptors;
qmssInitConfig.qmssHwStatus =QMSS_HW_INIT_COMPLETE; //bypass some of the hw init
nwalTest_qmssGblCfgParams = qmssGblCfgParams[0];
result = Qmss_init (&qmssInitConfig, &nwalTest_qmssGblCfgParams);
if (result != QMSS_SOK) {
- System_printf ("function init_qm: qmss_Init failed with error code %d\n", result);
+ System_printf (">function init_qm: qmss_Init failed with error code %d\n", result);
return (nwal_FALSE);
}
memInfo.descSize = descSize;
memInfo.descNum = numDesc;
memInfo.manageDescFlag = Qmss_ManageDesc_MANAGE_DESCRIPTOR;
- memInfo.memRegion = memRegion==NETAPI_GLOBAL_REGION ? Qmss_MemRegion_MEMORY_REGION0 : Qmss_MemRegion_MEMORY_REGION1;
+ memInfo.memRegion = memRegion;
if(memRegion == NETAPI_GLOBAL_REGION)
{
- memInfo.startIndex = 0;
+ memInfo.startIndex = TUNE_NETAPI_QM_START_INDEX; //was 0
netapi_qm_region_index += numDesc;
}else if(memRegion ==NETAPI_LOCAL_REGION)
{
- /* Global shared memory for all descriptors to all cores */
+ /* 2nd region for descriptors (perhaps private?) */
memInfo.startIndex = netapi_qm_region_index;
}
else
return -1 ;
}
+ memset (pDescMemBase, 0, (descSize * numDesc));
+
result = Qmss_insertMemoryRegion (&memInfo);
if (result < QMSS_SOK)
{
- printf ("function setup_qm_region: Qmss_insertMemoryRegion returned error code %d\n", result);
+ printf (">function setup_qm_region: Qmss_insertMemoryRegion returned error code %d\n", result);
return (-1);
}
result = Qmss_start();
if (result != QMSS_SOK)
{
- System_printf ("start_qm: Qmss_start failed with error code %d\n", result);
+ System_printf (">start_qm: Qmss_start failed with error code %d\n", result);
return (-1);
}
return 1;
result = Cppi_init (nwalTest_cppiGblCfgParams);
if (result != CPPI_SOK)
{
- printf ("function cppi_init: Cppi_init failed with error code %d\n", result);
+ printf (">function cppi_init: Cppi_init failed with error code %d\n", result);
return (-1);
}
return 1;
#define NETAPI_NWAL_CONFIG_BUFSIZE_NWAL_PER_L2L3_HDR 128
#define NETAPI_NWAL_CONFIG_BUFSIZE_NWAL_PER_LOC_CONTEXT 384
#define NWAL_CHAN_HANDLE_SIZE ((NETAPI_NWAL_CONFIG_BUFSIZE_NWAL_PER_MAC * TUNE_NETAPI_MAX_NUM_MAC) + \
- (NETAPI_NWAL_CONFIG_BUFSIZE_NWAL_IPSEC_HANDLE_PER_CHAN * TUNE_NETAPI_MAX_NUM_IPSEC_CHANNELS) + \
+ (NETAPI_NWAL_CONFIG_BUFSIZE_NWAL_IPSEC_HANDLE_PER_CHAN * TUNE_NETAPI_MAX_NUM_IPSEC_CHANNELS*2) + \
(NETAPI_NWAL_CONFIG_BUFSIZE_NWAL_PER_IP * TUNE_NETAPI_MAX_NUM_IP) + \
(NETAPI_NWAL_CONFIG_BUFSIZE_NWAL_PER_PORT * TUNE_NETAPI_MAX_NUM_PORTS)+ \
(NETAPI_NWAL_CONFIG_BUFSIZE_NWAL_PER_LOC_CONTEXT * TUNE_NETAPI_NUM_CORES) + \
#define NETAPI_NWAL_CONFIG_BUFSIZE_PA_BUF1 128
uint8_t paBuf1[NETAPI_NWAL_CONFIG_BUFSIZE_PA_BUF1]ALIGN(CACHE_LINESZ);
-#define NETAPI_NWAL_CONFIG_BUFSIZE_PA_BUF2 256
+#define NETAPI_NWAL_CONFIG_BUFSIZE_PA_BUF2 768
uint8_t paBuf2[NETAPI_NWAL_CONFIG_BUFSIZE_PA_BUF2]ALIGN(CACHE_LINESZ);
/* Memory used for SA LLD global Handle */
#define NETAPI_NWAL_CONFIG_BUFSIZE_SA_LLD_HANDLE 384
uint8_t salldHandle[NETAPI_NWAL_CONFIG_BUFSIZE_SA_LLD_HANDLE]ALIGN(CACHE_LINESZ);
-/* Memory used for SA LLD global Handle */
+#if 0 //need to alloc this since we need phy addr also
+/* Memory used for SA contet Handle */
#define NETAPI_NWAL_CONFIG_BUFSIZE_SA_CONTEXT_PER_CHAN 384
uint8_t saContext[NETAPI_NWAL_CONFIG_BUFSIZE_SA_CONTEXT_PER_CHAN * TUNE_NETAPI_MAX_NUM_IPSEC_CHANNELS]ALIGN(CACHE_LINESZ);
+#endif
/* Memory used by SA LLD per Channel */
#define NETAPI_NWAL_CONFIG_BUFSIZE_SA_LLD_HANDLE_PER_CHAN 512
-uint8_t salldChanHandle[NETAPI_NWAL_CONFIG_BUFSIZE_SA_LLD_HANDLE_PER_CHAN * TUNE_NETAPI_MAX_NUM_IPSEC_CHANNELS]ALIGN(CACHE_LINESZ);
+uint8_t salldChanHandle[NETAPI_NWAL_CONFIG_BUFSIZE_SA_LLD_HANDLE_PER_CHAN * TUNE_NETAPI_MAX_NUM_IPSEC_CHANNELS*2]ALIGN(CACHE_LINESZ);
/*******************************************
@@ -389,7 +393,8 @@ uint8_t salldChanHandle[NETAPI_NWAL_CONFIG_BUFSIZE_SA_LLD_HANDLE_PER_CHAN * TUNE
int netapi_init_nwal(
int region2use,
Pktlib_HeapIfTable * p_table,
- NETAPI_NWAL_GLOBAL_CONTEXT_T * p_nwal_context )
+ NETAPI_NWAL_GLOBAL_CONTEXT_T * p_nwal_context,
+ NETAPI_CFG_T*p_cfg )
{
nwalSizeInfo_t nwalSizeInfo;
nwalMemBuf_t nwalMemBuf[nwal_N_BUFS];
uint8_t count;
int sizes[nwal_N_BUFS];
int aligns[nwal_N_BUFS];
- void* bases[nwal_N_BUFS];
+ void* bases[nwal_N_BUFS];
+ Pktlib_HeapCfg heapCfg;
+ int32_t errCode;
memset(p_nwal_context,0,sizeof( NETAPI_NWAL_GLOBAL_CONTEXT_T) );
memset(&nwalGlobCfg,0,sizeof(nwalGlobCfg_t ) );
/* Initialize Buffer Pool for NetCP PA to SA packets */
nwalGlobCfg.pa2SaBufPool.numBufPools = 1;
nwalGlobCfg.pa2SaBufPool.bufPool[0].descSize = TUNE_NETAPI_DESC_SIZE;
- nwalGlobCfg.pa2SaBufPool.bufPool[0].bufSize = TUNE_NETAPI_DEFAULT_BUFFER_SIZE;
- nwalGlobCfg.pa2SaBufPool.bufPool[0].heapHandle =
- Pktlib_createHeap("nwal PA2SA",
- region2use,
- 0,
- TUNE_NETAPI_DEFAULT_BUFFER_SIZE,
- TUNE_NETAPI_CONFIG_MAX_PA_TO_SA_DESC,
- 0,
- p_table);
+ nwalGlobCfg.pa2SaBufPool.bufPool[0].bufSize = p_cfg->def_heap_buf_size;
+
+ /* Initialize the heap configuration. */
+ memset ((void *)&heapCfg, 0, sizeof(Pktlib_HeapCfg));
+ /* Populate the heap configuration */
+ heapCfg.name = "nwal PA2SA";
+ heapCfg.memRegion = region2use;
+ heapCfg.sharedHeap = 0;
+ heapCfg.useStarvationQueue = 0;
+ heapCfg.dataBufferSize = p_cfg->def_heap_buf_size;
+ heapCfg.numPkts = TUNE_NETAPI_CONFIG_MAX_PA_TO_SA_DESC;
+ heapCfg.numZeroBufferPackets= 0;
+ heapCfg.heapInterfaceTable.data_malloc = p_table->data_malloc;
+ heapCfg.heapInterfaceTable.data_free = p_table->data_free;
+ heapCfg.dataBufferPktThreshold = 0;
+ heapCfg.zeroBufferPktThreshold = 0;
+
+
+ nwalGlobCfg.pa2SaBufPool.bufPool[0].heapHandle = p_nwal_context->pa2sa_heap=
+ Pktlib_createHeap(&heapCfg, &errCode);
if(nwalGlobCfg.pa2SaBufPool.bufPool[0].heapHandle == NULL)
{
- printf ("Pktlib_createHeap:Heap Creation Failed for PA to SA Buffer Pool \n");
+ printf (">Pktlib_createHeap:Heap Creation Failed for PA to SA Buffer Pool , Error Code: %d\n",errCode);
netapi_err_teardown();
return -1;
}
/* Initialize Buffer Pool for NetCP SA to PA packets */
nwalGlobCfg.sa2PaBufPool.numBufPools = 1;
nwalGlobCfg.sa2PaBufPool.bufPool[0].descSize = TUNE_NETAPI_DESC_SIZE;
- nwalGlobCfg.sa2PaBufPool.bufPool[0].bufSize = TUNE_NETAPI_DEFAULT_BUFFER_SIZE;
-
- nwalGlobCfg.sa2PaBufPool.bufPool[0].heapHandle =
- Pktlib_createHeap("nwal SA2PA",
- region2use,
- 0,
- TUNE_NETAPI_DEFAULT_BUFFER_SIZE,
- TUNE_NETAPI_CONFIG_MAX_SA_TO_PA_DESC,
- 0,
- p_table);
+ nwalGlobCfg.sa2PaBufPool.bufPool[0].bufSize = p_cfg->def_heap_buf_size;
+
+ /* Populate the heap configuration */
+ heapCfg.name = "nwal SA2PA";
+ heapCfg.numPkts = TUNE_NETAPI_CONFIG_MAX_SA_TO_PA_DESC;
+
+ nwalGlobCfg.sa2PaBufPool.bufPool[0].heapHandle = p_nwal_context->sa2pa_heap=
+ Pktlib_createHeap(&heapCfg, &errCode);
if(nwalGlobCfg.sa2PaBufPool.bufPool[0].heapHandle == NULL)
{
- printf ("Pktlib_createHeap:Heap Creation Failed for SA to PA Buffer Pool \n");
+ printf (">Pktlib_createHeap:Heap Creation Failed for SA to PA Buffer Pool , Error Code: %d\n",errCode);
netapi_err_teardown();
return -1;
}
nwalGlobCfg.hopLimit = 5;/* Default TTL / Hop Limit */
- nwalGlobCfg.lpbackPass = TUNE_NETAPI_NWAL_ENABLE_PASS_LOOPBACK;
+ nwalGlobCfg.paPowerOn = nwal_TRUE;
+ nwalGlobCfg.saPowerOn = nwal_TRUE;
nwalGlobCfg.paFwActive = nwal_TRUE;
- nwalGlobCfg.saFwActive = nwal_TRUE;
+ nwalGlobCfg.saFwActive = nwal_FALSE;
/* Pick Default Physical Address */
nwalGlobCfg.paVirtBaseAddr = (uint32_t) netapi_VM_passCfgVaddr;
nwalSizeInfo.nMaxMacAddress = TUNE_NETAPI_MAX_NUM_MAC;
nwalSizeInfo.nMaxIpAddress = TUNE_NETAPI_MAX_NUM_IP;
nwalSizeInfo.nMaxL4Ports = TUNE_NETAPI_MAX_NUM_PORTS;
- nwalSizeInfo.nMaxIpSecChannels = TUNE_NETAPI_MAX_NUM_IPSEC_CHANNELS;
+ nwalSizeInfo.nMaxIpSecChannels = TUNE_NETAPI_MAX_NUM_IPSEC_CHANNELS;//we allocate 2 per channel
+ nwalSizeInfo.nMaxDmSecChannels = TUNE_NETAPI_MAX_NUM_IPSEC_CHANNELS;//we allocate 2 per channel
nwalSizeInfo.nMaxL2L3Hdr = TUNE_NETAPI_MAX_NUM_L2_L3_HDRS;
nwalSizeInfo.nProc = TUNE_NETAPI_NUM_CORES;
for(count=0;count < nwal_N_BUFS;count++)
aligns);
if(nwalRetVal != nwal_OK)
{
- printf ("init_nwal: nwal_getBufferReq Failed %d\n", nwalRetVal);
+ printf (">netapi: init_nwal - nwal_getBufferReq Failed %d\n", nwalRetVal);
return nwal_FALSE;
}
}
count++;
- bases[nwal_BUF_INDEX_PA_LLD_BUF2] = (uint32_t *)Osal_nwalLocToGlobAddr((uint32_t)paBuf2);
+ bases[nwal_BUF_INDEX_PA_LLD_BUF2] = (uint32_t *)Osal_nwalLocToGlobAddr((uint32_t)paBuf2);
if((NETAPI_NWAL_CONFIG_BUFSIZE_PA_BUF2) < sizes[nwal_BUF_INDEX_PA_LLD_BUF2])
{
/* Resize Memory */
}
count++;
- bases[nwal_BUF_INDEX_SA_CONTEXT] = (uint32_t *)Osal_nwalLocToGlobAddr((uint32_t)saContext);
- if((NETAPI_NWAL_CONFIG_BUFSIZE_SA_CONTEXT_PER_CHAN * TUNE_NETAPI_MAX_NUM_IPSEC_CHANNELS) <
- sizes[nwal_BUF_INDEX_SA_CONTEXT])
- {
- /* Resize Memory */
- while(1);
- }
+ bases[nwal_BUF_INDEX_SA_CONTEXT] = (uint32_t *)Osal_nwalLocToGlobAddr((uint32_t)netapi_VM_SaContextVaddr);
count++;
bases[nwal_BUF_INDEX_SA_LLD_CHAN_HANDLE] = (uint32_t *)Osal_nwalLocToGlobAddr((uint32_t)salldChanHandle);
- if((NETAPI_NWAL_CONFIG_BUFSIZE_SA_LLD_HANDLE_PER_CHAN * TUNE_NETAPI_MAX_NUM_IPSEC_CHANNELS) <
+ if((NETAPI_NWAL_CONFIG_BUFSIZE_SA_LLD_HANDLE_PER_CHAN * TUNE_NETAPI_MAX_NUM_IPSEC_CHANNELS*2) <
sizes[nwal_BUF_INDEX_SA_LLD_CHAN_HANDLE])
{
/* Resize Memory */
&p_nwal_context->nwalInstHandle);
if(nwalRetVal != nwal_OK)
{
- printf ("init_nwal: nwal_create Failed %d\n",nwalRetVal);
+ printf (">netapi: init_nwal- nwal_create Failed %d\n",nwalRetVal);
while(1);
}
- printf("init_nwal: Global and Local Network initialization Successful \n");
+ printf(">netapi: init_nwal - Global and Local Network initialization Successful \n");
return 1;
}
//* Local (per thread/core) nwal initialization0
//**************************************************
int netapi_start_nwal(Pktlib_HeapHandle pkt_heap,
- Pktlib_HeapHandle cmd_heap,
- NETAPI_NWAL_LOCAL_CONTEXT_T *p,
- NETAPI_NWAL_GLOBAL_CONTEXT_T * p_nwal_glob_context )
+ Pktlib_HeapHandle cmd_rx_heap,
+ Pktlib_HeapHandle cmd_tx_heap,
+ NETAPI_NWAL_LOCAL_CONTEXT_T *p,
+ NETAPI_CFG_T *p_cfg,
+ NETAPI_NWAL_GLOBAL_CONTEXT_T * p_nwal_glob_context )
{
nwalLocCfg_t nwalLocCfg;
int count;
count++;
}
+ /* Update the Start of Packet Offset for the default flows created
+ * by NWAL
+ */
+ nwalLocCfg.rxSopPktOffset = p_cfg->def_flow_pkt_rx_offset;
+ nwalLocCfg.rxPktTailRoomSz = p_cfg->def_heap_tailroom_size;
+
/* Call back registration for the core */
nwalLocCfg.pRxPktCallBack = netapi_NWALRxPktCallback;
nwalLocCfg.pCmdCallBack = netapi_NWALCmdCallBack;
nwalLocCfg.pPaStatsCallBack = netapi_NWALCmdPaStatsReply;
+ nwalLocCfg.pRxDmCallBack= netapi_NWALSBPktCallback; //sideband mode callback
/* Initialize Buffer Pool for Control packets from NetCP to Host */
nwalLocCfg.rxCtlPool.numBufPools = 1;
nwalLocCfg.rxCtlPool.bufPool[0].descSize = TUNE_NETAPI_DESC_SIZE;
nwalLocCfg.rxCtlPool.bufPool[0].bufSize = TUNE_NETAPI_CONFIG_MAX_CTL_RXTX_BUF_SIZE;
- nwalLocCfg.rxCtlPool.bufPool[0].heapHandle = cmd_heap;
+ nwalLocCfg.rxCtlPool.bufPool[0].heapHandle = cmd_rx_heap;
/* Initialize Buffer Pool for Control packets from Host to NetCP */
nwalLocCfg.txCtlPool.numBufPools = 1;
nwalLocCfg.txCtlPool.bufPool[0].descSize = TUNE_NETAPI_DESC_SIZE;
nwalLocCfg.txCtlPool.bufPool[0].bufSize = TUNE_NETAPI_CONFIG_MAX_CTL_RXTX_BUF_SIZE;
- nwalLocCfg.txCtlPool.bufPool[0].heapHandle = cmd_heap;
+ nwalLocCfg.txCtlPool.bufPool[0].heapHandle = cmd_tx_heap;
/* Initialize Buffer Pool for Packets from NetCP to Host */
nwalLocCfg.rxPktPool.numBufPools = 1;
nwalLocCfg.rxPktPool.bufPool[0].descSize = TUNE_NETAPI_DESC_SIZE;
- nwalLocCfg.rxPktPool.bufPool[0].bufSize = TUNE_NETAPI_DEFAULT_BUFFER_SIZE;
+ nwalLocCfg.rxPktPool.bufPool[0].bufSize = p_cfg->def_heap_buf_size;
nwalLocCfg.rxPktPool.bufPool[0].heapHandle = pkt_heap;
/* Initialize Buffer Pool for Packets from Host to NetCP */
nwalLocCfg.txPktPool.numBufPools = 1;
nwalLocCfg.txPktPool.bufPool[0].descSize = TUNE_NETAPI_DESC_SIZE;
- nwalLocCfg.txPktPool.bufPool[0].bufSize = TUNE_NETAPI_DEFAULT_BUFFER_SIZE;
+ nwalLocCfg.txPktPool.bufPool[0].bufSize = p_cfg->def_heap_buf_size;
nwalLocCfg.txPktPool.bufPool[0].heapHandle = pkt_heap;
memcpy(&p->nwalLocCfg,&nwalLocCfg,sizeof(nwalLocCfg_t));
if(nwalRetVal != nwal_OK)
{
- printf ("nwal_start:Failed ->err %d !!!\n", nwalRetVal);
+ printf (">nwal_start:Failed ->err %d !!!\n", nwalRetVal);
return -1;
}
p->state = NETAPI_NW_CXT_LOC_ACTIVE;