Sometime after kernel-3.5.7, I have lost Wake On Lan functionality with my Intel e100 PCI card. There was a past closed bug filed within the past couple of years concerning this same issue, but I'm failing to find it, in order to try reopening it. As I further think about it, think there was a work around hack. Working WOL kernel-3.5.7 output: $ dmesg |grep e100 [ 0.267929] pci 0000:00:10.0: Firmware left e100 interrupts enabled; disabling [ 3.749707] e100: Intel(R) PRO/100 Network Driver, 3.5.24-k2-NAPI [ 3.749752] e100: Copyright(c) 1999-2006 Intel Corporation [ 3.772845] e100 0000:00:10.0: eth0: addr 0xfebfe000, irq 16, MAC addr XX:XX:XX:XX:XX:XX # ethtool eth0 Settings for eth0: Supported ports: [ TP MII ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full Supported pause frame use: No Supports auto-negotiation: Yes Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full Advertised pause frame use: Symmetric Advertised auto-negotiation: Yes Link partner advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full Link partner advertised pause frame use: Symmetric Receive-only Link partner advertised auto-negotiation: Yes Speed: 100Mb/s Duplex: Full Port: MII PHYAD: 1 Transceiver: internal Auto-negotiation: on Supports Wake-on: g Wake-on: g Current message level: 0x00000007 (7) drv probe link Link detected: no I'll follow-up later with kernel-3.7.10 output. Of which, I think is similar or the same, except for the fact WOL fails in later kernels.
The only difference I'm seeing with the below 3.7.10 output, it's lacking the Intel driver version and copyright lines, and the fact WOL fails in 3.7.10! # uname -a Linux localhost2.local 3.7.10-gentoo #5 SMP PREEMPT Wed Apr 3 03:08:11 AKDT 2013 i686 Pentium III (Coppermine) GenuineIntel GNU/Linux # dmesg |grep eth0 [ 0.742819] e100 0000:00:10.0 eth0: addr 0xfebfe000, irq 16, MAC addr 00:90:27:c6:b1:08 # ethtool eth0 Settings for eth0: Supported ports: [ TP MII ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full Supported pause frame use: No Supports auto-negotiation: Yes Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full Advertised pause frame use: Symmetric Advertised auto-negotiation: Yes Link partner advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full Link partner advertised pause frame use: Symmetric Receive-only Link partner advertised auto-negotiation: Yes Speed: 100Mb/s Duplex: Full Port: MII PHYAD: 1 Transceiver: internal Auto-negotiation: on Supports Wake-on: g Wake-on: g Current message level: 0x00000007 (7) drv probe link Link detected: no
I found where I was bit by this WOL bug in the past. I have a patch here submitted for "Subject: e100: Fix WOL regression" by Author: Rafael J. Wysocki <rjw@sisk.pl> sometime around Dec 16, 2008. I'm failing to find the old bug with searching the database, because it looks like this database only goes back to 2010. Unknown if the patch is relevant yet.
Seems like the patch is still applied fully to the current kernel-3.7.10. Key variable names being wol, WAKE_MAGIC, wolopts and eeprom_id_wol. I'll next grep the kernel patch logs on e100 for possible conflicts.
https://github.com/torvalds/linux/commits/master/drivers/net/ethernet/intel/e100.c
Kernel-3.5.7 was released, according to Wikipedia, July 21, 2012. Searching the changelog back to around July 21, 2012, I only see minimal changes to include, changes relevant to PCI devices, EEPROM, and what looks like some minimal renaming of variables/functions. Very minimal changes, and I don't see anything standing out significantly. No change to WOL variables/functions within e100.c that I can see, except for maybe the EEPROM and PCI possibly relevant changes. In the process of compiling 3.7.9, to see if WOL works in 3.7.9 in an attempt to narrow the search realm. (Going to be awhile on x86.)
Confirmed, kernel-3.7.9 has broken WOL too for e100! So looks like patches as far back to July 21, 2012 need to be analyzed for the cause of this bug.
# lspci -vv 00:10.0 Ethernet controller: Intel Corporation 82557/8/9/0/1 Ethernet Pro 100 (rev 08) Subsystem: Intel Corporation EtherExpress PRO/100+ Management Adapter Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 64 (2000ns min, 14000ns max), Cache Line Size: 32 bytes Interrupt: pin A routed to IRQ 16 Region 0: Memory at febfe000 (32-bit, non-prefetchable) [size=4K] Region 1: I/O ports at ef00 [size=64] Region 2: Memory at fea00000 (32-bit, non-prefetchable) [size=1M] Expansion ROM at fe900000 [disabled] [size=1M] Capabilities: [dc] Power Management version 2 Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold+) Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=2 PME- Kernel driver in use: e100
Downstream bug at https://bugs.gentoo.org/show_bug.cgi?id=472332
In reference to Tom's comment here; Tom merrily mentioned the downstream bug's location, and likely didn't mean to imply the downstream bug as the cause. ;-) This bug is still present for all e100 network chipsets as of kernel-3.12.13! I wish they'd just yank the passed two or three patches made just after the kernel-3.5.7 release, instead of letting people add more patches ontop of those patches which broke wake on lan for e100. (My knees are not happy with having to climb upstairs all the time to manually power on!)
Oops! Upon rechecking the laptop BIOS, found the WakeOnLan feature was disabled. Renabling & rebooting and verifying via "ethtool eth0" 'g' was showing active for wakeonlan. Halting and using wol worked. Going through the long process of verifying all boxes are now fixed using kernel-3.12.13-gentoo seems to work. Odd, "wakeonlan -p 7 MAC_ADDRESS" works, while "wol MAC_ADDRESS" doesn't seem to work.
Well, Dell Inspiron 8100 laptop with an e100 card is working, as it should be with Linux kernel 3.12.13-gentoo. Intel Corporation 82815 815, 82801 chipsets with an Intel 82557/8/9/0/1 Ethernet Pro 100 (rev 08) As far as the old server, only Linux kernel-3.5.7 is wakeonlan working. (I will later bit bang some more on testing Linux kernel 3.12.13-gentoo version, but it doesn't look good. Kernel version 3.5.7 just works, while 3.12.13 seems to currently ignore wakeonlan.) Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX, 82371AB/EB/MB PIIX chipsets with an Intel 82557/8/9/0/1 Ethernet Pro 100 (rev 08). And I just realized, I took the last mention host's (ie. 440BX) Linux Kernel .config from the 440BX host. So WOL should be working. Whatever fixes were applied to the laptop's Intel chipsets, should also be ported to the above 440BX chipsets.