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

Gray, Mark D mark.d.gray at intel.com
Thu May 28 16:16:39 UTC 2015


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

(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