> > On 28/05/2015 17:16, "Gray, Mark D" <mark.d.g...@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?
I do: ip link add dev vethtest type veth peer name vethtest2 ip link set up dev vethtest ovs-ofctl del-flows br0 ovs-vsctl add-port br0 vethtest ovs-ofctl add-flow br0 in_port=3,actions=output:1 ovs-ofctl add-flow br0 in_port=1,actions=output:3 ping -I vethtest2 1.1.1.1 The port seems to add correctly because I can send traffic in the other direction but please confirm that you can repeat this in case I am doing something wrong. > > Also, would you mind posting another backtrace with debug symbols? > It might help understand what is going on with the queues ids Here you go .. gdb) bt #0 0x0000000000524354 in ixgbe_xmit_pkts_vec () #1 0x000000000068c6df in rte_eth_tx_burst (port_id=0 '\000', queue_id=0, tx_pkts=0x7f51c0a1e420, nb_pkts=65535) at /home/mdgray/git/ovs/dpdk//x86_64-ivshmem-linuxapp-gcc/include/rte_ethdev.h:2577 #2 0x000000000068fee8 in dpdk_queue_flush__ (dev=0x7f51c0adc500, qid=0) at lib/netdev-dpdk.c:808 #3 0x00000000006921ee in dpdk_queue_flush (dev=0x7f51c0adc500, qid=0) at lib/netdev-dpdk.c:842 #4 0x0000000000692390 in netdev_dpdk_rxq_recv (rxq_=0x7f51c0acf040, packets=0x7f5407ffe850, c=0x7f5407ffe84c) at lib/netdev-dpdk.c:897 #5 0x00000000005cc8e5 in netdev_rxq_recv (rx=0x7f51c0acf040, buffers=0x7f5407ffe850, cnt=0x7f5407ffe84c) at lib/netdev.c:651 #6 0x00000000005a36fb in dp_netdev_process_rxq_port (pmd=0x21723af0, port=0x217031d0, rxq=0x7f51c0acf040) at lib/dpif-netdev.c:2517 #7 0x00000000005a3d9b in pmd_thread_main (f_=0x21723af0) at lib/dpif-netdev.c:2672 #8 0x000000000061d0a4 in ovsthread_wrapper (aux_=0x216e1690) at lib/ovs-thread.c:338 #9 0x0000003cc7607ee5 in start_thread () from /lib64/libpthread.so.0 #10 0x0000003cc6ef4d1d in clone () from /lib64/libc.so.6 Let me know how you get on as I will try and continue on this tomorrow when I return to work. I am starting vswitchd with ovs-vswitchd --dpdk -c 0x4 -n 4 --socket-mem 1024,0 -- --pidfile=/tmp/vswitchd.pid --log-file > > 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. _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev