|
@@ -635,6 +635,9 @@ struct vortex_private {
|
|
|
must_free_region:1, /* Flag: if zero, Cardbus owns the I/O region */
|
|
|
large_frames:1, /* accept large frames */
|
|
|
handling_irq:1; /* private in_irq indicator */
|
|
|
+ /* {get|set}_wol operations are already serialized by rtnl.
|
|
|
+ * no additional locking is required for the enable_wol and acpi_set_WOL()
|
|
|
+ */
|
|
|
int drv_flags;
|
|
|
u16 status_enable;
|
|
|
u16 intr_enable;
|
|
@@ -2939,13 +2942,11 @@ 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)
|
|
@@ -2954,13 +2955,11 @@ static int vortex_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
|
|
|
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;
|
|
|
}
|