Human TLDR
Using Asahi NixOS, connection stuck at super slow, until LLM figure out manual renegotiations and added system service on boot. idk why. all below is written by gpt55:
Summary
On an Apple Silicon Mac running NixOS Asahi/nixos-apple-silicon, the onboard Aquantia/Atlantic AQC113 (atlantic) sometimes boots or renegotiates at 10Mb/s or 100Mb/s instead of 1000Mb/s. Manual renegotiation with sudo ethtool -r end0 immediately fixes the link to 1000Mb/s without reboot.
This looks like an initial PHY/autoneg initialization or timing issue specific to Linux/Asahi on Apple AQC113, possibly interacting with the Linksys Velop switch PHY. The same hardware/cable/router port negotiates 1000baseT under macOS, and Linux can also negotiate 1000baseT after ethtool -r.
I searched existing issues and found #483, but that seems like a high-load RX hang rather than initial autoneg downshift/flapping.
Host/context
- Machine: Apple Silicon Mac running NixOS Asahi/nixos-apple-silicon
- Kernel: Linux
m1n1 6.19.14 aarch64
- Ethernet interface:
end0
- PCI device: Aquantia Corp. AQtion AQC113 NBase-T/IEEE 802.3an Ethernet Controller [Antigua 10G]
[1d6a:04c0] rev 03
- Subsystem: Apple Inc.
[106b:0223]
- Linux driver:
atlantic
- Driver version: 6.19.14
- Firmware version reported by ethtool: 1.4.32
- Router: Linksys Velop AX4200 / MX42-EU, firmware 1.0.13.216602
- Cable: Cat6; multiple Cat6 cables tried
- macOS on same machine/same cable/same router port negotiates 1000baseT full duplex with EEE
Symptom
On Linux, Ethernet sometimes boots/renegotiates at 10Mb/s or 100Mb/s instead of 1000Mb/s. Throughput matches negotiated speed (~1 MB/s at 10Mb/s, ~10 MB/s at 100Mb/s). WiFi/Tailscale unrelated.
Kernel link-change sequence shows downshift/flapping:
atlantic 0000:03:00.0 end0: atlantic: link change old 0 new 100
atlantic 0000:03:00.0 end0: atlantic: link change old 100 new 0
atlantic 0000:03:00.0 end0: atlantic: link change old 0 new 1000
atlantic 0000:03:00.0 end0: atlantic: link change old 1000 new 0
atlantic 0000:03:00.0 end0: atlantic: link change old 0 new 100
atlantic 0000:03:00.0 end0: atlantic: link change old 100 new 0
atlantic 0000:03:00.0 end0: atlantic: link change old 0 new 10
atlantic 0000:03:00.0 end0: atlantic: link change old 10 new 0
atlantic 0000:03:00.0 end0: atlantic: link change old 0 new 1000
atlantic 0000:03:00.0 end0: atlantic: link change old 1000 new 0
atlantic 0000:03:00.0 end0: atlantic: link change old 0 new 100
Before workaround
Command:
Relevant output before ethtool -r:
Supported link modes: 10baseT/Full
100baseT/Full
1000baseT/Full
10000baseT/Full
2500baseT/Full
5000baseT/Full
Advertised link modes: 10baseT/Full
100baseT/Full
1000baseT/Full
10000baseT/Full
2500baseT/Full
5000baseT/Full
Advertised auto-negotiation: Yes
Link partner advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Link partner advertised auto-negotiation: No
Speed: 100Mb/s
Duplex: Full
Auto-negotiation: on
Link detected: yes
EEE status on Linux before workaround:
$ ethtool --show-eee end0
EEE settings for end0:
EEE status: disabled
Tx LPI: disabled
Supported EEE link modes: 1000baseT/Full
10000baseT/Full
Advertised EEE link modes: Not reported
Link partner advertised EEE link modes: Not reported
Driver/device info:
$ ethtool -i end0
driver: atlantic
version: 6.19.14
firmware-version: 1.4.32
bus-info: 0000:03:00.0
$ lspci -nnk
03:00.0 Ethernet controller [0200]: Aquantia Corp. AQtion AQC113 NBase-T/IEEE 802.3an Ethernet Controller [Antigua 10G] [1d6a:04c0] (rev 03)
Subsystem: Apple Inc. Device [106b:0223]
Kernel driver in use: atlantic
Kernel modules: atlantic
Workaround
Manual renegotiation fixes the link immediately without reboot:
sudo ethtool -r end0
sleep 7
ethtool end0
After workaround:
Link partner advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Speed: 1000Mb/s
Duplex: Full
Auto-negotiation: on
Link detected: yes
/sys/class/net/end0/speed = 1000
macOS comparison
Same machine/cable/router port under macOS reports:
Hardware: Apple AQC113 / Aquantia 10G
Current link: 1000baseT <full-duplex,flow-control,energy-efficient-ethernet>
Speed: 1 Gb/s
Local supported modes: 10M, 100M, 1G, 2.5G, 5G, 10G
Max link speed: 10 Gb/s
Interpretation
Physical hardware/cable/router port can do gigabit because macOS negotiates 1000baseT on the same path, and Linux sudo ethtool -r end0 also renegotiates to 1000baseT. Failure appears to be Linux/Asahi atlantic initial PHY/autoneg initialization/timing issue on Apple AQC113, possibly interaction with Linksys Velop switch PHY. EEE is disabled under Linux before the workaround, so this is not fixed by disabling EEE alone.
If this belongs in netdev/atlantic instead of Asahi, I can forward it there; filing here first because this is Apple AQC113 hardware under Asahi Linux.
Useful repro/diagnostic commands
uname -a
sudo dmesg | grep -iE 'atlantic|aqc|macsmc'
lspci -nnk | sed -n '/Ethernet/,/^$/p'
ethtool end0
ethtool -i end0
ethtool --show-eee end0
cat /sys/class/net/end0/{operstate,carrier,speed,duplex}
Workaround command:
Human TLDR
Using Asahi NixOS, connection stuck at super slow, until LLM figure out manual renegotiations and added system service on boot. idk why. all below is written by gpt55:
Summary
On an Apple Silicon Mac running NixOS Asahi/nixos-apple-silicon, the onboard Aquantia/Atlantic AQC113 (
atlantic) sometimes boots or renegotiates at 10Mb/s or 100Mb/s instead of 1000Mb/s. Manual renegotiation withsudo ethtool -r end0immediately fixes the link to 1000Mb/s without reboot.This looks like an initial PHY/autoneg initialization or timing issue specific to Linux/Asahi on Apple AQC113, possibly interacting with the Linksys Velop switch PHY. The same hardware/cable/router port negotiates 1000baseT under macOS, and Linux can also negotiate 1000baseT after
ethtool -r.I searched existing issues and found #483, but that seems like a high-load RX hang rather than initial autoneg downshift/flapping.
Host/context
m1n16.19.14 aarch64end0[1d6a:04c0]rev 03[106b:0223]atlanticSymptom
On Linux, Ethernet sometimes boots/renegotiates at 10Mb/s or 100Mb/s instead of 1000Mb/s. Throughput matches negotiated speed (~1 MB/s at 10Mb/s, ~10 MB/s at 100Mb/s). WiFi/Tailscale unrelated.
Kernel link-change sequence shows downshift/flapping:
Before workaround
Command:
Relevant output before
ethtool -r:EEE status on Linux before workaround:
Driver/device info:
Workaround
Manual renegotiation fixes the link immediately without reboot:
After workaround:
macOS comparison
Same machine/cable/router port under macOS reports:
Interpretation
Physical hardware/cable/router port can do gigabit because macOS negotiates 1000baseT on the same path, and Linux
sudo ethtool -r end0also renegotiates to 1000baseT. Failure appears to be Linux/Asahiatlanticinitial PHY/autoneg initialization/timing issue on Apple AQC113, possibly interaction with Linksys Velop switch PHY. EEE is disabled under Linux before the workaround, so this is not fixed by disabling EEE alone.If this belongs in netdev/atlantic instead of Asahi, I can forward it there; filing here first because this is Apple AQC113 hardware under Asahi Linux.
Useful repro/diagnostic commands
Workaround command: