summaryrefslogtreecommitdiff
path: root/src/conf_mode/vpp.py
diff options
context:
space:
mode:
authorNataliia Solomko <natalirs1985@gmail.com>2025-10-27 19:03:42 +0200
committerNataliia Solomko <natalirs1985@gmail.com>2025-10-27 19:16:53 +0200
commit11dc9e26cdfe50b9dd5d6c2ee9decff9724f7d04 (patch)
treefdc0d79c31ece73f7f2c22253f047ebb37909906 /src/conf_mode/vpp.py
parentc284938df61b5e970dd13cde03e0693254e89211 (diff)
downloadvyos-1x-11dc9e26cdfe50b9dd5d6c2ee9decff9724f7d04.tar.gz
vyos-1x-11dc9e26cdfe50b9dd5d6c2ee9decff9724f7d04.zip
T7797: VPP: switching from XDP to DPDK driver fails in cloud vm (hv_netvsc)
Diffstat (limited to 'src/conf_mode/vpp.py')
-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')