]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - keystone-rtos/netapi.git/blobdiff - ti/runtime/netapi/test/net_test.c
Merge branch 'master' of gtgit01.gt.design.ti.com:git/projects/netapi
[keystone-rtos/netapi.git] / ti / runtime / netapi / test / net_test.c
index 3da0c35770450843e864a503c24fd08a255dc629..d828a5635bdc5d68b3e07c0486b9360c3322cb64 100644 (file)
@@ -276,12 +276,14 @@ int perslow= PERSLOW;
 static NETAPI_CFG_T our_netapi_default_cfg=
 {
 TUNE_NETAPI_PERM_MEM_SZ,
-256,  //start of packet offset for hw to place data on rx for default flow
+128,  //start of packet offset for hw to place data on rx for default flow
 TUNE_NETAPI_QM_CONFIG_MAX_DESC_NUM, //max number of descriptors in system
 TUNE_NETAPI_NUM_GLOBAL_DESC,        //total we will use
 TUNE_NETAPI_DEFAULT_NUM_BUFFERS,   //#descriptors+buffers in default heap
-0, //#descriptors w/o buffers in default heap
-TUNE_NETAPI_DEFAULT_BUFFER_SIZE+256   //size of buffers in default heap
+64, //#descriptors w/o buffers in default heap
+TUNE_NETAPI_DEFAULT_BUFFER_SIZE+128+128,  //size of buffers in default heap
+128   ,  //tail room
+256      //extra room 
 };
 
 Pktlib_HeapHandle OurHeap;
