[dpdk-dev] Bug in virtqueue_dequeue_burst_rx()

Gopakumar Choorakkot Edakkunni gopakumar.c.e at gmail.com
Tue Dec 20 06:59:33 CET 2016


While I was testing virtio with ubuntu 14.04 kvm as host and dpdk16.07
linux as guest, quite often I have seen that I get into a situation where
virtio_recv_mergeable_pkts() gets into a forever loop, after sending
traffic for a while. In the below API,  I see that it clearly leads to a
while loop, I am not quite familiar with virtio or mergeable buffers, so
thought of checking with dpdk alias on the intent here.

I checked the linux kernel virtio_net.c file which does the similar
mergeable recieve, and the kernel code breaks out in case of error.
Shouldnt dpdk be breaking out of here on error instead of continue ?

virtio_recv_mergeable_pkts()
{
<snip>
    while (i < nb_used) {
        <snip>
*        num = virtqueue_dequeue_burst_rx(rxvq, rcv_pkts, len, 1);*
*        if (num != 1)*
*            continue;*
       <snip>
    }
<snip?
}

Rgds,
Gopa.


More information about the dev mailing list