ixgbe: fix ixgbe_stop_mac_link_on_d3_82599 to check mng correctly
authorJacob Keller <jacob.e.keller@intel.com>
Sat, 22 Feb 2014 01:23:55 +0000 (01:23 +0000)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Thu, 20 Mar 2014 06:27:01 +0000 (23:27 -0700)
Previously, we did a full check to see if MNG FW was running. Instead,
we should only check to see whether it could be enabled. Since it may
become active while down, we don't want to bring the link down.

CC: Arun Sharma <asharma@fb.com>
Signed-off-by: Don Skidmore <donald.c.skidmore@intel.com>
Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c

index fcba1d9734f94898ef181ebc862f1a0bea66beab..ef808bcec2768b5b5810ba9c39906a2fde69cf97 100644 (file)
@@ -517,12 +517,16 @@ out:
  **/
 static void ixgbe_stop_mac_link_on_d3_82599(struct ixgbe_hw *hw)
 {
-       u32 autoc2_reg;
+       u32 autoc2_reg, fwsm;
        u16 ee_ctrl_2 = 0;
 
        hw->eeprom.ops.read(hw, IXGBE_EEPROM_CTRL_2, &ee_ctrl_2);
 
-       if (!hw->mng_fw_enabled && !hw->wol_enabled &&
+       /* Check to see if MNG FW could be enabled */
+       fwsm = IXGBE_READ_REG(hw, IXGBE_FWSM);
+
+       if (((fwsm & IXGBE_FWSM_MODE_MASK) != IXGBE_FWSM_FW_MODE_PT) &&
+           !hw->wol_enabled &&
            ee_ctrl_2 & IXGBE_EEPROM_CCD_BIT) {
                autoc2_reg = IXGBE_READ_REG(hw, IXGBE_AUTOC2);
                autoc2_reg |= IXGBE_AUTOC2_LINK_DISABLE_ON_D3_MASK;