<div dir="ltr"><div>Hi,</div><br>We are migrating our DPDK App from “failsafe” to “netvsc” PMD as per the recommendation of Microsoft.<br>“Failsafe” PMD works well on both Azure cloud and on-prem Hyper-V VM(Linux) machines using the DPDK “testpmd” app.<br><br>Whereas “Netvsc” PMD works well only on Azure cloud with both(AN enabled/disabled options), But not working on the on-prem local Hyper-V Linux VM(based on RHEL-9).<br>We could not receive any packets on the synthetic device when we test with DPDK “testpmd”. The Network Adapter(without SR-IOV enable) connection is good from the Hyper-V switch to VM, we could receive packets on the Kernel-mode driver “hv_netvsc” network interface, but, once we bind the VMbus network device to “uio_hv_generic” as follows and load “testpmd” App, we could not receive any pkts on Rx as per the port stats.<br><br>Steps to bind network device from “hv_netvsc” to “uio_hv_generic” and start the “testpmd” app:<br>======================<br>NET_UUID="f8615163-df3e-46c5-913f-f2d2f965ed0e"<br>modprobe uio_hv_generic<br>echo $NET_UUID > /sys/bus/vmbus/drivers/uio_hv_generic/new_id<br>echo $DEV_UUID > /sys/bus/vmbus/drivers/hv_netvsc/unbind<br>echo $DEV_UUID > /sys/bus/vmbus/drivers/uio_hv_generic/bind<br><br> ./dpdk-testpmd -l 2-3 -n 2 -v --legacy-mem  -- -i  --mbcache=64<br>================<br>Here, DEV_UUID got from the synthetic kernel interface using “cat   /sys/class/net/eth0/device/device_id”. Once we start the “testpmd” as mentioned above we could see the driver-name properly as “net_netvsc” and we could “start” the DPDK ports well without any Errors as shown below.<br><br>These steps works well on Azure cloud VM with AN enabled/disabled and we could receive the traffic on Rx stats well.<br>It looks like, Hyper-V setup issue, as the above steps works fine on Azure-VM and not working on local Hyper-V(Windows 2016 based) VM(Linux RHEL-9).<br><br>Has anybody tried local on-prem Windows Hyper-V VM(Linux) DPDK App’s ?  If so, please let me know, any suggestions on this issue.<br><br>Linux-kernel version on VM: 5.15.0<br>DPDK-version: 24.11<br><br>Sample output of “testpmd” App as follows:<br>====================<br>./dpdk-testpmd -l 2-3 -n 2 -v --legacy-mem  -- -i  --mbcache=64<br>EAL: Detected CPU lcores: 8<br>EAL: Detected NUMA nodes: 1<br>EAL: Static memory layout is selected, amount of reserved memory can be adjusted with -m or --socket-mem<br>EAL: Detected static linkage of DPDK<br>EAL: Multi-process socket /var/run/dpdk/rte/mp_socket<br>EAL: Selected IOVA mode 'PA'<br>Interactive-mode selected<br>testpmd: create a new mbuf pool <mb_pool_0>: n=149504, size=2176, socket=0<br>testpmd: preferred mempool ops selected: ring_mp_mc<br>Configuring Port 0 (socket 0)<br>Port 0: 00:15:5D:2E:CC:1E<br>Configuring Port 1 (socket 0)<br>Port 1: 00:15:5D:2E:CC:1F<br>Checking link statuses...<br>Done<br>testpmd> sh port info 0<br>Command not found<br>testpmd> show port info 0<br><br>********************* Infos for port 0  *********************<br>MAC address: 00:15:5D:2E:CC:1E<br>Device name: 7cac5c55-1a7c-4690-a70c-13d4acbb35ac<br>Driver name: net_netvsc<br>Firmware-version: not available<br>Connect to socket: 0<br>memory allocation on the socket: 0<br>Link status: up<br>Link speed: 10 Gbps<br>Link duplex: full-duplex<br>Autoneg status: On<br>MTU: 1500<br>Promiscuous mode: enabled<br>Allmulticast mode: disabled<br>Maximum number of MAC addresses: 1<br>Maximum number of MAC addresses of hash filtering: 0<br>VLAN offload:<br>  strip off, filter off, extend off, qinq strip off<br>Hash key size in bytes: 40<br>Redirection table size: 128<br>Supported RSS offload flow types:<br>  ipv4  ipv4-tcp  ipv4-udp  ipv6  ipv6-tcp<br>Minimum size of RX buffer: 1024<br>Maximum configurable length of RX packet: 16128<br>Maximum configurable size of LRO aggregated packet: 0<br>Current number of RX queues: 1<br>Max possible RX queues: 64<br>Max possible number of RXDs per queue: 65535<br>Min possible number of RXDs per queue: 0<br>RXDs number alignment: 1<br>Current number of TX queues: 1<br>Max possible TX queues: 64<br>Max possible number of TXDs per queue: 4096<br>Min possible number of TXDs per queue: 1<br>TXDs number alignment: 1<br>Max segment number per packet: 65535<br>Max segment number per MTU/TSO: 65535<br>Device capabilities: 0x0( )<br>Device error handling mode: none<br>Device private info:<br>  none<br>testpmd><br>testpmd> start<br>io packet forwarding - ports=2 - cores=1 - streams=2 - NUMA support enabled, MP allocation mode: native<br>Logical Core 3 (socket 0) forwards packets on 2 streams:<br>  RX P=0/Q=0 (socket 0) -> TX P=1/Q=0 (socket 0) peer=02:00:00:00:00:01<br>  RX P=1/Q=0 (socket 0) -> TX P=0/Q=0 (socket 0) peer=02:00:00:00:00:00<br><br>  io packet forwarding packets/burst=32<br>  nb forwarding cores=1 - nb forwarding ports=2<br>  port 0: RX queue number: 1 Tx queue number: 1<br>    Rx offloads=0x0 Tx offloads=0x0<br>    RX queue: 0<br>      RX desc=512 - RX free threshold=0<br>      RX threshold registers: pthresh=0 hthresh=0  wthresh=0<br>      RX Offloads=0x0<br>    TX queue: 0<br>      TX desc=512 - TX free threshold=0<br>      TX threshold registers: pthresh=0 hthresh=0  wthresh=0<br>      TX offloads=0x0 - TX RS bit threshold=0<br>  port 1: RX queue number: 1 Tx queue number: 1<br>    Rx offloads=0x0 Tx offloads=0x0<br>    RX queue: 0<br>      RX desc=512 - RX free threshold=0<br>      RX threshold registers: pthresh=0 hthresh=0  wthresh=0<br>      RX Offloads=0x0<br>    TX queue: 0<br>      TX desc=512 - TX free threshold=0<br>      TX threshold registers: pthresh=0 hthresh=0  wthresh=0<br>      TX offloads=0x0 - TX RS bit threshold=0<br>testpmd><br>testpmd> show port stats 0<br><br>  ######################## NIC statistics for port 0  ########################<br>  RX-packets: 0          RX-missed: 0          RX-bytes:  0<br>  RX-errors: 0<br>  RX-nombuf:  0<br>  TX-packets: 0          TX-errors: 0          TX-bytes:  0<br><br>  Throughput (since last show)<br>  Rx-pps:            0          Rx-bps:            0<br>  Tx-pps:            0          Tx-bps:            0<br>  ############################################################################<br>testpmd><br>====================<br>We had pumped the traffic from another machine to this MAC address.<br><div><br></div><div>Thanks,</div><div>Madhukar.</div></div>