be2net: restrict WOL to PFs only.
authorAjit Khaparde <ajit.khaparde@emulex.com>
Fri, 11 Feb 2011 13:39:30 +0000 (13:39 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sat, 12 Feb 2011 05:14:49 +0000 (21:14 -0800)
WOL is not supported for Vrtual Functions.

Signed-off-by: Ajit Khaparde <ajit.khaparde@emulex.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/benet/be_ethtool.c

index 0c993147334662c67345f8f629b4978c15c5e810..07b4ab902b17c7d4cbf14789511338207f6e96b4 100644 (file)
@@ -516,12 +516,23 @@ be_phys_id(struct net_device *netdev, u32 data)
        return status;
 }
 
+static bool
+be_is_wol_supported(struct be_adapter *adapter)
+{
+       if (!be_physfn(adapter))
+               return false;
+       else
+               return true;
+}
+
 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 (be_is_wol_supported(adapter))
+               wol->supported = WAKE_MAGIC;
+
        if (adapter->wol)
                wol->wolopts = WAKE_MAGIC;
        else
@@ -537,7 +548,7 @@ be_set_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
        if (wol->wolopts & ~WAKE_MAGIC)
                return -EINVAL;
 
-       if (wol->wolopts & WAKE_MAGIC)
+       if ((wol->wolopts & WAKE_MAGIC) && be_is_wol_supported(adapter))
                adapter->wol = true;
        else
                adapter->wol = false;