Skip to content

Commit

Permalink
ixgbe: Fix 1G link WoL
Browse files Browse the repository at this point in the history
We reset during the shutdown path which will reset AUTOC register.  This
would change LMS to 10G.  If we were currently linked at 1G we will lose
link, which is a bad thing if we wanted WoL to work.  For the fix I needed
to know if WoL is supported so I created a new bool in the ixgbe_hw struct.
If this is set we will not allow the reset to change the current LMS value
in AUTOC.

Signed-off-by: Don Skidmore <donald.c.skidmore@intel.com>
Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
  • Loading branch information
Don Skidmore authored and Jeff Kirsher committed Apr 18, 2013
1 parent 0b2679d commit b8f8363
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 2 deletions.
5 changes: 4 additions & 1 deletion drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c
Original file line number Diff line number Diff line change
Expand Up @@ -1051,8 +1051,11 @@ static s32 ixgbe_reset_hw_82599(struct ixgbe_hw *hw)
/* If MNG FW is running on a multi-speed device that
* doesn't autoneg with out driver support we need to
* leave LMS in the state it was before we MAC reset.
* Likewise if we support WoL we don't want change the
* LMS state either.
*/
if (hw->phy.multispeed_fiber && hw->mng_fw_enabled)
if ((hw->phy.multispeed_fiber && hw->mng_fw_enabled) ||
hw->wol_supported)
hw->mac.orig_autoc =
(hw->mac.orig_autoc & ~IXGBE_AUTOC_LMS_MASK) |
curr_lms;
Expand Down
4 changes: 3 additions & 1 deletion drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -7526,7 +7526,9 @@ static int ixgbe_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
/* WOL not supported for all devices */
adapter->wol = 0;
hw->eeprom.ops.read(hw, 0x2c, &adapter->eeprom_cap);
if (ixgbe_wol_supported(adapter, pdev->device, pdev->subsystem_device))
hw->wol_supported = ixgbe_wol_supported(adapter, pdev->device,
pdev->subsystem_device);
if (hw->wol_supported)
adapter->wol = IXGBE_WUFC_MAG;

device_set_wakeup_enable(&adapter->pdev->dev, adapter->wol);
Expand Down
1 change: 1 addition & 0 deletions drivers/net/ethernet/intel/ixgbe/ixgbe_type.h
Original file line number Diff line number Diff line change
Expand Up @@ -2998,6 +2998,7 @@ struct ixgbe_hw {
bool force_full_reset;
bool allow_unsupported_sfp;
bool mng_fw_enabled;
bool wol_supported;
};

struct ixgbe_info {
Expand Down

0 comments on commit b8f8363

Please sign in to comment.