In attempting to add carrier status to my networking scripts, I
realized that the info exported through
/sys/class/net/<interface>/carrier is not updated for my network card.
This file always lists 1 whether the network cable is connected or
not.
[cable plugged in]
$ cat /sys/class/net/eth0/carrier
1
[cable unplugged]
$ cat /sys/class/net/eth0/carrier
1
At first I thought maybe this was just a sysfs issue, but ip and
ifconfig never list NO-CARRIER either.
The card is a D-Link DFE-550TX using the sundance driver. Here's what
lspci has to say about the card:
00:0f.0 Ethernet controller: D-Link System Inc DL10050 Sundance
Ethernet (rev 12)
Subsystem: D-Link System Inc DFE-550TX
Flags: bus master, medium devsel, latency 80, IRQ 10
I/O ports at 1000 [size=128]
Memory at e000a400 (32-bit, non-prefetchable) [size=512]
[virtual] Expansion ROM at 30000000 [disabled] [size=64K]
Capabilities: <access denied>
I'm running 2.6.18.1 right now. dmesg reports nothing unusual about
the driver/card/interface AFAIK.
...
sundance.c:v1.1 27-Jun-2006 Written by Donald Becker
http://www.scyld.com/network/sundance.html
...
eth0: D-Link DFE-550TX FAST Ethernet Adapter at 00011000,
00:05:5d:e5:ae:08, IRQ 10.
eth0: MII PHY found at address 1, status 0x782d advertising 01e1.
eth0: MII PHY found at address 0, status 0x782d advertising 01e1.
...
eth0: Link changed: 100Mbps, full duplex
...
I also tried 2.6.19-rc2 briefly since I saw there had been some
changes in drivers/net/sundance.c, but the behavior is the same. Same
behavior on 2.6.17.10, too. I have a couple older kernels (2.6.12,
2.6.14 and 2.6.16 series) that I haven't checked. I took a look at the
code, but I'm in way over my head.
Any ideas? If anyone would like more information, please let me know. Thanks.
--
Dan