aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian King <brking@linux.vnet.ibm.com>2010-05-07 04:56:08 -0400
committerDavid S. Miller <davem@davemloft.net>2010-05-17 20:09:10 -0400
commite7a3af5d8cd782b84e6ca4e4dcc8613be1a809f0 (patch)
treed723555192dbdb3aa6d8e2c750729fb9dcf1567e
parent0771275b25e84f568699a5d209c5e339ef83fa94 (diff)
ibmveth: Add suspend/resume support
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>
-rw-r--r--drivers/net/ibmveth.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/net/ibmveth.c b/drivers/net/ibmveth.c
index 3e4dead5a2f4..941be84deb67 100644
--- a/drivers/net/ibmveth.c
+++ b/drivers/net/ibmveth.c
@@ -45,6 +45,7 @@
45#include <linux/init.h> 45#include <linux/init.h>
46#include <linux/delay.h> 46#include <linux/delay.h>
47#include <linux/mm.h> 47#include <linux/mm.h>
48#include <linux/pm.h>
48#include <linux/ethtool.h> 49#include <linux/ethtool.h>
49#include <linux/proc_fs.h> 50#include <linux/proc_fs.h>
50#include <linux/in.h> 51#include <linux/in.h>
@@ -1588,6 +1589,12 @@ static struct kobj_type ktype_veth_pool = {
1588 .default_attrs = veth_pool_attrs, 1589 .default_attrs = veth_pool_attrs,
1589}; 1590};
1590 1591
1592static int ibmveth_resume(struct device *dev)
1593{
1594 struct net_device *netdev = dev_get_drvdata(dev);
1595 ibmveth_interrupt(netdev->irq, netdev);
1596 return 0;
1597}
1591 1598
1592static struct vio_device_id ibmveth_device_table[] __devinitdata= { 1599static struct vio_device_id ibmveth_device_table[] __devinitdata= {
1593 { "network", "IBM,l-lan"}, 1600 { "network", "IBM,l-lan"},
@@ -1595,6 +1602,10 @@ static struct vio_device_id ibmveth_device_table[] __devinitdata= {
1595}; 1602};
1596MODULE_DEVICE_TABLE(vio, ibmveth_device_table); 1603MODULE_DEVICE_TABLE(vio, ibmveth_device_table);
1597 1604
1605static struct dev_pm_ops ibmveth_pm_ops = {
1606 .resume = ibmveth_resume
1607};
1608
1598static struct vio_driver ibmveth_driver = { 1609static struct vio_driver ibmveth_driver = {
1599 .id_table = ibmveth_device_table, 1610 .id_table = ibmveth_device_table,
1600 .probe = ibmveth_probe, 1611 .probe = ibmveth_probe,
@@ -1603,6 +1614,7 @@ static struct vio_driver ibmveth_driver = {
1603 .driver = { 1614 .driver = {
1604 .name = ibmveth_driver_name, 1615 .name = ibmveth_driver_name,
1605 .owner = THIS_MODULE, 1616 .owner = THIS_MODULE,
1617 .pm = &ibmveth_pm_ops,
1606 } 1618 }
1607}; 1619};
1608 1620