WARNING: changing auto-negotiation setting on "eth1" is unsupported!

I am currently running Vyos on a box that is utilizing intel i-223-v interfaces. I have put out of tree drivers into it to support 100/Full. When changing configuration in vyos to 100/full, it works without an issue, but when trying to change it back to auto, I get this warning:

WARNING: changing auto-negotiation setting on “eth3” is unsupported!

Looking at the interface, even though duplex is set to auto, and speed is set to auto, the interface still shows that Auto-negotiation is not on. I can change it to auto when utilizing ethtools, but not with Vyos configuration.

It appears that changing the speed to 100 and duplex to full, it changes the “supports auto-negotiation” to False, and changing the vyos configuration to auto for speed/duplex doesn’t reset it.

Configuration:

[edit interfaces ethernet eth1]
grtcentral@gryos-off-net-test# show
address dhcp

duplex auto
hw-id 90:ec:77:88:53:c0
offload {
gro
gso
hw-tc-offload
sg
tso
}
speed auto
[edit interfaces ethernet eth1]
grtcentral@gryos-off-net-test# commit
[ interfaces ethernet eth1 ]

WARNING: changing auto-negotiation setting on “eth1” is unsupported!

[edit interfaces ethernet eth1]

    Supports auto-negotiation: No
    Supported FEC modes: Not reported
    Advertised link modes:  10baseT/Half 10baseT/Full
                            100baseT/Half 100baseT/Full
                            1000baseT/Full
                            2500baseT/Full
    Advertised pause frame use: Symmetric
    Advertised auto-negotiation: No

System version:
Version: VyOS 1.5-rolling-202501142103
Release train: current
Release flavor: generic

Built by: root@e59667030676
Built on: Tue 14 Jan 2025 21:03 UTC
Build UUID: 24529731-770b-4030-a915-d6cfd694b209
Build commit ID: 1e6cdf774be28f-dirty

Architecture: x86_64
Boot via: installed image
System type: bare metal
Secure Boot: disabled

Hardware vendor: Silicom
Hardware model: G4-2100
Hardware S/N: 90082200047
Hardware UUID: dfbbe38c-6aa9-416d-be9f-f5a5f63d9575

Copyright: VyOS maintainers and contributors

System Hardware:
00:00.0 Host bridge: Intel Corporation Atom Processor C3000 Series System Agent (rev 11)
00:04.0 Host bridge: Intel Corporation Atom Processor C3000 Series Error Registers (rev 11)
00:05.0 Generic system peripheral [0807]: Intel Corporation Atom Processor C3000 Series Root Complex Event Collector (rev 11)
00:09.0 PCI bridge: Intel Corporation Atom Processor C3000 Series PCI Express Root Port #0 (rev 11)
00:0a.0 PCI bridge: Intel Corporation Atom Processor C3000 Series PCI Express Root Port #1 (rev 11)
00:0b.0 PCI bridge: Intel Corporation Atom Processor C3000 Series PCI Express Root Port #2 (rev 11)
00:0c.0 PCI bridge: Intel Corporation Atom Processor C3000 Series PCI Express Root Port #3 (rev 11)
00:0f.0 PCI bridge: Intel Corporation Atom Processor C3000 Series PCI Express Root Port #5 (rev 11)
00:11.0 PCI bridge: Intel Corporation Atom Processor C3000 Series PCI Express Root Port #7 (rev 11)
00:12.0 System peripheral: Intel Corporation Atom Processor C3000 Series SMBus Contoller - Host (rev 11)
00:15.0 USB controller: Intel Corporation Atom Processor C3000 Series USB 3.0 xHCI Controller (rev 11)
00:18.0 Communication controller: Intel Corporation Atom Processor C3000 Series ME HECI 1 (rev 11)
00:1c.0 SD Host controller: Intel Corporation Atom Processor C3000 Series SD Host Controller (rev 11)
00:1f.0 ISA bridge: Intel Corporation Atom Processor C3000 Series LPC or eSPI (rev 11)
00:1f.2 Memory controller: Intel Corporation Atom Processor C3000 Series Power Management Controller (rev 11)
00:1f.4 SMBus: Intel Corporation Atom Processor C3000 Series SMBus controller (rev 11)
00:1f.5 Serial bus controller: Intel Corporation Atom Processor C3000 Series SPI Controller (rev 11)
00:1f.7 Non-Essential Instrumentation [1300]: Intel Corporation Device 19e1 (rev 11)
04:00.0 Ethernet controller: Intel Corporation Ethernet Controller I225-V (rev 03)
05:00.0 Ethernet controller: Intel Corporation Ethernet Controller I225-V (rev 03)
06:00.0 Ethernet controller: Intel Corporation Ethernet Controller I225-V (rev 03)
07:00.0 Ethernet controller: Intel Corporation Ethernet Controller I225-V (rev 03)

