sky2 driver version 1.22 sky2 0000:02:00.0: v1.22 addr 0xf0000000 irq 185 Yukon-2 EC Ultra rev 2 sky2 eth0: addr 00:17:42:6c:99:06 sky2 eth0: enabling interface sky2 eth0: ram buffer 0K 02:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8055 PCI-E Gigabit Ethernet Controller (rev 14) 02:00.0 0200: 11ab:4363 (rev 14) 02:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8055 PCI-E Gigabit Ethernet Controller (rev 14) Subsystem: Fujitsu Limited. Unknown device 139a Flags: bus master, fast devsel, latency 0, IRQ 130 Memory at f0000000 (64-bit, non-prefetchable) [size=16K] I/O ports at 2000 [size=256] [virtual] Expansion ROM at 52000000 [disabled] [size=128K] Capabilities: [48] Power Management version 3 Capabilities: [50] Vital Product Data Capabilities: [5c] Message Signalled Interrupts: 64bit+ Queue=0/0 Enable+ Capabilities: [e0] Express Legacy Endpoint IRQ 0 Capabilities: [100] Advanced Error Reporting Linux localhost.localdomain 2.6.18-185.el5 #1 SMP Thu Jan 14 16:43:14 EST 2010 i686 i686 i386 GNU/Linux Issue happens on either bootup or with rmmod/modprobe.
Procedure: (01:32:32 PM) dcbw: rmmod sky2 (01:32:37 PM) dcbw: <cable unplugged> (01:32:40 PM) dcbw: modprobe sky2 (01:33:00 PM) dcbw: ifconfig eth0 (01:33:02 PM) dcbw: <device is down> (01:33:05 PM) dcbw: ethtool eth0 (01:33:09 PM) dcbw: <link detected: yes> (01:33:13 PM) dcbw: ifconfig eth0 up (01:33:21 PM) dcbw: ethtool eth0 (01:33:25 PM) dcbw: <link detected: yes> (01:33:33 PM) dcbw: <plug in cable> If there is no cable plugged in, the interface should not report ethtool carrier state as "on". Decision matrix goes like this: 1) if the driver knows it cannot support link detection with this hardware, carrier should always be "on" 2) otherwise, if the driver can do link detection when the device is !IFF_UP (becuase it keeps the PHY powered or something while the device is down) then the driver should report correct link state 3) if the driver cannot do link detection while the device is !IFF_UP (becuase the PHY is unpowered in this state or whatever) then it should report *no* carrier until the device is set IFF_UP, at which point carrier detection should be performed and the link state updated
Note that mii-tool *always* reports correct carrier state. It's only ethtool that's wrong. So the driver likely isn't hitting up netif_carrier_on/netif_carrier_off at the right times during module initialization?
Created attachment 387155 [details] sky2-55-fix.patch You are correct. Carrier state wasn't initialized to off in the probe routine. It had already been noticed upstream, so I pulled the two patches that fixed link-state issues rather then reinventing the wheel. Hopefully this will solve it. If not, I'll dig up my sky2 (I think I've got one around) and see if I can fix it.
The patch appears to fix the initial carrier state issue for this machine. Rebooting to ensure that's the case.
Definitely a regression, using 5.4's 2.6.18-164.el5 kernel the carrier state is 'off' at boot and modprobe. But the attached patch fixes the issue.
This request was evaluated by Red Hat Product Management for inclusion in a Red Hat Enterprise Linux maintenance release. Product Management has requested further review of this request by Red Hat Engineering, for potential inclusion in a Red Hat Enterprise Linux Update release for currently deployed products. This request is not yet committed for inclusion in an Update release.
An advisory has been issued which should help the problem described in this bug report. This report is therefore being closed with a resolution of ERRATA. For more information on therefore solution and/or where to find the updated files, please follow the link below. You may reopen this bug report if the solution does not work for you. http://rhn.redhat.com/errata/RHSA-2010-0178.html