]> git.hungrycats.org Git - linux/commitdiff
ixgbe: Correct X550EM_x revision check
authorMark Rustad <mark.d.rustad@intel.com>
Fri, 20 Nov 2015 21:12:17 +0000 (13:12 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 10 Nov 2018 15:41:38 +0000 (07:41 -0800)
[ Upstream commit 3ca2b2506ec9a3b1615930a6810d30ec9aba10a1 ]

The X550EM_x revision check needs to check a value, not just a bit.
Use a mask and check the value. Also remove the redundant check
inside the ixgbe_enter_lplu_t_x550em, because it can only be called
when both the mac type and revision check pass.

Signed-off-by: Mark Rustad <mark.d.rustad@intel.com>
Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/ethernet/intel/ixgbe/ixgbe_type.h
drivers/net/ethernet/intel/ixgbe/ixgbe_x550.c

index 995f03107eacd03511dab6aa8e342a6c474375e1..04bc4df82fa7fcbefdb70c31c302060f4bb7e037 100644 (file)
@@ -3508,7 +3508,7 @@ struct ixgbe_info {
 
 #define IXGBE_FUSES0_GROUP(_i)         (0x11158 + ((_i) * 4))
 #define IXGBE_FUSES0_300MHZ            BIT(5)
-#define IXGBE_FUSES0_REV1              BIT(6)
+#define IXGBE_FUSES0_REV_MASK          (3 << 6)
 
 #define IXGBE_KRM_PORT_CAR_GEN_CTRL(P) ((P) ? 0x8010 : 0x4010)
 #define IXGBE_KRM_LINK_CTRL_1(P)       ((P) ? 0x820C : 0x420C)
index a75f2e3ce86fa4afc0f57b5776e95d94f6ab402e..ffd2e74e5638c8bb65e9676f0ca0d494f452cfac 100644 (file)
@@ -1873,10 +1873,6 @@ static s32 ixgbe_enter_lplu_t_x550em(struct ixgbe_hw *hw)
        u32 save_autoneg;
        bool link_up;
 
-       /* SW LPLU not required on later HW revisions. */
-       if (IXGBE_FUSES0_REV1 & IXGBE_READ_REG(hw, IXGBE_FUSES0_GROUP(0)))
-               return 0;
-
        /* If blocked by MNG FW, then don't restart AN */
        if (ixgbe_check_reset_blocked(hw))
                return 0;
@@ -2030,8 +2026,9 @@ static s32 ixgbe_init_phy_ops_X550em(struct ixgbe_hw *hw)
                }
 
                /* setup SW LPLU only for first revision */
-               if (!(IXGBE_FUSES0_REV1 & IXGBE_READ_REG(hw,
-                                                       IXGBE_FUSES0_GROUP(0))))
+               if (hw->mac.type == ixgbe_mac_X550EM_x &&
+                   !(IXGBE_READ_REG(hw, IXGBE_FUSES0_GROUP(0)) &
+                     IXGBE_FUSES0_REV_MASK))
                        phy->ops.enter_lplu = ixgbe_enter_lplu_t_x550em;
 
                phy->ops.handle_lasi = ixgbe_handle_lasi_ext_t_x550em;