|
@@ -5220,6 +5220,19 @@ static SIMPLE_DEV_PM_OPS(sky2_pm_ops, sky2_suspend, sky2_resume);
|
|
|
|
|
|
static void sky2_shutdown(struct pci_dev *pdev)
|
|
static void sky2_shutdown(struct pci_dev *pdev)
|
|
{
|
|
{
|
|
|
|
+ struct sky2_hw *hw = pci_get_drvdata(pdev);
|
|
|
|
+ int port;
|
|
|
|
+
|
|
|
|
+ for (port = 0; port < hw->ports; port++) {
|
|
|
|
+ struct net_device *ndev = hw->dev[port];
|
|
|
|
+
|
|
|
|
+ rtnl_lock();
|
|
|
|
+ if (netif_running(ndev)) {
|
|
|
|
+ dev_close(ndev);
|
|
|
|
+ netif_device_detach(ndev);
|
|
|
|
+ }
|
|
|
|
+ rtnl_unlock();
|
|
|
|
+ }
|
|
sky2_suspend(&pdev->dev);
|
|
sky2_suspend(&pdev->dev);
|
|
pci_wake_from_d3(pdev, device_may_wakeup(&pdev->dev));
|
|
pci_wake_from_d3(pdev, device_may_wakeup(&pdev->dev));
|
|
pci_set_power_state(pdev, PCI_D3hot);
|
|
pci_set_power_state(pdev, PCI_D3hot);
|