Eth1 Driver:
driver: igc
version: 6.6.69-vyos
firmware-version: 1073:8754
expansion-rom-version:
bus-info: 0000:04:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: yes

Looking at another box (intext x553 interfaces) it doesn’t change that ‘supports auto-negotiation’
magnetic@satellite:~$ sudo ethtool enp4s0f0
Settings for enp4s0f0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supported pause frame use: Symmetric
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised pause frame use: Symmetric
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Speed: 1000Mb/s
Duplex: Full
Auto-negotiation: on
Port: Twisted Pair
PHYAD: 1
Transceiver: internal
MDI-X: off (auto)
Supports Wake-on: pumbg
Wake-on: g
Current message level: 0x00000007 (7)
drv probe link
Link detected: yes
magnetic@satellite:~$ sudo ethtool -s enp4s0f0 autoneg off speed 100 duplex full
magnetic@satellite:~$ sudo ethtool enp4s0f0
Settings for enp4s0f0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supported pause frame use: Symmetric
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: Not reported
Advertised pause frame use: Symmetric
Advertised auto-negotiation: No
Advertised FEC modes: Not reported
Speed: 100Mb/s
Duplex: Full
Auto-negotiation: off
Port: Twisted Pair
PHYAD: 1
Transceiver: internal
MDI-X: off (auto)
Supports Wake-on: pumbg
Wake-on: g
Current message level: 0x00000007 (7)
drv probe link
Link detected: yes

This is becase auto-negotiation doesn’t support anymore synce the middle of september, 2024.
Despite the documentation stated oppsite.
1.5 night builds: No ethernet adapters avalable in Citrix Hypervisor 8.2 Environment - Bugs - VyOS Forums

There was my topic in dare attempt to resolve the issue for inplace image upgrade.
But somewere i’d read that duplex auto and speed auto would not supported.

Since 20240916 any configuration shouldn’t have these settings.

But that thread is about drivers and not the setting itself.

IEEE mandates that its mandatory to use autoneg for speeds at 1Gbps and above.

Having autoneg enabled also means that auto MDI/MDIX is enabled which will figure out the polarity of the TP-cable (so it no longer matter if you use a straight or crossover cable to connect a router to a router or a router to a host (or a host to a host)).

So if you want “static” speed/duplex with 1Gbps and above you will limit them with the advertise command.

That is your NIC will then only advertise for example 1Gbps/Full Duplex as the only option while having autoneg still being enabled.

However for 10 and 100Mbps you can disable autoneg but that would also disable the auto MDI/MDIX feature.

It seems like VyOS currently is missing the “advertise” command according to Ethernet — VyOS 1.5.x (circinus) documentation which gives if you set speed/duplex this will set it the old fashioned way and disable autoneg at the same time.

Regarding fixing the issue OP have I would try to manually edit the /config/boot.config file and remove the speed and duplex lines for the particular interface, save the file and reboot the box. Now it should get back to being auto/auto with autoneg enabled which can be confirmed using ethtool or by using:

show interfaces ethernet <interface> physical

https://docs.vyos.io/en/latest/configuration/interfaces/ethernet.html#opcmd-show-interfaces-ethernet-interface-physical

I created this feature request 1.5 years ago on this topic:

1 Like

Thanks guys, think we got it figured out. It seems to be just with the IGC drivers that we are utilizing. For whatever reason, the json output vs the output of ethtools is flipped. So if the “supports auto-negotiation” is set to True, then json shows as false, and vice versa. Little hacky, but updated the vyos config file to this and it is working.

    if self._driver_name == 'igc':
        self._base_settings["supports-auto-negotiation"] = True
        if self._base_settings["auto-negotiation"] is True:
            self._base_settings["auto-negotiation"] = False
        elif self._base_settings["auto-negotiation"] is False:
            self._base_settings["auto-negotiation"] = True

Could you open a bug report on https://vyos.dev/ ?
Thanks