mirror of https://gitee.com/openkylin/linux.git
ixgbe: only allow WOL for 82599 KX4 NIC
All NICs were reporting WOL support when only the KX4 NIC is capable of supporting WOL. This patch adds a function to check for and exclude all non-WOL capable nics from enabling WOL in ethtool. Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com> Acked-by: Peter P Waskiewicz Jr <peter.p.waskiewicz.jr@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
87c1201708
commit
d6c519e129
|
@ -943,6 +943,24 @@ static void ixgbe_get_strings(struct net_device *netdev, u32 stringset,
|
|||
}
|
||||
|
||||
|
||||
static int ixgbe_wol_exclusion(struct ixgbe_adapter *adapter,
|
||||
struct ethtool_wolinfo *wol)
|
||||
{
|
||||
struct ixgbe_hw *hw = &adapter->hw;
|
||||
int retval = 1;
|
||||
|
||||
switch(hw->device_id) {
|
||||
case IXGBE_DEV_ID_82599_KX4:
|
||||
retval = 0;
|
||||
break;
|
||||
default:
|
||||
wol->supported = 0;
|
||||
retval = 0;
|
||||
}
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
static void ixgbe_get_wol(struct net_device *netdev,
|
||||
struct ethtool_wolinfo *wol)
|
||||
{
|
||||
|
@ -952,7 +970,8 @@ static void ixgbe_get_wol(struct net_device *netdev,
|
|||
WAKE_BCAST | WAKE_MAGIC;
|
||||
wol->wolopts = 0;
|
||||
|
||||
if (!device_can_wakeup(&adapter->pdev->dev))
|
||||
if (ixgbe_wol_exclusion(adapter, wol) ||
|
||||
!device_can_wakeup(&adapter->pdev->dev))
|
||||
return;
|
||||
|
||||
if (adapter->wol & IXGBE_WUFC_EX)
|
||||
|
@ -974,6 +993,9 @@ static int ixgbe_set_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
|
|||
if (wol->wolopts & (WAKE_PHY | WAKE_ARP | WAKE_MAGICSECURE))
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
if (ixgbe_wol_exclusion(adapter, wol))
|
||||
return wol->wolopts ? -EOPNOTSUPP : 0;
|
||||
|
||||
adapter->wol = 0;
|
||||
|
||||
if (wol->wolopts & WAKE_UCAST)
|
||||
|
|
Loading…
Reference in New Issue