e1000e: Use device_set_wakeup_enable
Subsystems (2)
PATCH 1/3 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.
---
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);
PATCH 2/3 e1000: 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.
---
drivers/net/e1000/e1000_ethtool.c | 8 ++++++-- drivers/net/e1000/e1000_main.c | 1 + 2 files changed, 7 insertions(+), 2 deletions(-)
drivers/net/e1000/e1000_ethtool.c +6 -2
@@ -1774,7 +1774,8 @@ static void e1000_get_wol(struct net_device *netdev,/* this function will set ->supported = 0 and return 1 if wol is not * supported by this hardware */ -if (e1000_wol_exclusion (adapter, wol)) +if (e1000_wol_exclusion (adapter, wol) || + !device_can_wakeup (&adapter->pdev->dev))return ;/* apply any specific unsupported masks here */
@@ -1811,7 +1812,8 @@ static int e1000_set_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)if (wol->wolopts & (WAKE_PHY |WAKE_ARP |WAKE_MAGICSECURE ))return -EOPNOTSUPP ; -if (e1000_wol_exclusion (adapter, wol)) +if (e1000_wol_exclusion (adapter, wol) || + !device_can_wakeup (&adapter->pdev->dev))return wol->wolopts ? -EOPNOTSUPP :0 ;switch (hw->device_id) {
@@ -1838,6 +1840,8 @@ static int e1000_set_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)if (wol->wolopts &WAKE_MAGIC ) adapter->wol |=E1000_WUFC_MAG ; +device_set_wakeup_enable (&adapter->pdev->dev, adapter->wol); +return 0 ; }
drivers/net/e1000/e1000_main.c +1 -0
@@ -1179,6 +1179,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);/* print bus type/speed/width info */ DPRINTK(PROBE, INFO, "(PCI%s:%s:%s) ",
PATCH 3/3 igb: Use device_set_wakeup_enable
In reply to Jeff KirsherFrom: \"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 igb_set_wol(). Accordingly, use device_can_wakeup() for checking if wake-up is supported by the device.
---
drivers/net/igb/igb_ethtool.c | 8 ++++++-- drivers/net/igb/igb_main.c | 1 + 2 files changed, 7 insertions(+), 2 deletions(-)
drivers/net/igb/igb_ethtool.c +6 -2
@@ -1776,7 +1776,8 @@ static void igb_get_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)/* this function will set ->supported = 0 and return 1 if wol is not * supported by this hardware */ -if (igb_wol_exclusion (adapter, wol)) +if (igb_wol_exclusion (adapter, wol) || + !device_can_wakeup (&adapter->pdev->dev))return ;/* apply any specific unsupported masks here */
@@ -1805,7 +1806,8 @@ static int igb_set_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)if (wol->wolopts & (WAKE_PHY |WAKE_ARP |WAKE_MAGICSECURE ))return -EOPNOTSUPP ; -if (igb_wol_exclusion (adapter, wol)) +if (igb_wol_exclusion (adapter, wol) || + !device_can_wakeup (&adapter->pdev->dev))return wol->wolopts ? -EOPNOTSUPP :0 ;switch (hw->device_id) {
@@ -1825,6 +1827,8 @@ static int igb_set_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)if (wol->wolopts &WAKE_MAGIC ) adapter->wol |=E1000_WUFC_MAG ; +device_set_wakeup_enable (&adapter->pdev->dev, adapter->wol); +return 0 ; }
drivers/net/igb/igb_main.c +1 -0
@@ -1244,6 +1244,7 @@ static int __devinit igb_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 */ igb_reset (adapter);