diff options
| author | Daniil Baturin <daniil@vyos.io> | 2025-10-30 14:43:14 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-10-30 14:43:14 +0000 |
| commit | 07936657062ce1fe1b9185b17e9230f20e96e365 (patch) | |
| tree | ef24bc5ff3be3aa397fe10c5cdc0c03f5da3d620 /src | |
| parent | 524a91424b9bc4e4b3963c049422fe689b60ec38 (diff) | |
| parent | 11dc9e26cdfe50b9dd5d6c2ee9decff9724f7d04 (diff) | |
| download | vyos-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-x | src/conf_mode/vpp.py | 25 |
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') |
