summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNataliia S. <81954790+natali-rs1985@users.noreply.github.com>2025-12-02 15:58:20 +0200
committerGitHub <noreply@github.com>2025-12-02 15:58:20 +0200
commit07dfa80bdcbf627436c20e44bbf609bd301008f5 (patch)
tree6bd36d23d96bcf10244f4b3b312485ba028ab7a4
parent29952d9c63b269db48ac8ff8370088a15e987c58 (diff)
parent1b725ee96a4bbbe4942dc26ed21ab184af97855b (diff)
downloadvyos-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.py5
-rwxr-xr-xsrc/conf_mode/vpp.py13
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}!'
)