Trouble enabling SRIOV on a NIC on VMware

Hey there. I have been using SRIOV on Esxi 7.0.3 for a few years now. I have not upgraded to 8.0 yet. However, in my experience, when the UI states that the PCI device is not capable of SRIOV like it shows in your screenshot, it means your driver is likely the issue.

I browse Broadcom’s support page for the latest driver for the NIC, install it via esxcli, and then the SRIOV function can be enabled.

I have personally setup SRIOV with Intel x520(10g), xl710(40g), xxv710(25g), and mellanox connectx-4 (both 25g and 100g variants) cards successfully on esxi 7.0.3.

Drivers used for Mellanox connectx-4
[root@vsphere1:~] esxcli software vib list | grep mlx
nmlx5-core 4.22.73.1006-1OEM.703.0.0.18644231 MEL VMwareCertified 2024-06-05
nmlx5-rdma 4.22.73.1006-1OEM.703.0.0.18644231 MEL VMwareCertified 2024-06-05

Driver used for Intel xl710 and xxv710 cards
[root@vsphere1:~] esxcli software vib list | grep i40
i40en 2.8.4.0-1OEM.700.1.0.15843807 INT VMwareCertified 2024-08-23

Driver used for intel x520 (82599)
[root@vsphere1:~] esxcli software vib list | grep ixg
ixgben 1.18.2.0-1OEM.700.1.0.15843807 INT VMwareCertified 2024-10-24

At least i confirmed these versions work with SRIOV. I made a point to do this process

  1. Install the new driver with ‘esxcli software vib install’ command.
  2. Reboot system. After bootup, you should see SRIOV no longer says “not capable” and rather says “disabled”
  3. Enable SRIOV on the NIC in the PCI devices page. Be sure to check the NIC driver for supported number of virtual functions. Setting the VFs too high will result in failure.
  4. Reboot system again.
  5. After this 2nd reboot, you should be able to assign VMs to the NIC virtual function devices.
  6. Edit network settings of a given VM. Add new network adapter and assign the port group. An SRIOV network adapter uses the vlan info in the port group settings to set the vlan tag or unagged. Change adapter type from VMXNET3(default) to SRIOV. Select the physical function PCI devices in the list. The VM will now use one of the virtual function devices.
  7. Reserve all VM memory.
  8. Disable VM CPU IOMMU support, disable all performance counters under the CPU section.
  9. Power up VM. You should have access to the SRIOV virtual function device in the VM.