DPDK patches and discussions
 help / color / mirror / Atom feed
From: William Tu <u9012063@gmail.com>
To: dev@dpdk.org
Cc: smadaminov@vmware.com
Subject: [dpdk-dev] DPDK vDPA application on Mellanox ConnectX 6Dx
Date: Mon, 13 Jul 2020 07:29:56 -0700	[thread overview]
Message-ID: <CALDO+Sa-ArGRfUw6ynsgKWDbfB2L5OK=tsZbec3UCW+funtpWQ@mail.gmail.com> (raw)

Hi,

We are setting up a testbed using mellanox connectX 6Dx
MCX621102AN-ADAT (2x25G) and
are playing with vDPA features.  We setup two machines (traffic gen and KVM)
and connect them back-to-back with two connectX 6Dx.

At this moment we don't know which component might be misconfigured
(qemu, vdpa app, or HW nic). Any feedback for debugging is appreciated!

At KVM machine we follow [1] to setup vdpa on NIC, basically
1) Enable switchdev
  echo 0000:02:00.2 > /sys/bus/pci/drivers/mlx5_core/unbind
  echo switchdev > /sys/class/net/enp2s0f0/compat/devlink/mode
  echo 0000:02:00.2 > /sys/bus/pci/drivers/mlx5_core/bind

$ lspci
  02:00.0 Ethernet controller: Mellanox Technologies MT28841
  02:00.1 Ethernet controller: Mellanox Technologies MT28841
  02:00.2 Ethernet controller: Mellanox Technologies MT28850
  02:00.3 Ethernet controller: Mellanox Technologies MT28850

[11350.951711] mlx5_core 0000:02:00.0: E-Switch: Enable:
mode(OFFLOADS), nvfs(2), active vports(3)
[11351.032413] mlx5_core 0000:02:00.0 enp2s0f0_p0: Link up
[11351.226525] enp2s0f0_pf0vf1: renamed from eth0
[11351.403649] IPv6: ADDRCONF(NETDEV_CHANGE): enp2s0f0_p0: link becomes ready
[11351.403951] IPv6: ADDRCONF(NETDEV_CHANGE): enp2s0f0_pf0vf0: link
becomes ready
[11351.404162] IPv6: ADDRCONF(NETDEV_CHANGE): enp2s0f0_pf0vf1: link
becomes ready

[1]https://docs.mellanox.com/pages/viewpage.action?pageId=25146841#OVSOffloadUsingASAP%C2%B2Direct-ovs-dpdkhwoffloadsOVS-DPDKHardwareOffloads

2) run the DPDK's vdpa appliaction, create /tmp/sock-virtio0
$ ./vdpa -w 0000:02:00.2,class=vdpa --log-level=pmd,info -- -i
EAL: Detected 12 lcore(s)
EAL: Detected 1 NUMA nodes
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'VA'
EAL: Probing VFIO support...
EAL: VFIO support initialized
EAL: Probe PCI driver: net_mlx5 (15b3:101e) device: 0000:02:00.2 (socket 0)
EAL: Probe PCI driver: mlx5_vdpa (15b3:101e) device: 0000:02:00.2 (socket 0)
vdpa> create /tmp/sock-virtio0 0000:02:00.2
VHOST_CONFIG: vhost-user server: socket created, fd: 65
VHOST_CONFIG: bind to /tmp/sock-virtio0
vdpa> VHOST_CONFIG: new vhost user connection is 68
VHOST_CONFIG: new device, handle is 0
...
VHOST_CONFIG: virtio is now ready for processing.
VHOST_CONFIG: read message VHOST_USER_SET_VRING_ENABLE
VHOST_CONFIG: set queue enable: 1 to qp idx: 3
mlx5_vdpa: mlx5_vdpa_virtq.c:424: mlx5_vdpa_virtq_enable(): Update
virtq 3 status disable -> enable.
mlx5_vdpa: mlx5_vdpa_virtq.c:133: mlx5_vdpa_virtq_stop(): Query vid 0
vring 3: hw_available_idx=0, hw_used_index=0
mlx5_vdpa: mlx5_vdpa_virtq.c:264: mlx5_vdpa_virtq_setup(): vid 0: Init
last_avail_idx=0, last_used_idx=0 for virtq 3.
VHOST_CONFIG: virtio is now ready for processing.

