]> bbs.cooldavid.org Git - net-next-2.6.git/commitdiff
ibmveth: Add suspend/resume support
authorBrian King <brking@linux.vnet.ibm.com>
Fri, 7 May 2010 08:56:08 +0000 (08:56 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 18 May 2010 00:09:10 +0000 (17:09 -0700)
Adds support for resuming from suspend for IBM virtual ethernet devices.
We may have lost an interrupt over the suspend, so we just kick the
interrupt handler to process anything that is outstanding.

Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ibmveth.c

index 3e4dead5a2f441f38f60c1881eb7b9d13c672803..941be84deb6706c9bb39f0f5f6d175333b471eac 100644 (file)
@@ -45,6 +45,7 @@
 #include <linux/init.h>
 #include <linux/delay.h>
 #include <linux/mm.h>
+#include <linux/pm.h>
 #include <linux/ethtool.h>
 #include <linux/proc_fs.h>
 #include <linux/in.h>
@@ -1588,6 +1589,12 @@ static struct kobj_type ktype_veth_pool = {
        .default_attrs  = veth_pool_attrs,
 };
 
+static int ibmveth_resume(struct device *dev)
+{
+       struct net_device *netdev = dev_get_drvdata(dev);
+       ibmveth_interrupt(netdev->irq, netdev);
+       return 0;
+}
 
 static struct vio_device_id ibmveth_device_table[] __devinitdata= {
        { "network", "IBM,l-lan"},
@@ -1595,6 +1602,10 @@ static struct vio_device_id ibmveth_device_table[] __devinitdata= {
 };
 MODULE_DEVICE_TABLE(vio, ibmveth_device_table);
 
+static struct dev_pm_ops ibmveth_pm_ops = {
+       .resume = ibmveth_resume
+};
+
 static struct vio_driver ibmveth_driver = {
        .id_table       = ibmveth_device_table,
        .probe          = ibmveth_probe,
@@ -1603,6 +1614,7 @@ static struct vio_driver ibmveth_driver = {
        .driver         = {
                .name   = ibmveth_driver_name,
                .owner  = THIS_MODULE,
+               .pm = &ibmveth_pm_ops,
        }
 };