From b75cf059e543b52f6e3608aada97ab1814c358e5 Mon Sep 17 00:00:00 2001 From: "Andrew O. Shadoura" Date: Sat, 24 Jul 2010 16:24:17 +0000 Subject: [PATCH] --- yaml --- r: 203747 b: refs/heads/master c: 690a1f2002a3091bd18a501f46c9530f10481463 h: refs/heads/master i: 203745: 8890c024c4c9b080fdfab8965b5a263e41299ff9 203743: 11b84a537abd005224af30085ff6d48e12fe86f7 v: v3 --- [refs] | 2 +- trunk/drivers/net/3c59x.c | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 9ccc0a38219c..2a5a493ef0c6 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 57e46248a71bfcafb3937a7a5ed8ad324c9fc4f0 +refs/heads/master: 690a1f2002a3091bd18a501f46c9530f10481463 diff --git a/trunk/drivers/net/3c59x.c b/trunk/drivers/net/3c59x.c index c44d599cc5ef..c754d88e5ec9 100644 --- a/trunk/drivers/net/3c59x.c +++ b/trunk/drivers/net/3c59x.c @@ -2918,6 +2918,36 @@ static void vortex_get_drvinfo(struct net_device *dev, } } +static void vortex_get_wol(struct net_device *dev, struct ethtool_wolinfo *wol) +{ + struct vortex_private *vp = netdev_priv(dev); + + spin_lock_irq(&vp->lock); + wol->supported = WAKE_MAGIC; + + wol->wolopts = 0; + if (vp->enable_wol) + wol->wolopts |= WAKE_MAGIC; + spin_unlock_irq(&vp->lock); +} + +static int vortex_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol) +{ + struct vortex_private *vp = netdev_priv(dev); + if (wol->wolopts & ~WAKE_MAGIC) + return -EINVAL; + + spin_lock_irq(&vp->lock); + if (wol->wolopts & WAKE_MAGIC) + vp->enable_wol = 1; + else + vp->enable_wol = 0; + acpi_set_WOL(dev); + spin_unlock_irq(&vp->lock); + + return 0; +} + static const struct ethtool_ops vortex_ethtool_ops = { .get_drvinfo = vortex_get_drvinfo, .get_strings = vortex_get_strings, @@ -2929,6 +2959,8 @@ static const struct ethtool_ops vortex_ethtool_ops = { .set_settings = vortex_set_settings, .get_link = ethtool_op_get_link, .nway_reset = vortex_nway_reset, + .get_wol = vortex_get_wol, + .set_wol = vortex_set_wol, }; #ifdef CONFIG_PCI