summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDaniil Baturin <daniil@vyos.io>2025-10-30 14:43:14 +0000
committerGitHub <noreply@github.com>2025-10-30 14:43:14 +0000
commit07936657062ce1fe1b9185b17e9230f20e96e365 (patch)
treeef24bc5ff3be3aa397fe10c5cdc0c03f5da3d620 /src
parent524a91424b9bc4e4b3963c049422fe689b60ec38 (diff)
parent11dc9e26cdfe50b9dd5d6c2ee9decff9724f7d04 (diff)
downloadvyos-1x-07936657062ce1fe1b9185b17e9230f20e96e365.tar.gz
vyos-1x-07936657062ce1fe1b9185b17e9230f20e96e365.zip
Merge pull request #4813 from natali-rs1985/T7797
T7797: VPP: switching from XDP to DPDK driver fails in cloud vm (hv_netvsc)
Diffstat (limited to 'src')
-rwxr-xr-xsrc/conf_mode/vpp.py25
1 files changed, 23 insertions, 2 deletions
diff --git a/src/conf_mode/vpp.py b/src/conf_mode/vpp.py
index f16711901..61b10406f 100755
--- a/src/conf_mode/vpp.py
+++ b/src/conf_mode/vpp.py
@@ -652,11 +652,32 @@ def apply(config):
if iface_config['kernel_module'] == 'ena':
control_host.unsafe_noiommu_mode(True)
- if iface_config['kernel_module'] in override_drivers:
+ original_driver = config['persist_config'][iface]['original_driver']
+ effective_ifaces = (
+ config.get('effective', {})
+ .get('settings', {})
+ .get('interface', {})
+ )
+ # Check if the driver needs to be overridden:
+ # either the kernel module requires it, or the interface is being switched
+ # from XDP (hv_netvsc) to DPDK (T7797)
+ override_xdp_to_dpdk = (
+ effective_ifaces.get(iface, {}).get('driver') == 'xdp'
+ and original_driver == 'hv_netvsc'
+ )
+ k_module = (
+ original_driver
+ if override_xdp_to_dpdk
+ else iface_config['kernel_module']
+ )
+ if (
+ iface_config['kernel_module'] in override_drivers
+ or override_xdp_to_dpdk
+ ):
control_host.override_driver(
config['persist_config'][iface]['bus_id'],
config['persist_config'][iface]['dev_id'],
- override_drivers[iface_config['kernel_module']],
+ override_drivers[k_module],
)
call('systemctl daemon-reload')