Skip to content

Commit c9f66b4

Browse files
committed
Merge branch '1GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-queue
Jeff Kirsher says: ==================== Intel Wired LAN Driver Updates 2020-06-16 This series contains fixes to e1000 and e1000e. Chen fixes an e1000e issue where systems could be waken via WoL, even though the user has disabled the wakeup bit via sysfs. Vaibhav Gupta updates the e1000 driver to clean up the legacy Power Management hooks. Arnd Bergmann cleans up the inconsistent use CONFIG_PM_SLEEP preprocessor tags, which also resolves the compiler warnings about the possibility of unused structure. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
2 parents ea12fe9 + 880e626 commit c9f66b4

File tree

2 files changed

+28
-51
lines changed

2 files changed

+28
-51
lines changed

drivers/net/ethernet/intel/e1000/e1000_main.c

Lines changed: 13 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -151,10 +151,8 @@ static int e1000_vlan_rx_kill_vid(struct net_device *netdev,
151151
__be16 proto, u16 vid);
152152
static void e1000_restore_vlan(struct e1000_adapter *adapter);
153153

154-
#ifdef CONFIG_PM
155-
static int e1000_suspend(struct pci_dev *pdev, pm_message_t state);
156-
static int e1000_resume(struct pci_dev *pdev);
157-
#endif
154+
static int __maybe_unused e1000_suspend(struct device *dev);
155+
static int __maybe_unused e1000_resume(struct device *dev);
158156
static void e1000_shutdown(struct pci_dev *pdev);
159157

160158
#ifdef CONFIG_NET_POLL_CONTROLLER
@@ -179,16 +177,16 @@ static const struct pci_error_handlers e1000_err_handler = {
179177
.resume = e1000_io_resume,
180178
};
181179

180+
static SIMPLE_DEV_PM_OPS(e1000_pm_ops, e1000_suspend, e1000_resume);
181+
182182
static struct pci_driver e1000_driver = {
183183
.name = e1000_driver_name,
184184
.id_table = e1000_pci_tbl,
185185
.probe = e1000_probe,
186186
.remove = e1000_remove,
187-
#ifdef CONFIG_PM
188-
/* Power Management Hooks */
189-
.suspend = e1000_suspend,
190-
.resume = e1000_resume,
191-
#endif
187+
.driver = {
188+
.pm = &e1000_pm_ops,
189+
},
192190
.shutdown = e1000_shutdown,
193191
.err_handler = &e1000_err_handler
194192
};
@@ -5060,9 +5058,6 @@ static int __e1000_shutdown(struct pci_dev *pdev, bool *enable_wake)
50605058
struct e1000_hw *hw = &adapter->hw;
50615059
u32 ctrl, ctrl_ext, rctl, status;
50625060
u32 wufc = adapter->wol;
5063-
#ifdef CONFIG_PM
5064-
int retval = 0;
5065-
#endif
50665061

50675062
netif_device_detach(netdev);
50685063

@@ -5076,12 +5071,6 @@ static int __e1000_shutdown(struct pci_dev *pdev, bool *enable_wake)
50765071
e1000_down(adapter);
50775072
}
50785073

5079-
#ifdef CONFIG_PM
5080-
retval = pci_save_state(pdev);
5081-
if (retval)
5082-
return retval;
5083-
#endif
5084-
50855074
status = er32(STATUS);
50865075
if (status & E1000_STATUS_LU)
50875076
wufc &= ~E1000_WUFC_LNKC;
@@ -5142,37 +5131,26 @@ static int __e1000_shutdown(struct pci_dev *pdev, bool *enable_wake)
51425131
return 0;
51435132
}
51445133

5145-
#ifdef CONFIG_PM
5146-
static int e1000_suspend(struct pci_dev *pdev, pm_message_t state)
5134+
static int __maybe_unused e1000_suspend(struct device *dev)
51475135
{
51485136
int retval;
5137+
struct pci_dev *pdev = to_pci_dev(dev);
51495138
bool wake;
51505139

51515140
retval = __e1000_shutdown(pdev, &wake);
5152-
if (retval)
5153-
return retval;
5154-
5155-
if (wake) {
5156-
pci_prepare_to_sleep(pdev);
5157-
} else {
5158-
pci_wake_from_d3(pdev, false);
5159-
pci_set_power_state(pdev, PCI_D3hot);
5160-
}
5141+
device_set_wakeup_enable(dev, wake);
51615142

5162-
return 0;
5143+
return retval;
51635144
}
51645145

5165-
static int e1000_resume(struct pci_dev *pdev)
5146+
static int __maybe_unused e1000_resume(struct device *dev)
51665147
{
5148+
struct pci_dev *pdev = to_pci_dev(dev);
51675149
struct net_device *netdev = pci_get_drvdata(pdev);
51685150
struct e1000_adapter *adapter = netdev_priv(netdev);
51695151
struct e1000_hw *hw = &adapter->hw;
51705152
u32 err;
51715153

5172-
pci_set_power_state(pdev, PCI_D0);
5173-
pci_restore_state(pdev);
5174-
pci_save_state(pdev);
5175-
51765154
if (adapter->need_ioport)
51775155
err = pci_enable_device(pdev);
51785156
else
@@ -5209,7 +5187,6 @@ static int e1000_resume(struct pci_dev *pdev)
52095187

52105188
return 0;
52115189
}
5212-
#endif
52135190

52145191
static void e1000_shutdown(struct pci_dev *pdev)
52155192
{

drivers/net/ethernet/intel/e1000e/netdev.c

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6349,7 +6349,6 @@ static void e1000e_flush_lpic(struct pci_dev *pdev)
63496349
pm_runtime_put_sync(netdev->dev.parent);
63506350
}
63516351

