diff options
author | Tobias Diedrich <ranma+kernel@tdiedrich.de> | 2009-02-16 00:13:20 -0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-02-16 00:13:20 -0800 |
commit | 34edaa88324004baf4884fb0388f86059d9c4878 (patch) | |
tree | 9e042713b2084cdf7d307668aae8bfcab6f51867 /net/core/sock.c | |
parent | 1d7b33f77b2d8b0b1ee767e6f8f05cbd9d72cb7c (diff) | |
download | kernel-crypto-34edaa88324004baf4884fb0388f86059d9c4878.tar.gz kernel-crypto-34edaa88324004baf4884fb0388f86059d9c4878.tar.xz kernel-crypto-34edaa88324004baf4884fb0388f86059d9c4878.zip |
net: forcedeth: Fix wake-on-lan regression
Commit f55c21fd9a92a444e55ad1ca4e4732d56661bf2e ("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>
Diffstat (limited to 'net/core/sock.c')
0 files changed, 0 insertions, 0 deletions