3) start the VM
$ qemu-system-x86_64 --version
QEMU emulator version 4.2.1
$ qemu-system-x86_64 -enable-kvm -smp 5 -cpu host -m 4G -drive \
    file=/var/lib/libvirt/images/vdpa-vm.qcow2 \
    -serial mon:stdio \
    -chardev socket,id=charnet1,path=/tmp/sock-virtio0 \
    -netdev vhost-user,chardev=charnet1,queues=2,id=hostnet1 \
    -device virtio-net-pci,mq=on,vectors=6,netdev=hostnet1,id=net1,mac=e4:11:c6:d3:45:f2,bus=pci.0,addr=0x6,page-per-vq=on,rx_queue_size=1024,tx_queue_size=1024
\
    -object memory-backend-file,id=mem,size=4096M,mem-path=/dev/hugepages,share=on
\
    -numa node,memdev=mem -mem-prealloc -name "vdpa-vm"

Once VM boots, inside vm, I can see virtio device, and I bring it up, turns
on promisc mode.
vdpa@vdpa-vm:~$ ethtool -i ens6
driver: virtio_net
version: 1.0.0

4) At traffic gen, start to send packet with dst mac e4:11:c6:d3:45:f2
however, on the VM side, the packet stats is always 0.

On the KVM host side, I saw packets arrived at PF, but not sending to
vf0 (0000:02:00.2)
Average:        IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s
rxcmp/s   txcmp/s  rxmcst/s   %ifutil
Average:    enp2s0f0_p0 31544608.00      0.00 1971539.12      0.00
 0.00      0.00      0.00     64.60
Average:    enp2s0f0_pf0vf1      0.00      0.00      0.00      0.00
  0.00      0.00      0.00      0.00

$ mlnx_perf -i enp2s0f0_p0
                    rx_packets: 15,235,681
                      rx_bytes: 914,140,860 Bps      = 7,313.12 Mbps
                  rx_csum_none: 15,235,680
                rx_cache_reuse: 7,617,792
                       ch_poll: 238,057
              rx_out_of_buffer: 19,963,082
      rx_vport_unicast_packets: 35,198,770
        rx_vport_unicast_bytes: 2,252,721,216 Bps    = 18,021.76 Mbps

So I install tc rule
$ tc filter add dev enp2s0f0_p0 protocol ip parent ffff: \
    flower skip_sw action mirred egress redirect dev enp2s0f0_pf0vf0
  filter protocol ip pref 49152 flower chain 0 handle 0x1
  eth_type ipv4
  skip_sw
  in_hw
    action order 1: mirred (Egress Redirect to device enp2s0f0_pf0vf0) stolen
    index 1 ref 1 bind 1 installed 14 sec used 0 sec
    Action statistics:
    Sent 31735712192 bytes 495870503 pkt (dropped 0, overlimits 0 requeues 0)

With the rule, packets show up in KVM's vf, but still no packet
inside VM (ip -s link show) show all zero.

Appreciate for any suggestion to debugging.
Thanks in advance.
William & Sergey

             reply	other threads:[~2020-07-13 14:30 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-13 14:29 William Tu [this message]
2020-07-25 16:07 ` William Tu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CALDO+Sa-ArGRfUw6ynsgKWDbfB2L5OK=tsZbec3UCW+funtpWQ@mail.gmail.com' \
    --to=u9012063@gmail.com \
    --cc=dev@dpdk.org \
    --cc=smadaminov@vmware.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).