diff options
author | Ajit Khaparde <ajitk@serverengines.com> | 2009-12-03 06:16:59 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-12-03 12:39:21 -0800 |
commit | 71d8d1b58aa4025ea73a66a130a98d0ed077f9b1 (patch) | |
tree | 36034463fa1b1438ad018fbaafbe9dac60159751 /drivers/net/benet/be_ethtool.c | |
parent | d744b44e21a2c908aae23a60da1b4ce35cd925ef (diff) | |
download | linux-71d8d1b58aa4025ea73a66a130a98d0ed077f9b1.tar.gz linux-71d8d1b58aa4025ea73a66a130a98d0ed077f9b1.tar.bz2 linux-71d8d1b58aa4025ea73a66a130a98d0ed077f9b1.zip |
be2net: Support for WoL using magic packet after suspend.
Add support for WOL using Magic Packet after suspend is done.
Signed-off-by: Sarveshwar Bandi <sarveshwarb@serverengines.com>
Signed-off-by: Ajit Khaparde <ajitk@serverengines.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/benet/be_ethtool.c')
-rw-r--r-- | drivers/net/benet/be_ethtool.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/drivers/net/benet/be_ethtool.c b/drivers/net/benet/be_ethtool.c index 329560f9e543..83a2fc703995 100644 --- a/drivers/net/benet/be_ethtool.c +++ b/drivers/net/benet/be_ethtool.c @@ -411,6 +411,36 @@ be_phys_id(struct net_device *netdev, u32 data) return status; } +static void +be_get_wol(struct net_device *netdev, struct ethtool_wolinfo *wol) +{ + struct be_adapter *adapter = netdev_priv(netdev); + + wol->supported = WAKE_MAGIC; + if (adapter->wol) + wol->wolopts = WAKE_MAGIC; + else + wol->wolopts = 0; + memset(&wol->sopass, 0, sizeof(wol->sopass)); + return; +} + +static int +be_set_wol(struct net_device *netdev, struct ethtool_wolinfo *wol) +{ + struct be_adapter *adapter = netdev_priv(netdev); + + if (wol->wolopts & ~WAKE_MAGIC) + return -EINVAL; + + if (wol->wolopts & WAKE_MAGIC) + adapter->wol = true; + else + adapter->wol = false; + + return 0; +} + static int be_do_flash(struct net_device *netdev, struct ethtool_flash *efl) { @@ -428,6 +458,8 @@ be_do_flash(struct net_device *netdev, struct ethtool_flash *efl) const struct ethtool_ops be_ethtool_ops = { .get_settings = be_get_settings, .get_drvinfo = be_get_drvinfo, + .get_wol = be_get_wol, + .set_wol = be_set_wol, .get_link = ethtool_op_get_link, .get_coalesce = be_get_coalesce, .set_coalesce = be_set_coalesce, |