diff options
Diffstat (limited to 'drivers/net/igb/igb_ethtool.c')
| -rw-r--r-- | drivers/net/igb/igb_ethtool.c | 8 | 
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/net/igb/igb_ethtool.c b/drivers/net/igb/igb_ethtool.c index 58906c984be..89964fa739a 100644 --- a/drivers/net/igb/igb_ethtool.c +++ b/drivers/net/igb/igb_ethtool.c @@ -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;  }  |