DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] Calling rte_eth_rx_burst() multiple times
@ 2015-10-15  8:32 Younghwan Go
  2015-10-15 10:23 ` Zoltan Kiss
  0 siblings, 1 reply; 4+ messages in thread
From: Younghwan Go @ 2015-10-15  8:32 UTC (permalink / raw)
  To: dev

Hi,

I'm pretty new to playing with DPDK. I was trying to see if I can always 
receive MAX_BURST packets by calling rte_eth_rx_burst() multiple times 
on same <port, queue> pair (code shown below). I'm using DPDK-2.1.0 on 2 
dual-port Intel 82599ES 10Gbps NICs with Ubuntu 14.04.3 (kernel 
3.13.0-63-generic).

Since packet processing is slower (~10 Gbps) than pure RX speed (~40 
Gbps), I assumed rte_eth_rx_burst() would always receive some number of 
packets, eventually filling up MAX_BURST. But for multi-core case (4 
CPUs, 4 ports), rte_eth_rx_burst() starts to always return 0 after some 
time, causing all cores to be blocked forever. Analyzing the DPDK code 
(drivers/net/ixgbe/ixgbe_rxtx.c), I'm seeing that inside 
ixgbe_rx_scan_hw_ring() function, "rxdp->wb.upper.status.error" always 
returns 0 (where is this value set by the way?).

I didn't see this problem for single-core case, in which it returned 
MAX_BURST packets at every rte_eth_rx_burst() call. Also, if I break out 
of while loop when I receive 0, I keep receiving packets in next <port, 
queue> pairs. Does anyone know why this block might happen? Or am I not 
allowed to call rte_eth_rx_burst() multiple times on same <port, queue> 
pair if I get 0? Any help will be great! Thank you!

------------------------------------------------------------------------
int cnt = MAX_BURST; // MAX_BURST = 32
int off = 0;
do {
     ret = rte_eth_rx_burst(port_id, queue_id, &m_table[off], cnt);
     if (ret == 0) {
         // don't break out but continue
     } else if (ret > 0) {
         off += ret;
         cnt -= ret;
     }
} while (cnt > 0);
------------------------------------------------------------------------

Best,
Younghwan

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2015-10-15 11:51 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-10-15  8:32 [dpdk-dev] Calling rte_eth_rx_burst() multiple times Younghwan Go
2015-10-15 10:23 ` Zoltan Kiss
2015-10-15 10:43   ` Younghwan Go
2015-10-15 11:51     ` Zoltan Kiss

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).