Thank you for your answer. I just realized that the reason the rte_eth_rx_burst() returns 0 is because inside ixgbe_recv_pkts() this fails: nmb = rte_rxmbuf_alloc(rxq->mb_pool); => nmb is NULL
Does this mean that every RX queue should have its own rte_mempool? If so, are there any optimal values for: number of RX descriptors, per-queue rte_mempool size, number of hugepages (from what I understand, these 3 are correlated)? If I'm wrong, please explain why. Thanks! BR, Newman On Thu, Nov 20, 2014 at 9:56 AM, De Lara Guarch, Pablo < pablo.de.lara.guarch at intel.com> wrote: > Hi Newman, > > > -----Original Message----- > > From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Newman Poborsky > > Sent: Thursday, November 20, 2014 8:34 AM > > To: dev at dpdk.org > > Subject: [dpdk-dev] one worker reading multiple ports > > > > Hi, > > > > is it possible to use one worker thread (one lcore) to read packets from > > multiple ports? > > > > When I start 2 workers and assign each one to read from different ports > > (with rte_eth_rx_burst()) everything works fine, but if I assign one > > worker to read packets from 2 ports, rte_eth_rx_burst() returns 0 as if > no > > packets are read. > > Yes, it is totally possible. The only problem would be if you try to use > multiple threads > to read/write on one port, in which case you should use multiple queues. > Look at l3fwd app for instance. You can use just a single core to handle > packets on multiple ports. > > Pablo > > > > Is there any reason for this kind of behaviour? > > > > Thanks! > > > > Br, > > Newman P. >