@@ -346,6 +346,9 @@ def get_config(config=None):
346346 conf , base_settings + ['interface' , iface , 'driver' ]
347347 )
348348
349+ if old_driver :
350+ config ['settings' ]['interface' ][iface ]['driver_changed' ] = {}
351+
349352 # Get current kernel module, required for extra verification and
350353 # logic for VMBus interfaces
351354 config ['settings' ]['interface' ][iface ]['kernel_module' ] = (
@@ -542,10 +545,14 @@ def verify(config):
542545 # ensure DPDK/XDP settings are properly configured
543546 for iface , iface_config in config ['settings' ]['interface' ].items ():
544547 # check if selected driver is supported, but only for new interfaces
545- if iface not in config .get ('effective' , {}).get ('settings' , {}).get (
546- 'interface' , {}
548+ # or if driver was changed
549+ original_driver = config ['persist_config' ][iface ]['original_driver' ]
550+ if (
551+ iface
552+ not in config .get ('effective' , {}).get ('settings' , {}).get ('interface' , {})
553+ or 'driver_changed' in iface_config
547554 ):
548- if not verify_dev_driver (iface , iface_config ['driver' ]):
555+ if not verify_dev_driver (iface_config ['driver' ], original_driver ):
549556 raise ConfigError (
550557 f'Driver { iface_config ["driver" ]} is not compatible with interface { iface } !'
551558 )
0 commit comments