Hi Bogdan, Yes, I agree. It looks like that. But i thought if we don't recv pkt (odp_pktin_recv), then the packets will be dropped at NIC queues as the rx buffer will be full. In that scenario, the other queue should continue to work. Maybe i am not aware of the ODP side of the implementation.
In any case, is it an expected behaviour? Can we disable Rx or Tx on a specific queue instead of the whole PKTIO? More importantly, how much we can do at run time instead of bringing down the pktio entirely? Thanks, P Gyanesh Kumar Patra On Tue, Feb 6, 2018 at 11:21 AM, Bogdan Pricope <bogdan.pric...@linaro.org> wrote: > Explanation may be related to RSS. > > Dpdk pktio is using RSS - traffic is hashed and sent to a specific > queue. You have two RX queues (pktin) that are polled with > odp_pktin_recv(). If you stop polling on one queue (put one of the > threads in busy loop or sleep()), it will not mean that the other will > take entire traffic: I do not know dpdk so well but I suspect that a > number of packets are hold on that pktin and pool is exhausted. > > /B > > On 6 February 2018 at 14:10, Elo, Matias (Nokia - FI/Espoo) > <matias....@nokia.com> wrote: > > > > > >> On 6 Feb 2018, at 13:55, Elo, Matias (Nokia - FI/Espoo) < > matias....@nokia.com> wrote: > >> > >> > >> > >>> On 5 Feb 2018, at 19:42, Bill Fischofer <bill.fischo...@linaro.org> > wrote: > >>> > >>> Thanks, Gyanesh, that does sound like a bug. +cc Matias: Can you > comment on this? > >>> > >>> On Mon, Feb 5, 2018 at 5:09 AM, gyanesh patra < > pgyanesh.pa...@gmail.com> wrote: > >>> I am testing an l2fwd use-case. I am executing the use-case with two > >>> CPUs & two interfaces. > >>> One interface with 2 Rx queues receives pkts using 2 threads with 2 > >>> associated CPUs. Both the > >>> threads can forward the packet over the 2nd interface which also has 2 > Tx > >>> queues mapped to > >>> 2 CPUs. I am sending packets from an external packet generator and > >>> confirmed that both > >>> queues are receiving packets. > >>> *When I run odp_pktin_recv() on both the queues, the packet* > >>> * forwarding works fine. But if I put a sleep() or add a busy loop > instead > >>> of odp_pktin_recv() * > >>> *on one thread, then the other thread stops receiving packets. If I > >>> replace the sleep with odp_pktin_recv(), both the queues start > receiving > >>> packets again. *I encountered this problem on the DPDK pktio support on > >>> ODP 1.16 and ODP 1.17. > >>> On socket-mmap it works fine. Is it expected behavior or a potential > bug? > >>> > >> > >> > >> Hi Gyanesh, > >> > >> Could you please share an example code which produces this issue? Does > this happen also if you enable zero-copy dpdk pktio > (--enable-dpdk-zero-copy)? > >> > >> Socket-mmap pktio doesn't support MQ, so comparison to that doesn't > make much sense. Netmap pktio supports MQ. > >> > >> Regards, > >> Matias > >> > > > > Using too small packet pool can also cause symptoms like this, so you > could try increasing packet pool size. > > > > -Matias > > >