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:f1e911d5d0
("r8169: add basic phylib support") Fixes:e8cfd9d6c7
("net: phy: call state machine synchronously in phy_stop") Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
d31d1d03aa
commit
6194114324
|
@ -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 {
|
||||||
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)
|
||||||
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)
|
||||||
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)
|
||||||
|
|
Loading…
Reference in New Issue