Skip to content

Commit

Permalink
pcnet32: add suspend and resume capability
Browse files Browse the repository at this point in the history
Add suspend and resume capability to the driver.
Tested both to ram and to disk on x86_64 platform.

Signed-off-by:  Don Fry <pcnet32@verizon.net>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
  • Loading branch information
Don Fry authored and David S. Miller committed Oct 10, 2007
1 parent a11a654 commit 917270c
Showing 1 changed file with 32 additions and 3 deletions.
35 changes: 32 additions & 3 deletions drivers/net/pcnet32.c
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,11 @@

#define DRV_NAME "pcnet32"
#ifdef CONFIG_PCNET32_NAPI
#define DRV_VERSION "1.33-NAPI"
#define DRV_VERSION "1.34-NAPI"
#else
#define DRV_VERSION "1.33"
#define DRV_VERSION "1.34"
#endif
#define DRV_RELDATE "27.Jun.2006"
#define DRV_RELDATE "14.Aug.2007"
#define PFX DRV_NAME ": "

static const char *const version =
Expand Down Expand Up @@ -2955,6 +2955,33 @@ static void pcnet32_watchdog(struct net_device *dev)
mod_timer(&(lp->watchdog_timer), PCNET32_WATCHDOG_TIMEOUT);
}

static int pcnet32_pm_suspend(struct pci_dev *pdev, pm_message_t state)
{
struct net_device *dev = pci_get_drvdata(pdev);

if (netif_running(dev)) {
netif_device_detach(dev);
pcnet32_close(dev);
}
pci_save_state(pdev);
pci_set_power_state(pdev, pci_choose_state(pdev, state));
return 0;
}

static int pcnet32_pm_resume(struct pci_dev *pdev)
{
struct net_device *dev = pci_get_drvdata(pdev);

pci_set_power_state(pdev, PCI_D0);
pci_restore_state(pdev);

if (netif_running(dev)) {
pcnet32_open(dev);
netif_device_attach(dev);
}
return 0;
}

static void __devexit pcnet32_remove_one(struct pci_dev *pdev)
{
struct net_device *dev = pci_get_drvdata(pdev);
Expand All @@ -2978,6 +3005,8 @@ static struct pci_driver pcnet32_driver = {
.probe = pcnet32_probe_pci,
.remove = __devexit_p(pcnet32_remove_one),
.id_table = pcnet32_pci_tbl,
.suspend = pcnet32_pm_suspend,
.resume = pcnet32_pm_resume,
};

/* An additional parameter that may be passed in... */
Expand Down

0 comments on commit 917270c

Please sign in to comment.