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
> >
>

Reply via email to