r8169: WoL fixes, part 1.
authorBruno Prémont <bonbons@linux-vserver.org>
Thu, 9 Oct 2008 00:05:03 +0000 (17:05 -0700)
committerDavid S. Miller <davem@davemloft.net>
Thu, 9 Oct 2008 00:05:03 +0000 (17:05 -0700)
When probing the chip and handling it's power management settings
also remember wether WoL feature is enabled.

Without this patch one has to call ethtool to change WoL settings
for this flag to be set and any WoL being enabled on suspend to
RAM.

Signed-off-by: Bruno Prémont <bonbons@linux-vserver.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/r8169.c

index 53a0ce445cc5fba44142ab27dce16582b9d7328c..3c6e591326fc6f9e91d4d07679670c3af06d3464 100644 (file)
@@ -1925,6 +1925,10 @@ rtl8169_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
        RTL_W8(Cfg9346, Cfg9346_Unlock);
        RTL_W8(Config1, RTL_R8(Config1) | PMEnable);
        RTL_W8(Config5, RTL_R8(Config5) & PMEStatus);
+       if ((RTL_R8(Config3) & (LinkUp | MagicPacket)) != 0)
+               tp->features |= RTL_FEATURE_WOL;
+       if ((RTL_R8(Config5) & (UWF | BWF | MWF)) != 0)
+               tp->features |= RTL_FEATURE_WOL;
        tp->features |= rtl_try_msi(pdev, ioaddr, cfg);
        RTL_W8(Cfg9346, Cfg9346_Lock);