6352-
#ifdef CONFIG_PM_SLEEP
63536352
/* S0ix implementation */
63546353
static void e1000e_s0ix_entry_flow(struct e1000_adapter *adapter)
63556354
{
@@ -6571,7 +6570,6 @@ static void e1000e_s0ix_exit_flow(struct e1000_adapter *adapter)
65716570
mac_data &= ~E1000_CTRL_EXT_FORCE_SMBUS;
65726571
ew32(CTRL_EXT, mac_data);
65736572
}
6574-
#endif /* CONFIG_PM_SLEEP */
65756573

65766574
static int e1000e_pm_freeze(struct device *dev)
65776575
{
@@ -6611,11 +6609,17 @@ static int __e1000_shutdown(struct pci_dev *pdev, bool runtime)
66116609
struct net_device *netdev = pci_get_drvdata(pdev);
66126610
struct e1000_adapter *adapter = netdev_priv(netdev);
66136611
struct e1000_hw *hw = &adapter->hw;
6614-
u32 ctrl, ctrl_ext, rctl, status;
6615-
/* Runtime suspend should only enable wakeup for link changes */
6616-
u32 wufc = runtime ? E1000_WUFC_LNKC : adapter->wol;
6612+
u32 ctrl, ctrl_ext, rctl, status, wufc;
66176613
int retval = 0;
66186614

6615+
/* Runtime suspend should only enable wakeup for link changes */
6616+
if (runtime)
6617+
wufc = E1000_WUFC_LNKC;
6618+
else if (device_may_wakeup(&pdev->dev))
6619+
wufc = adapter->wol;
6620+
else
6621+
wufc = 0;
6622+
66196623
status = er32(STATUS);
66206624
if (status & E1000_STATUS_LU)
66216625
wufc &= ~E1000_WUFC_LNKC;
@@ -6672,7 +6676,7 @@ static int __e1000_shutdown(struct pci_dev *pdev, bool runtime)
66726676
if (adapter->hw.phy.type == e1000_phy_igp_3) {
66736677
e1000e_igp3_phy_powerdown_workaround_ich8lan(&adapter->hw);
66746678
} else if (hw->mac.type >= e1000_pch_lpt) {
6675-
if (!(wufc & (E1000_WUFC_EX | E1000_WUFC_MC | E1000_WUFC_BC)))
6679+
if (wufc && !(wufc & (E1000_WUFC_EX | E1000_WUFC_MC | E1000_WUFC_BC)))
66766680
/* ULP does not support wake from unicast, multicast
66776681
* or broadcast.
66786682
*/
@@ -6869,7 +6873,6 @@ static int e1000e_pm_thaw(struct device *dev)
68696873
return rc;
68706874
}
68716875

6872-
#ifdef CONFIG_PM
68736876
static int __e1000_resume(struct pci_dev *pdev)
68746877
{
68756878
struct net_device *netdev = pci_get_drvdata(pdev);
@@ -6935,8 +6938,7 @@ static int __e1000_resume(struct pci_dev *pdev)
69356938
return 0;
69366939
}
69376940

6938-
#ifdef CONFIG_PM_SLEEP
6939-
static int e1000e_pm_suspend(struct device *dev)
6941+
static __maybe_unused int e1000e_pm_suspend(struct device *dev)
69406942
{
69416943
struct net_device *netdev = pci_get_drvdata(to_pci_dev(dev));
69426944
struct e1000_adapter *adapter = netdev_priv(netdev);
@@ -6960,7 +6962,7 @@ static int e1000e_pm_suspend(struct device *dev)
69606962
return rc;
69616963
}
69626964

6963-
static int e1000e_pm_resume(struct device *dev)
6965+
static __maybe_unused int e1000e_pm_resume(struct device *dev)
69646966
{
69656967
struct net_device *netdev = pci_get_drvdata(to_pci_dev(dev));
69666968
struct e1000_adapter *adapter = netdev_priv(netdev);
@@ -6979,9 +6981,8 @@ static int e1000e_pm_resume(struct device *dev)
69796981

69806982
return e1000e_pm_thaw(dev);
69816983
}
6982-
#endif /* CONFIG_PM_SLEEP */
69836984

6984-
static int e1000e_pm_runtime_idle(struct device *dev)
6985+
static __maybe_unused int e1000e_pm_runtime_idle(struct device *dev)
69856986
{
69866987
struct net_device *netdev = dev_get_drvdata(dev);
69876988
struct e1000_adapter *adapter = netdev_priv(netdev);
@@ -6997,7 +6998,7 @@ static int e1000e_pm_runtime_idle(struct device *dev)
69976998
return -EBUSY;
69986999
}
69997000

7000-
static int e1000e_pm_runtime_resume(struct device *dev)
7001+
static __maybe_unused int e1000e_pm_runtime_resume(struct device *dev)
70017002
{
70027003
struct pci_dev *pdev = to_pci_dev(dev);
70037004
struct net_device *netdev = pci_get_drvdata(pdev);
@@ -7014,7 +7015,7 @@ static int e1000e_pm_runtime_resume(struct device *dev)
70147015
return rc;
70157016
}
70167017

7017-
static int e1000e_pm_runtime_suspend(struct device *dev)
7018+
static __maybe_unused int e1000e_pm_runtime_suspend(struct device *dev)
70187019
{
70197020
struct pci_dev *pdev = to_pci_dev(dev);
70207021
struct net_device *netdev = pci_get_drvdata(pdev);
@@ -7039,7 +7040,6 @@ static int e1000e_pm_runtime_suspend(struct device *dev)
70397040

70407041
return 0;
70417042
}
7042-
#endif /* CONFIG_PM */
70437043

70447044
static void e1000_shutdown(struct pci_dev *pdev)
70457045
{

0 commit comments

Comments
 (0)