s32 ret_val;
        u16 phy_data;
 
-       if (phy->reset_disable) {
-               ret_val = 0;
-               goto out;
-       }
+       if (phy->reset_disable)
+               return 0;
 
        /* Enable CRS on Tx. This must be set for half-duplex operation. */
        ret_val = phy->ops.read_reg(hw, M88E1000_PHY_SPEC_CTRL, &phy_data);
        if (ret_val)
-               goto out;
+               return ret_val;
 
        /* Options:
         *   MDI/MDI-X = 0 (default)
                phy_data |= M88E1000_PSCR_POLARITY_REVERSAL;
 
        /* Enable downshift and setting it to X6 */
+       if (phy->id == M88E1543_E_PHY_ID) {
+               phy_data &= ~I347AT4_PSCR_DOWNSHIFT_ENABLE;
+               ret_val =
+                   phy->ops.write_reg(hw, M88E1000_PHY_SPEC_CTRL, phy_data);
+               if (ret_val)
+                       return ret_val;
+
+               ret_val = igb_phy_sw_reset(hw);
+               if (ret_val) {
+                       hw_dbg("Error committing the PHY changes\n");
+                       return ret_val;
+               }
+       }
+
        phy_data &= ~I347AT4_PSCR_DOWNSHIFT_MASK;
        phy_data |= I347AT4_PSCR_DOWNSHIFT_6X;
        phy_data |= I347AT4_PSCR_DOWNSHIFT_ENABLE;
 
        ret_val = phy->ops.write_reg(hw, M88E1000_PHY_SPEC_CTRL, phy_data);
        if (ret_val)
-               goto out;
+               return ret_val;
 
        /* Commit the changes. */
        ret_val = igb_phy_sw_reset(hw);
        if (ret_val) {
                hw_dbg("Error committing the PHY changes\n");
-               goto out;
+               return ret_val;
        }
 
-out:
-       return ret_val;
+       return 0;
 }
 
 /**