linux/drivers/net
Tobias Diedrich 34edaa8832 net: forcedeth: Fix wake-on-lan regression
Commit f55c21fd9a ("forcedeth: call
restore mac addr in nv_shutdown path"), which was introduced to fix
the regression tracked at
http://bugzilla.kernel.org/show_bug.cgi?id=11358 causes the
wake-on-lan mac to be reversed in the shutdown path.  Apparently the
forcedeth situation is rather messy in that the mac we need to
writeback for a subsequent modprobe to work is exactly the reverse of
what is needed for proper wake-on-lan.

The following patch explains the situation in the comments and
makes the call to nv_restore_mac_addr() conditional (only called if
we are not really going for poweroff).

Tobias Diedrich wrote:
> Hmm, I had not tried WOL for some time.
> With 2.6.29-rc3 is see the following behaviour:
> 
> State            WOL Behaviour
> ------------------------------
> shutdown         reversed MAC
> disk/shutdown    reversed MAC
> disk/platform    OK
> 
> Apparently nv_restore_mac_addr() restores the MAC in the wrong order
> for WOL (at least for my PCI_DEVICE_ID_NVIDIA_NVENET_15).  platform
> works, because the MAC is not touched in the nv_suspend() path.
> 
> A possible fix might be to only call nv_restore_mac_addr() if
> system_state != SYSTEM_POWER_OFF.

With the following patch:
shutdown         OK
disk/shutdown    OK
disk/platform    OK
kexec            OK

Signed-off-by: Tobias Diedrich <ranma+kernel@tdiedrich.de>
Tested-by: Philipp Matthias Hahn <pmhahn@titan.lahn.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-02-16 00:13:20 -08:00
..
appletalk
arcnet
arm
atl1e
atlx
bonding
can
chelsio
cris
cxgb3 cxgb3: Fix lro switch 2009-02-04 16:31:39 -08:00
e1000 e1000: Fix PCI enable to honor the need_ioport flag 2009-02-03 15:18:01 -08:00
e1000e
ehea
enic
fs_enet
hamradio
ibm_newemac net: variables reach -1, but 0 tested 2009-02-02 21:39:02 -08:00
igb igb: fix link reporting when using sgmii 2009-01-31 00:53:18 -08:00
irda IRDA: cnt is off by 1 2009-02-12 16:42:31 -08:00
ixgb
ixgbe
ixp2000
mlx4
myri10ge
netxen netxen: fix compile waring "label ‘set_32_bit_mask’ defined but not used" on IA64 platform 2009-02-12 16:57:12 -08:00
pcmcia pcnet_cs: Fix misuse of the equality operator. 2009-02-03 15:14:05 -08:00
phy mdio-gpio: Add mdc pin direction initialization 2009-02-10 17:11:10 -08:00
qlge qlge: bugfix: Add missing rx buf clean index on early exit. 2009-02-12 16:38:34 -08:00
sfc sfc: Replace stats_enabled flag with a disable count 2009-01-30 14:06:33 -08:00
skfp drivers/net/skfp: if !capable(CAP_NET_ADMIN): inverted logic 2009-01-29 17:32:20 -08:00
tokenring
tulip de2104x: force correct order when writing to rx ring 2009-02-08 17:50:34 -08:00
usb hso: add new device id's 2009-02-03 15:13:26 -08:00
wan
wimax
wireless iwlwifi: fix suspend/resume and its usage of pci saved state 2009-02-11 11:27:21 -05:00
3c59x.c
3c501.c
3c501.h
3c503.c
3c503.h
3c505.c 3c505: do not set pcb->data.raw beyond its size 2009-02-12 16:52:31 -08:00
3c505.h
3c507.c
3c509.c 3c509: Fix resume from hibernation for PnP mode. 2009-02-06 22:04:08 -08:00
3c515.c
3c523.c
3c523.h
3c527.c
3c527.h
7990.c
7990.h
8139cp.c
8139too.c
8390.c
8390.h
8390p.c
82596.c
a2065.c
a2065.h
ac3200.c
acenic.c
acenic.h
amd8111e.c
amd8111e.h
apne.c
ariadne.c
ariadne.h
at1700.c
atarilance.c
atp.c
atp.h
au1000_eth.c
au1000_eth.h
ax88796.c
b44.c
b44.h
bfin_mac.c
bfin_mac.h
bmac.c
bmac.h
bnx2.c bnx2: Update version to 1.9.2 and copyright. 2009-02-12 16:54:48 -08:00
bnx2.h bnx2: Update version to 1.9.2 and copyright. 2009-02-12 16:54:48 -08:00
bnx2_fw.h bnx2: Update 5706/5708 firmware. 2009-02-12 16:53:22 -08:00
bnx2_fw2.h bnx2: Update 5709 firmware. 2009-02-12 16:53:48 -08:00
bnx2x.h
bnx2x_fw_defs.h
bnx2x_hsi.h
bnx2x_init.h
bnx2x_init_values.h
bnx2x_link.c
bnx2x_link.h
bnx2x_main.c
bnx2x_reg.h
bsd_comp.c
cassini.c cassini/sungem: limit reaches -1, but 0 tested 2009-02-02 23:19:50 -08:00
cassini.h
cpmac.c
cs89x0.c
cs89x0.h
de600.c
de600.h
de620.c
de620.h
declance.c
defxx.c
defxx.h
depca.c
depca.h
dl2k.c
dl2k.h
dm9000.c
dm9000.h
dummy.c
e100.c
e2100.c
eepro.c
eexpress.c
eexpress.h
enc28j60.c
enc28j60_hw.h
epic100.c
eql.c
es3210.c
eth16i.c
ewrk3.c
ewrk3.h
fealnx.c
fec.c
fec.h
fec_mpc52xx.c
fec_mpc52xx.h
fec_mpc52xx_phy.c
forcedeth.c net: forcedeth: Fix wake-on-lan regression 2009-02-16 00:13:20 -08:00
gianfar.c gianfar: Fix boot hangs while bringing up gianfar ethernet 2009-02-09 14:59:30 -08:00
gianfar.h gianfar: Fix BD_LENGTH_MASK definition 2009-02-04 16:37:40 -08:00
gianfar_ethtool.c
gianfar_mii.c gianfar: Fix Wake-on-LAN support 2009-01-29 17:31:13 -08:00
gianfar_mii.h
gianfar_sysfs.c
hamachi.c
hp-plus.c
hp.c
hp100.c
hp100.h
hplance.c
hplance.h
hydra.c
ibmlana.c
ibmlana.h
ibmveth.c
ibmveth.h
ifb.c
ioc3-eth.c
ipg.c
ipg.h
isa-skeleton.c
iseries_veth.c
jazzsonic.c
jme.c
jme.h
Kconfig
korina.c
lance.c
lasi_82596.c
lib8390.c
lib82596.c
LICENSE.SRC
lne390.c
loopback.c
lp486e.c
mac89x0.c
mac8390.c
macb.c
macb.h
mace.c
mace.h
macmace.c
macsonic.c
macvlan.c
Makefile
meth.c
meth.h
mii.c
mipsnet.c
mv643xx_eth.c
mvme147.c
myri_code.h
myri_sbus.c
myri_sbus.h
natsemi.c
ne-h8300.c
ne.c
ne2.c
ne2k-pci.c
ne3210.c
netconsole.c
netx-eth.c
ni52.c
ni52.h
ni65.c
ni65.h
ni5010.c
ni5010.h
niu.c
niu.h
ns83820.c
pasemi_mac.c
pasemi_mac.h
pasemi_mac_ethtool.c
pci-skeleton.c
pcnet32.c
plip.c
ppp_async.c
ppp_deflate.c
ppp_generic.c
ppp_mppe.c
ppp_mppe.h
ppp_synctty.c
pppoe.c
pppol2tp.c
pppox.c
ps3_gelic_net.c
ps3_gelic_net.h
ps3_gelic_wireless.c powerpc/ps3: Printing fixups for l64 to ll64 convserion drivers/net 2009-02-02 17:08:24 +11:00
ps3_gelic_wireless.h
qla3xxx.c
qla3xxx.h
r6040.c
r8169.c r8169: Don't update statistics counters when interface is down 2009-02-06 21:49:57 -08:00
rionet.c
rrunner.c
rrunner.h
s2io-regs.h
s2io.c
s2io.h
sb1000.c
sb1250-mac.c
sc92031.c
seeq8005.c
seeq8005.h
sgiseeq.c
sgiseeq.h
sh_eth.c
sh_eth.h
sis190.c
sis900.c
sis900.h
skge.c
skge.h
sky2.c sky2: fix hard hang with netconsoling and iface going up 2009-01-30 14:06:26 -08:00
sky2.h
slhc.c
slip.c
slip.h
smc-mca.c
smc-ultra.c
smc-ultra32.c
smc91x.c
smc91x.h
smc911x.c net: variables reach -1, but 0 tested 2009-02-02 21:39:02 -08:00
smc911x.h
smc9194.c
smc9194.h
smsc911x.c smsc911x: timeout reaches -1 2009-01-29 17:30:00 -08:00
smsc911x.h
smsc9420.c net: variables reach -1, but 0 tested 2009-02-02 21:39:02 -08:00
smsc9420.h
sni_82596.c
sonic.c
sonic.h
Space.c
spider_net.c
spider_net.h
spider_net_ethtool.c
starfire.c
stnic.c
sun3_82586.c
sun3_82586.h
sun3lance.c sun3: print when lance_open() fails 2009-02-12 16:40:20 -08:00
sunbmac.c
sunbmac.h
sundance.c
sungem.c sungem: Soft lockup in sungem on Netra AC200 when switching interface up 2009-02-06 22:00:36 -08:00
sungem.h
sungem_phy.c cassini/sungem: limit reaches -1, but 0 tested 2009-02-02 23:19:50 -08:00
sungem_phy.h
sunhme.c sunhme: Fix Quattro HME irq registration on proble failures 2009-02-10 17:29:42 -08:00
sunhme.h
sunlance.c
sunqe.c net: variables reach -1, but 0 tested 2009-02-02 21:39:02 -08:00
sunqe.h
sunvnet.c
sunvnet.h
tc35815.c
tehuti.c
tehuti.h
tehuti_fw.h
tg3.c TG3: limit reaches -1 2009-02-12 16:33:27 -08:00
tg3.h
tlan.c
tlan.h
tsi108_eth.c net: variables reach -1, but 0 tested 2009-02-02 21:39:02 -08:00
tsi108_eth.h
tun.c tun: Fix unicast filter overflow 2009-02-08 17:49:17 -08:00
typhoon-firmware.h
typhoon.c
typhoon.h
ucc_geth.c
ucc_geth.h
ucc_geth_ethtool.c
ucc_geth_mii.c
ucc_geth_mii.h
veth.c
via-rhine.c
via-velocity.c
via-velocity.h
virtio_net.c
wd.c
xen-netfront.c
xtsonic.c
yellowfin.c
znet.c
zorro8390.c