e1000e: Use device_set_wakeup_enable
Subsystems (2)
PATCH 1/1 e1000e: Use device_set_wakeup_enable
From: \"Rafael J. Wysocki\" <[email protected]>
Since dev->power.should_wakeup bit is used by the PCI core to decide whether the device should wake up the system from sleep states, set/unset this bit whenever WOL is enabled/disabled using e1000_set_wol(). Accordingly, use device_can_wakeup() for checking if wake-up is supported by the device.
Signed-off-by "Rafael J. Wysocki" <[email protected]>
Signed-off-by Jeff Kirsher <[email protected]>
---
drivers/net/e1000e/ethtool.c | 8 ++++++-- drivers/net/e1000e/netdev.c | 1 + 2 files changed, 7 insertions(+), 2 deletions(-)
drivers/net/e1000e/ethtool.c +6 -2
@@ -1713,7 +1713,8 @@ static void e1000_get_wol(struct net_device *netdev, wol->supported =0 ; wol->wolopts =0 ; -if (!(adapter->flags &FLAG_HAS_WOL )) +if (!(adapter->flags &FLAG_HAS_WOL ) || + !device_can_wakeup (&adapter->pdev->dev))return ; wol->supported = WAKE_UCAST | WAKE_MCAST |
@@ -1751,7 +1752,8 @@ static int e1000_set_wol(struct net_device *netdev,if (wol->wolopts &WAKE_MAGICSECURE )return -EOPNOTSUPP ; -if (!(adapter->flags &FLAG_HAS_WOL )) +if (!(adapter->flags &FLAG_HAS_WOL ) || + !device_can_wakeup (&adapter->pdev->dev))return wol->wolopts ? -EOPNOTSUPP :0 ;/* these settings will always override what we currently have */
@@ -1770,6 +1772,8 @@ static int e1000_set_wol(struct net_device *netdev,if (wol->wolopts &WAKE_ARP ) adapter->wol |=E1000_WUFC_ARP ; +device_set_wakeup_enable (&adapter->pdev->dev, adapter->wol); +return 0 ; }
drivers/net/e1000e/netdev.c +1 -0
@@ -4970,6 +4970,7 @@ static int __devinit e1000_probe(struct pci_dev *pdev,/* initialize the wol settings based on the eeprom settings */ adapter->wol = adapter->eeprom_wol; +device_set_wakeup_enable (&adapter->pdev->dev, adapter->wol);/* reset the hardware with the new settings */ e1000e_reset (adapter);