]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - keystone-rtos/netapi.git/blobdiff - ti/runtime/netapi/src/netapi_init.c
Update
[keystone-rtos/netapi.git] / ti / runtime / netapi / src / netapi_init.c
old mode 100644 (file)
new mode 100755 (executable)
index 2f0deb2..ef1a0f9
@@ -140,7 +140,7 @@ int netapi_init_cpsw(void)
 //****************************************************
 // initialize QM (per SOC)
 //***************************************************
-int netapi_init_qm(void)
+int netapi_init_qm(int max_descriptors)
 {
   Qmss_InitCfg     qmssInitConfig;
   int32_t          result;
@@ -152,7 +152,7 @@ int netapi_init_qm(void)
   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];
 
@@ -196,7 +196,7 @@ int netapi_init_qm(void)
 
   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);
   }
 
@@ -222,15 +222,15 @@ int netapi_qm_setup_mem_region(
   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
@@ -238,10 +238,12 @@ int netapi_qm_setup_mem_region(
       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);
   }
 
@@ -258,7 +260,7 @@ int netapi_start_qm(void)
      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;
@@ -329,7 +331,7 @@ int netapi_init_cppi(void)
   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;
@@ -349,7 +351,7 @@ uint8_t nwalInstMem[NETAPI_NWAL_CONFIG_BUFSIZE_NWAL_HANDLE]ALIGN(CACHE_LINESZ);
 #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) + \
@@ -367,20 +369,22 @@ uint8_t paBuf0[NETAPI_NWAL_CONFIG_BUFSIZE_PA_BUF0]ALIGN(CACHE_LINESZ);
 #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];
@@ -398,7 +403,9 @@ int netapi_init_nwal(
     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 ) );
@@ -407,18 +414,29 @@ int netapi_init_nwal(
     /* 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;
     }
@@ -426,27 +444,26 @@ int netapi_init_nwal(
  /* 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;
@@ -460,7 +477,8 @@ int netapi_init_nwal(
     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++)
@@ -472,7 +490,7 @@ int netapi_init_nwal(
                                    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;
     }
 
@@ -509,7 +527,7 @@ int netapi_init_nwal(
     }
     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 */
@@ -525,17 +543,11 @@ int netapi_init_nwal(
     }
     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 */
@@ -561,11 +573,11 @@ int netapi_init_nwal(
                              &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;
 }
 
@@ -573,9 +585,11 @@ int netapi_init_nwal(
 //* 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;
@@ -590,33 +604,40 @@ int netapi_start_nwal(Pktlib_HeapHandle pkt_heap,
         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));
@@ -632,7 +653,7 @@ int netapi_start_nwal(Pktlib_HeapHandle pkt_heap,
 
     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;