Page MenuHomeVyOS Platform

VPP fails with iavf (virtual function) instead of i40e (physical) - SRIOV
In progress, NormalPublicBUG

Description

Same as https://vyos.dev/T7791

DPDK starts with i40e but fails with iavf

Driver dpdk is not compatible with interface eth0!

vyos@vyos:~$ ethtool -i eth0
driver: iavf
version: 6.6.114-vyos
firmware-version: N/A
expansion-rom-version:
bus-info: 0000:02:00.0
supports-statistics: yes
supports-test: no
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: yes

According to the DPDK docs it should work https://doc.dpdk.org/guides-19.05/nics/intel_vf.html
But may require setting device id as 0x1889.

vyos@vyos:~$ lspci -nn | grep 1889
02:00.0 Ethernet controller [0200]: Intel Corporation Ethernet Adaptive Virtual Function [8086:1889] (rev 02)

Details

Version
VyOS 2025.11.04-0019-rolling
Is it a breaking change?
Unspecified (possibly destroys the router)
Issue type
Bug (incorrect behavior)

Event Timeline

I hacked and edited
/usr/libexec/vyos/conf_mode/vpp.py
/usr/lib/python3/dist-packages/vyos/vpp/config_verify.py

to enabled iavf with dpdk

Polling mode seems to work, interrupt mode fails to commit.

XDP on iavf failed (works on i40e) with:

VPP API call failed: -12

Interrupt mode on iavf also failed (works on i40e)

Traceback (most recent call last):
  File "/usr/libexec/vyos/conf_mode/vpp.py", line 812, in apply
    vpp_control.iface_rxmode(iface, rx_mode)
  File "/usr/lib/python3/dist-packages/vyos/control_vpp.py", line 81, in check_retval_wrapper
    raise VPPValueError(f'VPP API call failed: {return_value.retval}')
vpp_papi.vpp_papi.VPPValueError: VPP API call failed: -9

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/libexec/vyos/services/vyos-configd", line 157, in run_script
    script.apply(c)
  File "/usr/libexec/vyos/conf_mode/vpp.py", line 844, in apply
    initialize_interface()
  File "/usr/libexec/vyos/conf_mode/vpp.py", line 632, in initialize_interface
    iface_new_name: str = control_host.get_eth_name(iface_config['dev_id'])
  File "/usr/lib/python3/dist-packages/vyos/vpp/control_host.py", line 229, in get_eth_name
    raise FileNotFoundError(
FileNotFoundError: A device with ID 0000:02:00.0 not found in ethernet interfaces

[[vpp]] failed
Commit failed
[vpp]
vyos@vyos:~$ lspci | grep -i eth
01:00.0 Ethernet controller: Intel Corporation Ethernet Controller X710 for 10GbE SFP+ (rev 02)
02:00.0 Ethernet controller: Intel Corporation Ethernet Adaptive Virtual Function (rev 02)

Tested on latest fw for x710

firmware-version: 9.55 0x8000fe2f 1.1853.0