diff options
| author | Nataliia Solomko <natalirs1985@gmail.com> | 2025-10-27 19:03:42 +0200 |
|---|---|---|
| committer | Nataliia Solomko <natalirs1985@gmail.com> | 2025-10-27 19:16:53 +0200 |
| commit | 11dc9e26cdfe50b9dd5d6c2ee9decff9724f7d04 (patch) | |
| tree | fdc0d79c31ece73f7f2c22253f047ebb37909906 /src/conf_mode/vpp.py | |
| parent | c284938df61b5e970dd13cde03e0693254e89211 (diff) | |
| download | vyos-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-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') |
