You are not logged in.
The problem is that my ethernet controller does not pick up a carrier, even upon boot. For some reason, it will work if I disconnect it, and using a different cable, connect it just momentarily to another computer, then disconnect it and reconnect it to my router. Then it picks up a carrier, at least until I down the interface and bring it back up, which effectively kills it again. I'm using the r8169 driver.
I know that the cable I'm using to connect to the router isn't defective as I've tested it with another machine, so I think the problem lies with the ethernet controller.
Output of dmesg | tail after unloading and reloading the r8169 module:
[ 105.055927] r8169 0000:03:00.0: can't disable ASPM; OS doesn't have ASPM control
[ 105.060944] r8169 0000:03:00.0: irq 52 for MSI/MSI-X
[ 105.061359] r8169 0000:03:00.0 eth0: RTL8168g/8111g at 0xffffc90000c7c000, e0:3f:49:10:e2:31, XID 0c000800 IRQ 52
[ 105.061366] r8169 0000:03:00.0 eth0: jumbo features [frames: 9200 bytes, tx checksumming: ko]
[ 105.122706] r8169 0000:03:00.0 eth0: link down
[ 105.122720] r8169 0000:03:00.0 eth0: link down
Output of the relevant section from lshw:
description: Ethernet interface
product: RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
vendor: Realtek Semiconductor Co., Ltd.
physical id: 0
bus info: pci@0000:03:00.0
logical name: eth0
version: 0c
serial: e0:3f:49:10:e2:31
size: 10Mbit/s
capacity: 1Gbit/s
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress msix vpd bus_master cap_list ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt 1000bt-fd autonegotiation
configuration: autonegotiation=on broadcast=yes driver=r8169 driverversion=2.3LK-NAPI duplex=half firmware=rtl8168g-2_0.0.1 02/06/13 latency=0 link=no multicast=yes port=MII speed=10Mbit/s
Could it be the firmware that's not cooperating?
I've tried installing the r8168 module from community, but modprobe claims it can't locate the module after.
Last edited by tsani (2014-06-19 12:44:57)
Offline
UPDATE:
After compiling and install Realtek's driver by hand (which in and of itself didn't do anything), I was looking through their docs: they outline a way to force the NIC to go up:
# ethtool -s eth0 speed 100 duplex full autoneg off
The key seems to have been to turn off autonegociation. I'm not sure why the autonegotiation would be causing the problem per se. Is it that the NIC was unable to detect the cable plugged in despite it actually being plugged in, so it would never negociate a link?
In any case, does anyone know how to make the autonegociation setting permanent? I figure that just doing it through ethtool will only persist until reboot.
Offline
If you are using netctl, something like the following may work:
# /etc/systemd/system/eth0_phy.service
[Unit]
Description=Custom phy setting for eth0
Before=netctl@eth0.service
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=ethtool -s eth0 speed 100 duplex full autoneg off
ExecStop=ethtool -s eth0 autoneg on
[Install]
RequiredBy=netctl@eth0.service
Install the above file, then run
systemctl daemon-reload
netctl reenable eth0
netctl restart eth0
That said, there is probably an underlying hardware problem which will continue to make the link unreliable. Since autonegotiation succeeds with a different link partner, I would suspect the router. Did you try a different port on the router?
Offline