[ovs-dev] [PATCH] dpif-netdev: Fix non-pmd thread queue id.

Daniele Di Proietto diproiettod at vmware.com
Thu May 28 16:58:15 UTC 2015


On 28/05/2015 17:16, "Gray, Mark D" <mark.d.gray at intel.com> wrote:

>> 
>> Non pmd threads have a core_id == UINT32_MAX, while queue ids used by
>> netdevs range from 0 to the number of CPUs.  Therefore core ids cannot
>>be
>> used directly to select a queue.
>> 
>> This commit introduces a simple mapping to fix the problem: non pmd
>> threads use queue 0, pmd threads on core 0 to N use queues 1 to N+1
>> 
>> Fixes: d5c199ea7ff7 ("netdev-dpdk: Properly support non pmd threads.")
>> 
>No comments on the code. However, I tested it by adding a veth port
>and sending a 'ping -I' through the other end of the veth and it
>segfaults.

Thanks for testing it.  From the backtrace it looks like I should also
update the flushing logic.

How did you add the veth?  Did you use a pcap vdev?

Also, would you mind posting another backtrace with debug symbols?
It might help understand what is going on with the queues ids

Thanks,

Daniele

>
>(gdb) bt
>#0  0x0000000000526354 in ixgbe_xmit_pkts_vec ()
>#1  0x000000000066f473 in dpdk_queue_flush__ ()
>#2  0x000000000066fd16 in netdev_dpdk_rxq_recv ()
>#3  0x00000000005b9cd1 in netdev_rxq_recv ()
>#4  0x00000000005967e9 in dp_netdev_process_rxq_port ()
>#5  0x0000000000596f24 in pmd_thread_main ()
>#6  0x0000000000608041 in ovsthread_wrapper ()
>#7  0x0000003cc7607ee5 in start_thread () from /lib64/libpthread.so.0
>#8  0x0000003cc6ef4d1d in clone () from /lib64/libc.so.6
>
>I also didn¹t seen any perf drop with this patch in the normal dpdk
>phy-phy
>path.




More information about the dev mailing list