diff options
| author | Nataliia S. <81954790+natali-rs1985@users.noreply.github.com> | 2025-12-02 15:58:20 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-12-02 15:58:20 +0200 |
| commit | 07dfa80bdcbf627436c20e44bbf609bd301008f5 (patch) | |
| tree | 6bd36d23d96bcf10244f4b3b312485ba028ab7a4 | |
| parent | 29952d9c63b269db48ac8ff8370088a15e987c58 (diff) | |
| parent | 1b725ee96a4bbbe4942dc26ed21ab184af97855b (diff) | |
| download | vyos-1x-07dfa80bdcbf627436c20e44bbf609bd301008f5.tar.gz vyos-1x-07dfa80bdcbf627436c20e44bbf609bd301008f5.zip | |
Merge pull request #4866 from natali-rs1985/T8030
T8030: VPP: Check support for changed driver too
| -rw-r--r-- | python/vyos/vpp/config_verify.py | 5 | ||||
| -rwxr-xr-x | src/conf_mode/vpp.py | 13 |
2 files changed, 11 insertions, 7 deletions
diff --git a/python/vyos/vpp/config_verify.py b/python/vyos/vpp/config_verify.py index 18859331b..d051ef359 100644 --- a/python/vyos/vpp/config_verify.py +++ b/python/vyos/vpp/config_verify.py @@ -22,7 +22,6 @@ from vyos import ConfigError from vyos.base import Warning from vyos.utils.cpu import get_core_count as total_core_count, get_cpus -from vyos.vpp.control_host import get_eth_driver from vyos.vpp.config_resource_checks import cpu as cpu_checks, memory as mem_checks from vyos.vpp.config_resource_checks.resource_defaults import default_resource_map from vyos.vpp.utils import human_memory_to_bytes, bytes_to_human_memory @@ -122,7 +121,7 @@ def verify_vpp_tunnel_source_address(config: dict): ) -def verify_dev_driver(iface_name: str, driver_type: str) -> bool: +def verify_dev_driver(driver_type: str, driver: str) -> bool: # Lists of drivers compatible with DPDK and XDP drivers_dpdk: list[str] = [ 'atlantic', @@ -167,8 +166,6 @@ def verify_dev_driver(iface_name: str, driver_type: str) -> bool: 'vmxnet3', ] - driver: str = get_eth_driver(iface_name) - if driver_type == 'dpdk': if driver in drivers_dpdk: return True diff --git a/src/conf_mode/vpp.py b/src/conf_mode/vpp.py index abb68847e..63000110a 100755 --- a/src/conf_mode/vpp.py +++ b/src/conf_mode/vpp.py @@ -346,6 +346,9 @@ def get_config(config=None): conf, base_settings + ['interface', iface, 'driver'] ) + if old_driver: + config['settings']['interface'][iface]['driver_changed'] = {} + # Get current kernel module, required for extra verification and # logic for VMBus interfaces config['settings']['interface'][iface]['kernel_module'] = ( @@ -542,10 +545,14 @@ def verify(config): # ensure DPDK/XDP settings are properly configured for iface, iface_config in config['settings']['interface'].items(): # check if selected driver is supported, but only for new interfaces - if iface not in config.get('effective', {}).get('settings', {}).get( - 'interface', {} + # or if driver was changed + original_driver = config['persist_config'][iface]['original_driver'] + if ( + iface + not in config.get('effective', {}).get('settings', {}).get('interface', {}) + or 'driver_changed' in iface_config ): - if not verify_dev_driver(iface, iface_config['driver']): + if not verify_dev_driver(iface_config['driver'], original_driver): raise ConfigError( f'Driver {iface_config["driver"]} is not compatible with interface {iface}!' ) |
