diff options
Diffstat (limited to 'src')
| -rwxr-xr-x | src/conf_mode/interfaces-ethernet.py | 3 | ||||
| -rwxr-xr-x | src/migration-scripts/interfaces/20-to-21 | 15 | 
2 files changed, 17 insertions, 1 deletions
diff --git a/src/conf_mode/interfaces-ethernet.py b/src/conf_mode/interfaces-ethernet.py index 27c4a7c38..889f4856f 100755 --- a/src/conf_mode/interfaces-ethernet.py +++ b/src/conf_mode/interfaces-ethernet.py @@ -85,7 +85,8 @@ def verify(ethernet):          speed = ethernet['speed']          duplex = ethernet['duplex']          if not ethtool.check_speed_duplex(speed, duplex): -            raise ConfigError(f'Adapter does not support speed "{speed}" and duplex "{duplex}"!') +            raise ConfigError(f'Adapter does not support changing speed and duplex '\ +                              f'settings to: {speed}/{duplex}!')      if 'ring_buffer' in ethernet:          max_rx = ethtool.get_rx_buffer() diff --git a/src/migration-scripts/interfaces/20-to-21 b/src/migration-scripts/interfaces/20-to-21 index 4b0e70d35..bd89dcdb4 100755 --- a/src/migration-scripts/interfaces/20-to-21 +++ b/src/migration-scripts/interfaces/20-to-21 @@ -89,6 +89,21 @@ for ifname in config.list_nodes(base):      if config.exists(base + [ifname, 'offload', 'ufo']):          config.delete(base + [ifname, 'offload', 'ufo']) +    # Also while processing the interface configuration, not all adapters support +    # changing the speed and duplex settings. If the desired speed and duplex +    # values do not work for the NIC driver, we change them back to the default +    # value of "auto" - which will be applied if the CLI node is deleted. +    speed_path = base + [ifname, 'speed'] +    duplex_path = base + [ifname, 'duplex'] +    # speed and duplex must always be set at the same time if not set to "auto" +    if config.exists(speed_path) and config.exists(duplex_path): +        speed = config.return_value(speed_path) +        duplex = config.return_value(duplex_path) +        if speed != 'auto' and duplex != 'auto': +            if not eth.check_speed_duplex(speed, duplex): +                config.delete(speed_path) +                config.delete(duplex_path) +  try:      with open(file_name, 'w') as f:          f.write(config.to_string())  | 
