Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 885fe7be authored by Matthew Vick's avatar Matthew Vick Committed by Jeff Kirsher
Browse files

e1000e: Resolve intermittent negotiation issue on 82574/82583.



For 82574 and 82583 devices, resolve an intermittent link issue where
the link negotiates to 100Mbps rather than 1Gbps when powering off the
PHY and powering on the PHY after several seconds.

Signed-off-by: default avatarMatthew Vick <matthew.vick@intel.com>
Tested-by: default avatarAaron Brown <aaron.f.brown@intel.com>
Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
parent f1430d69
Loading
Loading
Loading
Loading
+17 −1
Original line number Diff line number Diff line
@@ -722,8 +722,24 @@ s32 e1000e_copper_link_setup_m88(struct e1000_hw *hw)
		phy_data |= M88E1000_PSCR_POLARITY_REVERSAL;

	/* Enable downshift on BM (disabled by default) */
	if (phy->type == e1000_phy_bm)
	if (phy->type == e1000_phy_bm) {
		/* For 82574/82583, first disable then enable downshift */
		if (phy->id == BME1000_E_PHY_ID_R2) {
			phy_data &= ~BME1000_PSCR_ENABLE_DOWNSHIFT;
			ret_val = e1e_wphy(hw, M88E1000_PHY_SPEC_CTRL,
					   phy_data);
			if (ret_val)
				return ret_val;
			/* Commit the changes. */
			ret_val = e1000e_commit_phy(hw);
			if (ret_val) {
				e_dbg("Error committing the PHY changes\n");
				return ret_val;
			}
		}

		phy_data |= BME1000_PSCR_ENABLE_DOWNSHIFT;
	}

	ret_val = e1e_wphy(hw, M88E1000_PHY_SPEC_CTRL, phy_data);
	if (ret_val)