|
@@ -9948,16 +9948,16 @@ static int tg3_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
|
|
|
!((tp->tg3_flags & TG3_FLAG_WOL_CAP) && device_can_wakeup(dp)))
|
|
|
return -EINVAL;
|
|
|
|
|
|
+ device_set_wakeup_enable(dp, wol->wolopts & WAKE_MAGIC);
|
|
|
+
|
|
|
spin_lock_bh(&tp->lock);
|
|
|
- if (wol->wolopts & WAKE_MAGIC) {
|
|
|
+ if (device_may_wakeup(dp))
|
|
|
tp->tg3_flags |= TG3_FLAG_WOL_ENABLE;
|
|
|
- device_set_wakeup_enable(dp, true);
|
|
|
- } else {
|
|
|
+ else
|
|
|
tp->tg3_flags &= ~TG3_FLAG_WOL_ENABLE;
|
|
|
- device_set_wakeup_enable(dp, false);
|
|
|
- }
|
|
|
spin_unlock_bh(&tp->lock);
|
|
|
|
|
|
+
|
|
|
return 0;
|
|
|
}
|
|
|
|