|
@@ -1097,6 +1097,7 @@ pegasus_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
|
|
|
{
|
|
|
pegasus_t *pegasus = netdev_priv(dev);
|
|
|
u8 reg78 = 0x04;
|
|
|
+ int ret;
|
|
|
|
|
|
if (wol->wolopts & ~WOL_SUPPORTED)
|
|
|
return -EINVAL;
|
|
@@ -1111,7 +1112,12 @@ pegasus_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
|
|
|
else
|
|
|
pegasus->eth_regs[0] &= ~0x10;
|
|
|
pegasus->wolopts = wol->wolopts;
|
|
|
- return set_register(pegasus, WakeupControl, reg78);
|
|
|
+
|
|
|
+ ret = set_register(pegasus, WakeupControl, reg78);
|
|
|
+ if (!ret)
|
|
|
+ ret = device_set_wakeup_enable(&pegasus->usb->dev,
|
|
|
+ wol->wolopts);
|
|
|
+ return ret;
|
|
|
}
|
|
|
|
|
|
static inline void pegasus_reset_wol(struct net_device *dev)
|