ixgbe: fix read-modify-write in x550 phy setup
authorPaul Greenwalt <paul.greenwalt@intel.com>
Thu, 15 Mar 2018 12:22:07 +0000 (08:22 -0400)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Fri, 23 Mar 2018 21:49:07 +0000 (14:49 -0700)
Replaced an assignment operation with an OR operation.

The variable assignment was overwriting the value read from the PHY
register. The OR operation sets only the intended register bits.

The bits that were being overwritten are reserved, so the assignment had no
functional impact.

Reported by: Shannon Nelson <shannon.nelson@oracle.com>
Signed-off-by: Paul Greenwalt <paul.greenwalt@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/ixgbe/ixgbe_x550.c

index f470d020477174f6dba278ce4439c65a5a447d6e..3123267dfba974049cc26496570cafe842eb81ac 100644 (file)
@@ -1847,9 +1847,9 @@ ixgbe_setup_mac_link_sfp_x550a(struct ixgbe_hw *hw, ixgbe_link_speed speed,
                         (IXGBE_CS4227_EDC_MODE_SR << 1));
 
        if (setup_linear)
-               reg_phy_ext = (IXGBE_CS4227_EDC_MODE_CX1 << 1) | 1;
+               reg_phy_ext |= (IXGBE_CS4227_EDC_MODE_CX1 << 1) | 1;
        else
-               reg_phy_ext = (IXGBE_CS4227_EDC_MODE_SR << 1) | 1;
+               reg_phy_ext |= (IXGBE_CS4227_EDC_MODE_SR << 1) | 1;
 
        ret_val = hw->phy.ops.write_reg(hw, reg_slice,
                                        IXGBE_MDIO_ZERO_DEV_TYPE, reg_phy_ext);