All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/3] e1000e: Use device_set_wakeup_enable
@ 2008-11-08  6:30 Jeff Kirsher
  2008-11-08  6:30 ` [PATCH 2/3] e1000: " Jeff Kirsher
  2008-11-08  6:30 ` [PATCH 3/3] igb: " Jeff Kirsher
  0 siblings, 2 replies; 4+ messages in thread
From: Jeff Kirsher @ 2008-11-08  6:30 UTC (permalink / raw)
  To: jeff; +Cc: netdev, davem, Rafael J. Wysocki, Jeff Kirsher

From: \"Rafael J. Wysocki\" <rjw@sisk.pl>

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>
---

 drivers/net/e1000e/ethtool.c |    8 ++++++--
 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 70c11c8..bfa40d3 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,
 	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;
 }
 
diff --git a/drivers/net/e1000e/netdev.c b/drivers/net/e1000e/netdev.c
index abd492b..2c8dffd 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,
 
 	/* 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);


^ permalink raw reply related	[flat|nested] 4+ messages in thread
[parent not found: <bug-11865-10286@http.bugzilla.kernel.org/>]

end of thread, other threads:[~2008-11-08  6:30 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-11-08  6:30 [PATCH 1/3] e1000e: Use device_set_wakeup_enable Jeff Kirsher
2008-11-08  6:30 ` [PATCH 2/3] e1000: " Jeff Kirsher
2008-11-08  6:30 ` [PATCH 3/3] igb: " Jeff Kirsher
     [not found] <bug-11865-10286@http.bugzilla.kernel.org/>
2008-11-04  1:43 ` [Bugme-new] [Bug 11865] New: WOL for E100 Doesn't Work Anymore Rafael J. Wysocki
2008-11-04 16:40   ` [PATCH 0/3] WOL fixes for e1000e, e1000 and igb (was: Re: [Bugme-new] [Bug 11865] New: WOL for E100 Doesn't Work Anymore) Rafael J. Wysocki
2008-11-04 16:42     ` [PATCH 1/3] e1000e: Use device_set_wakeup_enable Rafael J. Wysocki

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.