diff options
| author | \"Rafael J. Wysocki\ <rjw@sisk.pl> | 2008-11-12 04:52:32 -0500 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2008-11-16 04:35:45 -0500 |
| commit | 6ff68026f4757d68461b7fbeca5c944e1f5f8b44 (patch) | |
| tree | 13285973e74a60ad7f86f5c50d8362a6bcacd426 | |
| parent | 5f5c4bdb144bf285727867bbd75c13c5a99150c9 (diff) | |
e1000e: Use device_set_wakeup_enable
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" <rjw@sisk.pl>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
| -rw-r--r-- | drivers/net/e1000e/ethtool.c | 8 | ||||
| -rw-r--r-- | drivers/net/e1000e/netdev.c | 1 |
2 files changed, 7 insertions, 2 deletions
diff --git a/drivers/net/e1000e/ethtool.c b/drivers/net/e1000e/ethtool.c index 70c11c811a08..62421ce96311 100644 --- a/drivers/net/e1000e/ethtool.c +++ b/drivers/net/e1000e/ethtool.c | |||
| @@ -1713,7 +1713,8 @@ static void e1000_get_wol(struct net_device *netdev, | |||
| 1713 | wol->supported = 0; | 1713 | wol->supported = 0; |
| 1714 | wol->wolopts = 0; | 1714 | wol->wolopts = 0; |
| 1715 | 1715 | ||
| 1716 | if (!(adapter->flags & FLAG_HAS_WOL)) | 1716 | if (!(adapter->flags & FLAG_HAS_WOL) || |
| 1717 | !device_can_wakeup(&adapter->pdev->dev)) | ||
| 1717 | return; | 1718 | return; |
| 1718 | 1719 | ||
| 1719 | wol->supported = WAKE_UCAST | WAKE_MCAST | | 1720 | wol->supported = WAKE_UCAST | WAKE_MCAST | |
| @@ -1751,7 +1752,8 @@ static int e1000_set_wol(struct net_device *netdev, | |||
| 1751 | if (wol->wolopts & WAKE_MAGICSECURE) | 1752 | if (wol->wolopts & WAKE_MAGICSECURE) |
| 1752 | return -EOPNOTSUPP; | 1753 | return -EOPNOTSUPP; |
| 1753 | 1754 | ||
| 1754 | if (!(adapter->flags & FLAG_HAS_WOL)) | 1755 | if (!(adapter->flags & FLAG_HAS_WOL) || |
| 1756 | !device_can_wakeup(&adapter->pdev->dev)) | ||
| 1755 | return wol->wolopts ? -EOPNOTSUPP : 0; | 1757 | return wol->wolopts ? -EOPNOTSUPP : 0; |
| 1756 | 1758 | ||
| 1757 | /* these settings will always override what we currently have */ | 1759 | /* these settings will always override what we currently have */ |
| @@ -1770,6 +1772,8 @@ static int e1000_set_wol(struct net_device *netdev, | |||
| 1770 | if (wol->wolopts & WAKE_ARP) | 1772 | if (wol->wolopts & WAKE_ARP) |
| 1771 | adapter->wol |= E1000_WUFC_ARP; | 1773 | adapter->wol |= E1000_WUFC_ARP; |
| 1772 | 1774 | ||
| 1775 | device_set_wakeup_enable(&adapter->pdev->dev, adapter->wol); | ||
| 1776 | |||
| 1773 | return 0; | 1777 | return 0; |
| 1774 | } | 1778 | } |
| 1775 | 1779 | ||
diff --git a/drivers/net/e1000e/netdev.c b/drivers/net/e1000e/netdev.c index abd492b7336d..2c8dffdc889f 100644 --- a/drivers/net/e1000e/netdev.c +++ b/drivers/net/e1000e/netdev.c | |||
| @@ -4970,6 +4970,7 @@ static int __devinit e1000_probe(struct pci_dev *pdev, | |||
| 4970 | 4970 | ||
| 4971 | /* initialize the wol settings based on the eeprom settings */ | 4971 | /* initialize the wol settings based on the eeprom settings */ |
| 4972 | adapter->wol = adapter->eeprom_wol; | 4972 | adapter->wol = adapter->eeprom_wol; |
| 4973 | device_set_wakeup_enable(&adapter->pdev->dev, adapter->wol); | ||
| 4973 | 4974 | ||
| 4974 | /* reset the hardware with the new settings */ | 4975 | /* reset the hardware with the new settings */ |
| 4975 | e1000e_reset(adapter); | 4976 | e1000e_reset(adapter); |
