Skip to content

Commit

Permalink
[netdrvr] forcedeth: setup wake-on-lan before shutting down
Browse files Browse the repository at this point in the history
When hibernating in 'shutdown' mode, after saving the image the suspend hook
is not called again.
However, if the device is in promiscous mode, wake-on-lan will not work.
This adds a shutdown hook to setup wake-on-lan before the final shutdown.

Signed-off-by: Tobias Diedrich <ranma+kernel@tdiedrich.de>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
  • Loading branch information
Tobias Diedrich authored and Jeff Garzik committed May 31, 2008
1 parent 2914f3e commit f735a2a
Showing 1 changed file with 16 additions and 0 deletions.
16 changes: 16 additions & 0 deletions drivers/net/forcedeth.c
Original file line number Diff line number Diff line change
Expand Up @@ -5827,8 +5827,23 @@ static int nv_resume(struct pci_dev *pdev)
out:
return rc;
}

static void nv_shutdown(struct pci_dev *pdev)
{
struct net_device *dev = pci_get_drvdata(pdev);
struct fe_priv *np = netdev_priv(dev);

if (netif_running(dev))
nv_close(dev);

pci_enable_wake(pdev, PCI_D3hot, np->wolenabled);
pci_enable_wake(pdev, PCI_D3cold, np->wolenabled);
pci_disable_device(pdev);
pci_set_power_state(pdev, PCI_D3hot);
}
#else
#define nv_suspend NULL
#define nv_shutdown NULL
#define nv_resume NULL
#endif /* CONFIG_PM */

Expand Down Expand Up @@ -5999,6 +6014,7 @@ static struct pci_driver driver = {
.remove = __devexit_p(nv_remove),
.suspend = nv_suspend,
.resume = nv_resume,
.shutdown = nv_shutdown,
};

static int __init init_nic(void)
Expand Down

0 comments on commit f735a2a

Please sign in to comment.