diff options
Diffstat (limited to 'drivers/net/ethernet/intel/e1000e')
| -rw-r--r-- | drivers/net/ethernet/intel/e1000e/netdev.c | 30 | 
1 files changed, 15 insertions, 15 deletions
| diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c index a279f4fa9962..6f6479ca1267 100644 --- a/drivers/net/ethernet/intel/e1000e/netdev.c +++ b/drivers/net/ethernet/intel/e1000e/netdev.c @@ -6349,7 +6349,6 @@ fl_out:  	pm_runtime_put_sync(netdev->dev.parent);  } -#ifdef CONFIG_PM_SLEEP  /* S0ix implementation */  static void e1000e_s0ix_entry_flow(struct e1000_adapter *adapter)  { @@ -6571,7 +6570,6 @@ static void e1000e_s0ix_exit_flow(struct e1000_adapter *adapter)  	mac_data &= ~E1000_CTRL_EXT_FORCE_SMBUS;  	ew32(CTRL_EXT, mac_data);  } -#endif /* CONFIG_PM_SLEEP */  static int e1000e_pm_freeze(struct device *dev)  { @@ -6611,11 +6609,17 @@ static int __e1000_shutdown(struct pci_dev *pdev, bool runtime)  	struct net_device *netdev = pci_get_drvdata(pdev);  	struct e1000_adapter *adapter = netdev_priv(netdev);  	struct e1000_hw *hw = &adapter->hw; -	u32 ctrl, ctrl_ext, rctl, status; -	/* Runtime suspend should only enable wakeup for link changes */ -	u32 wufc = runtime ? E1000_WUFC_LNKC : adapter->wol; +	u32 ctrl, ctrl_ext, rctl, status, wufc;  	int retval = 0; +	/* Runtime suspend should only enable wakeup for link changes */ +	if (runtime) +		wufc = E1000_WUFC_LNKC; +	else if (device_may_wakeup(&pdev->dev)) +		wufc = adapter->wol; +	else +		wufc = 0; +  	status = er32(STATUS);  	if (status & E1000_STATUS_LU)  		wufc &= ~E1000_WUFC_LNKC; @@ -6672,7 +6676,7 @@ static int __e1000_shutdown(struct pci_dev *pdev, bool runtime)  	if (adapter->hw.phy.type == e1000_phy_igp_3) {  		e1000e_igp3_phy_powerdown_workaround_ich8lan(&adapter->hw);  	} else if (hw->mac.type >= e1000_pch_lpt) { -		if (!(wufc & (E1000_WUFC_EX | E1000_WUFC_MC | E1000_WUFC_BC))) +		if (wufc && !(wufc & (E1000_WUFC_EX | E1000_WUFC_MC | E1000_WUFC_BC)))  			/* ULP does not support wake from unicast, multicast  			 * or broadcast.  			 */ @@ -6869,7 +6873,6 @@ err_irq:  	return rc;  } -#ifdef CONFIG_PM  static int __e1000_resume(struct pci_dev *pdev)  {  	struct net_device *netdev = pci_get_drvdata(pdev); @@ -6935,8 +6938,7 @@ static int __e1000_resume(struct pci_dev *pdev)  	return 0;  } -#ifdef CONFIG_PM_SLEEP -static int e1000e_pm_suspend(struct device *dev) +static __maybe_unused int e1000e_pm_suspend(struct device *dev)  {  	struct net_device *netdev = pci_get_drvdata(to_pci_dev(dev));  	struct e1000_adapter *adapter = netdev_priv(netdev); @@ -6960,7 +6962,7 @@ static int e1000e_pm_suspend(struct device *dev)  	return rc;  } -static int e1000e_pm_resume(struct device *dev) +static __maybe_unused int e1000e_pm_resume(struct device *dev)  {  	struct net_device *netdev = pci_get_drvdata(to_pci_dev(dev));  	struct e1000_adapter *adapter = netdev_priv(netdev); @@ -6979,9 +6981,8 @@ static int e1000e_pm_resume(struct device *dev)  	return e1000e_pm_thaw(dev);  } -#endif /* CONFIG_PM_SLEEP */ -static int e1000e_pm_runtime_idle(struct device *dev) +static __maybe_unused int e1000e_pm_runtime_idle(struct device *dev)  {  	struct net_device *netdev = dev_get_drvdata(dev);  	struct e1000_adapter *adapter = netdev_priv(netdev); @@ -6997,7 +6998,7 @@ static int e1000e_pm_runtime_idle(struct device *dev)  	return -EBUSY;  } -static int e1000e_pm_runtime_resume(struct device *dev) +static __maybe_unused int e1000e_pm_runtime_resume(struct device *dev)  {  	struct pci_dev *pdev = to_pci_dev(dev);  	struct net_device *netdev = pci_get_drvdata(pdev); @@ -7014,7 +7015,7 @@ static int e1000e_pm_runtime_resume(struct device *dev)  	return rc;  } -static int e1000e_pm_runtime_suspend(struct device *dev) +static __maybe_unused int e1000e_pm_runtime_suspend(struct device *dev)  {  	struct pci_dev *pdev = to_pci_dev(dev);  	struct net_device *netdev = pci_get_drvdata(pdev); @@ -7039,7 +7040,6 @@ static int e1000e_pm_runtime_suspend(struct device *dev)  	return 0;  } -#endif /* CONFIG_PM */  static void e1000_shutdown(struct pci_dev *pdev)  { |