index 3da0c35770450843e864a503c24fd08a255dc629..d828a5635bdc5d68b3e07c0486b9360c3322cb64 100644 (file)
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;
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");}
}
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);}
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);}
}
&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");}
/*********************************************/
{
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;
{
//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
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;
//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();