Commit 61941143 authored by Heiner Kallweit's avatar Heiner Kallweit Committed by David S. Miller

net: core: add member wol_enabled to struct net_device

Add flag wol_enabled to struct net_device indicating whether
Wake-on-LAN is enabled. As first user phy_suspend() will use it to
decide whether PHY can be suspended or not.

Fixes: f1e911d5 ("r8169: add basic phylib support")
Fixes: e8cfd9d6 ("net: phy: call state machine synchronously in phy_stop")
Signed-off-by: default avatarHeiner Kallweit <hkallweit1@gmail.com>
Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent d31d1d03
...@@ -1730,6 +1730,8 @@ enum netdev_priv_flags { ...@@ -1730,6 +1730,8 @@ enum netdev_priv_flags {
* switch driver and used to set the phys state of the * switch driver and used to set the phys state of the
* switch port. * switch port.
* *
* @wol_enabled: Wake-on-LAN is enabled
*
* FIXME: cleanup struct net_device such that network protocol info * FIXME: cleanup struct net_device such that network protocol info
* moves out. * moves out.
*/ */
...@@ -2014,6 +2016,7 @@ struct net_device { ...@@ -2014,6 +2016,7 @@ struct net_device {
struct lock_class_key *qdisc_tx_busylock; struct lock_class_key *qdisc_tx_busylock;
struct lock_class_key *qdisc_running_key; struct lock_class_key *qdisc_running_key;
bool proto_down; bool proto_down;
unsigned wol_enabled:1;
}; };
#define to_net_dev(d) container_of(d, struct net_device, dev) #define to_net_dev(d) container_of(d, struct net_device, dev)
......
...@@ -1483,6 +1483,7 @@ static int ethtool_get_wol(struct net_device *dev, char __user *useraddr) ...@@ -1483,6 +1483,7 @@ static int ethtool_get_wol(struct net_device *dev, char __user *useraddr)
static int ethtool_set_wol(struct net_device *dev, char __user *useraddr) static int ethtool_set_wol(struct net_device *dev, char __user *useraddr)
{ {
struct ethtool_wolinfo wol; struct ethtool_wolinfo wol;
int ret;
if (!dev->ethtool_ops->set_wol) if (!dev->ethtool_ops->set_wol)
return -EOPNOTSUPP; return -EOPNOTSUPP;
...@@ -1490,7 +1491,13 @@ static int ethtool_set_wol(struct net_device *dev, char __user *useraddr) ...@@ -1490,7 +1491,13 @@ static int ethtool_set_wol(struct net_device *dev, char __user *useraddr)
if (copy_from_user(&wol, useraddr, sizeof(wol))) if (copy_from_user(&wol, useraddr, sizeof(wol)))
return -EFAULT; return -EFAULT;
return dev->ethtool_ops->set_wol(dev, &wol); ret = dev->ethtool_ops->set_wol(dev, &wol);
if (ret)
return ret;
dev->wol_enabled = !!wol.wolopts;
return 0;
} }
static int ethtool_get_eee(struct net_device *dev, char __user *useraddr) static int ethtool_get_eee(struct net_device *dev, char __user *useraddr)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment