Hello everyone.
I’m getting a hard time with Qualcomm Atheros AR8151 onboard LAN with Debian. It usually drops to 100Mb/s and freezes the network altogether
Settings for enp1s0: Supported ports: [ TP ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Supported pause frame use: No Supports auto-negotiation: Yes Supported FEC modes: Not reported Advertised link modes: Not reported Advertised pause frame use: No Advertised auto-negotiation: Yes Advertised FEC modes: Not reported Speed: 100Mb/s Duplex: Full Auto-negotiation: on Port: Twisted Pair PHYAD: 0 Transceiver: internal MDI-X: Unknown Supports Wake-on: pg Wake-on: d Current message level: 0x0000003f (63) drv probe link timer ifdown ifup Link detected: yes [ 3.004591] atl1c 0000:01:00.0 enp1s0: renamed from eth0
[ 37.754972] atl1c 0000:01:00.0: atl1c: enp1s0 NIC Link is Up<100 Mbps Full Duplex></br> [ 45.071291] atl1c 0000:01:00.0: atl1c: enp1s0 NIC Link is Up<100 Mbps Full Duplex> [ 45.799689] atl1c 0000:01:00.0: atl1c: enp1s0 NIC Link is Up<100 Mbps Full Duplex>
any tips of what can be done around here? I’m using kernel 6.12.111+deb13-amd64
If it’s on a card, ditch it and replace it with a better one. If not, and you’ve got a spare slot, buy a new card.
The AR8151 (atl1c driver) is a known-troublesome NIC, and what you’re seeing is a classic negotiation failure — it’s latching at 100Mb/s and then wedging under load. A few things worth trying, in order of effort:
- Force the speed on the driver side before suspecting hardware. atl1c has had years of bugs around gigabit autoneg; you can pin the link with ethtool in a systemd unit:
[Service] ExecStart=/usr/sbin/ethtool -s enp1s0 speed 100 duplex full autoneg offIf it stops freezing at a pinned 100Mb/s, you’ve confirmed it’s the gigabit negotiation path in the PHY, not a cabling/switch issue (though do swap the cable first — a marginal Cat5e can cause exactly this downshift-then-die pattern).
-
Disable ASPM and check MSI interrupts. These onboard Atheros parts share bugs with power management: boot with
pcie_aspm=offand tryethtool -K enp1s0 gro off/ checkcat /proc/interrupts | grep atl1cfor interrupt storms. Frozen link with “Link detected: yes” often means the MAC thinks the link is up while the ring buffers have stopped being serviced. -
Try the newer atl1c from a backports kernel — Debian stable’s in-tree atl1c is old, and several link-stability fixes landed in later kernels. A live-USB of a recent distro is the fastest A/B test: if recent-kernel live media holds a gigabit link fine on the same hardware, it’s purely a driver version issue and a kernel upgrade fixes it.
-
The pragmatic fix: these chips cost pennies to replace. A used Intel i210/i340 PCIe NIC (~¥30-50 / $5-10 on the second-hand market) is the standard selfhosted escape hatch — Intel NICs are bulletproof under Linux and you stop burning evenings on a consumer PHY. Most of us in this community eventually did exactly that.
If it freezes even at 100Mb/s after the ethtool pin, that leans toward ASPM/power-management rather than negotiation, so do step 2 before buying hardware.
deleted by creator
Dumb question, but have you ruled out the cable being bad or corrosion in the socket? Dropping to 100 is usually something bad with the cable.
no tdumb at all. I tried other cables, but I never got a fully cleanup on the socket itself. As it was an auction purchase, I guess some drops of deoxit and a good scrub won’t make things any worse. Thanks!
Does it persist if you change the cable, the device on the far side, the OS? What’s in the log when it drops?
The atl1c driver is the main suspect — it’s been flaky for over a decade, and “negotiates 100 Mb/s then freezes” is its signature failure mode. Things to try, roughly in order:
- PCIe ASPM / power management bugs — atl1c has known issues with ASPM. Test with
pcie_aspm=offon the kernel cmdline; also trysudo ethtool --set-eee enp1s0 eee offif EEE is advertised. - Force the link as a diagnostic:
sudo ethtool -s enp1s0 speed 1000 duplex full autoneg off. If it holds at gigabit, you’ve confirmed it’s the autoneg path. (Revert afterward — forced mode without autoneg breaks link on some switches.) - Watch dmesg at the moment of the freeze — if you see atl1c link-flap messages or DMA errors right before the network dies, that’s the driver wedging, not the cable. Check if a newer 6.12 point release helps, but the atl1c code is largely the same aging code it’s always been.
- Hardware reality check: it’s an auction box, so socket oxidation is a real possibility — the DeoxIT + scrub suggestion in the other comment is free and worth doing. But if it negotiates 100 regardless of cable and switch, the PHY or board trace is probably damaged.
Honest recommendation: this is a 15-year-old board. A ~$10 Intel NIC (i210/i211, or a used Intel PCIe card) with the rock-solid igb/igc driver will save you more time than debugging atl1c ever will — it’ll negotiate gigabit all day.
Did you really have to copy two slightly different AI answers into this thread?
Three 🙄
- PCIe ASPM / power management bugs — atl1c has known issues with ASPM. Test with
The atl1c driver is the culprit — it’s been flaky for years, and 100 Mb/s lockups are its signature failure mode. Things to try, roughly in order:
- Force 1000/full with autoneg off as a test:
sudo ethtool -s enp1s0 speed 1000 duplex full autoneg off. If it holds, at least you’ve confirmed it’s negotiation-related. (Note: forcing autoneg off can break link with some switches, so revert if it drops entirely.) - Disable PCIe ASPM — atl1c has known bugs with power management. Add
pcie_aspm=offto your kernel cmdline, or trysudo modprobe atl1cafter blacklisting and see if there are module options (modinfo atl1c). Also disable EEE if ethtool shows it:ethtool --set-eee enp1s0 eee off. - Check dmesg at the moment of the freeze — if you see
atl1c: ... link is up 100resets or DMA errors, that’s the driver. Kernel 6.12 still carries the same aging atl1c code; asudo apt install linux-image-amd64bump to the latest point release sometimes helps, but don’t expect miracles. - Hardware reality check: since it’s an auction purchase, oxidation on the socket is a real suspect (the other commenter’s DeoxIT suggestion is worth doing). But if it consistently negotiates 100 Mb/s regardless of cable/switch, the PHY or the board trace is likely damaged — AR8151 boards are 15-year-old hardware at this point.
Honestly, if this box is meant to be a server, the cheapest durable fix is a $10 Intel-based NIC (i210/i211 or even an old Intel PCIe card) — igb/igc drivers are rock solid and it’ll negotiate 1 Gb/s all day. That’s less time than you’ll spend debugging atl1c.
- Force 1000/full with autoneg off as a test:
What are you plugged into?
I admit that at this very moment its running on a generic switch. I tried other cables, but no change.
That may be your problem. Do you have multiple 10G cards? Try doing a direct link between two machines. Auto MDIX will take care of the electrical connection but you will need to set static IPs in order to run a iperf3 test
Additionally, make sure you are using cat6/6a cables