@@ -1313,7 +1315,7 @@ for(p=0;p<TX_BURST;p++) {
 if ((house_pkts_gened>0) && (! (house_pkts_gened%1000)) )
 {
    printf("net_test> request stats at n=%d \n",house_pkts_gened);
-   netcp_cfgReqStats(netapi_handle, our_stats_cb, 0,&err); 
+   //netcp_cfgReqStats(netapi_handle, our_stats_cb, 0,&err); 
    if (err!=0) {printf("stats req failed\n");}
 }
 
@@ -1488,7 +1490,7 @@ heapCfg.name                = "netapi-small";
 heapCfg.memRegion           = NETAPI_GLOBAL_REGION;
 heapCfg.sharedHeap          = 1;
 heapCfg.useStarvationQueue  = 0;
-heapCfg.dataBufferSize      = 256;
+heapCfg.dataBufferSize      = 512;
 heapCfg.numPkts             = 64;
 heapCfg.numZeroBufferPackets= 0;
 heapCfg.heapInterfaceTable.data_malloc  = pPktifTable->data_malloc;
@@ -1529,7 +1531,7 @@ if (!netcp_sb_tx_chan) {printf("pktio open SB TX failed err=%d\n",err); exit(1);
 netcp_sb_rx_chan= pktio_open(netapi_handle, NETCP_SB_RX, (PKTIO_CB) recv_sb_cb, &netcp_sb_rx_cfg,  &err);
 if (!netcp_sb_rx_chan) {printf("pktio open SB RX failed err=%d\n",err); exit(1);}
 
-
+printf("net_test> %d bytes left in our CMA area\n", netapi_getBufMemRemainder());
 /* create scheduler instance */
 our_sched =netapi_schedOpen(netapi_handle,&our_sched_cfg, &err);
 if (!our_sched) {printf("sched create failed\n"); exit(1);}
@@ -1621,13 +1623,14 @@ Pktlib_HeapHandle heaps[2];
 int sizes[2];
 heaps[0]= specialSmall;
 heaps[1]= specialLarge;
-sizes[0]=256;
-sizes[1]=1600;
+#define SPECIAL_SOP_OFF 128
+sizes[0]=512-SPECIAL_SOP_OFF;
+sizes[1]=1600-SPECIAL_SOP_OFF;
 specialFlow = netcp_cfgAddFlow( netapi_handle,
                                2,
                                 heaps,
                                 sizes,
-                                0,  //offset to start rx is 0
+                                SPECIAL_SOP_OFF,  //offset to start rx is 128 
                                 &err);
 if (err) {printf("add flow failed\n", err); exit(1);}
 }
@@ -1737,7 +1740,7 @@ t3 = netapi_TimerGroupStartTimer(
         &err);
 if (err) {printf("timerstart failed %d\n");}
 #endif
-netcp_cfgReqStats(netapi_handle, our_stats_cb, 1,&err);
+//netcp_cfgReqStats(netapi_handle, our_stats_cb, 1,&err);
 if (err!=0) {printf("stats req failed\n");}
 
 /*********************************************/
@@ -1839,11 +1842,12 @@ void netapi_pld(void * x)
 {   
            asm volatile("pld [r0]");
 }
+#include "ti/drv/nwal/nwal_util.h"
 
 #define M 1008
 static int l3_off[M], l4_off[M], L3_chk_ok[M], L4_chk_ok[M], appid[M], len[M] ;
 static unsigned char * buf[M];
-#define N2POLL 8
+#define N2POLL 8 //batch size
 void example_fast_poll( PKTIO_HANDLE_T * p_pktio)
 {
 int j=0;
@@ -1878,22 +1882,26 @@ for(;;)
     {
         //convert previous descriptor PA -> VA
         tempVA  =  Osal_qmssPhyToVirt(pHd[i-1]); 
-        Cppi_getData (Cppi_DescType_HOST, (Cppi_Desc*)tempVA, &buf[jj], &len[jj]);
 
         //try and preload desriptor
-        //__builtin_prefetch(tempVA);
+         __builtin_prefetch(tempVA);
         //netapi_pld(tempVA);
 
         //read next descriptor from queue 
         pHd[i] = (Ti_Pkt *)QMSS_DESC_PTR(PKTIO_QMSS_QUEUE_POP_RAW (rxQ));
-       
+#if 1   
         /* extract some meta data */
+        Cppi_getData (Cppi_DescType_HOST, (Cppi_Desc*)tempVA, &buf[jj], &len[jj]);
         pinfo =  PKTIO_GET_PROTO_INFO(tempVA);
         l3_off[jj]= PKTIO_GET_L3_OFFSET(pinfo);
         l4_off[jj]= PKTIO_GET_L4_OFFSET(pinfo);
         appid[jj]= PKTIO_GET_APPID(tempVA);
-        //get ptr (Physical address) and length of associate buffer
-        //Cppi_getData (Cppi_DescType_HOST, (Cppi_Desc*)tempVA, &buf[jj], &len[jj]);
+//#define VERIFY_SOP
+#ifdef VERIFY_SOP
+  if (sump < 200)  printf("..sop off=%d\n", (int) buf[jj]-
+           (int)  ((Cppi_HostDesc *) tempVA)->origBuffPtr) ;
+#endif
+#endif
         jj+=1;
     }
     //finish last pkt in burst
@@ -1903,10 +1911,12 @@ for(;;)
         tempVA  =  Osal_qmssPhyToVirt(pHd[i-1]); 
 
         /* extract some meta data */
+#if 1
         pinfo =  PKTIO_GET_PROTO_INFO(tempVA);
         l3_off[jj]= PKTIO_GET_L3_OFFSET(pinfo);
         l4_off[jj]= PKTIO_GET_L4_OFFSET(pinfo);
         appid[jj]= PKTIO_GET_APPID(tempVA);
+#endif
         //get ptr (Physical address) and length of associate buffer
         Cppi_getData (Cppi_DescType_HOST, (Cppi_Desc*)tempVA, &buf[jj], &len[jj]);
         jj+=1;
@@ -1938,7 +1948,7 @@ for(;;)
         //tempVA=Qmss_osalConvertDescPhyToVirt(pHd[k]);
         tempVA  =  Osal_qmssPhyToVirt(pHd[k]);
         freeQ=Qmss_getQueueHandle(Cppi_getReturnQueue (Cppi_DescType_HOST, tempVA));
-        netapi_utilCacheWbInv(pHd[k],128);
+        netapi_utilCacheWbInv(tempVA,128);
         //would need to wbInv buffer also in practice. Also need to walk
         // descriptor chain 
         t11= netapi_timing_stop();