Commit 8a60efd1 authored by Michael Chan's avatar Michael Chan Committed by Jakub Kicinski
Browse files

bnxt_en: Skip disabling autoneg before PHY loopback when appropriate.



New firmware allows PHY loopback to be set without disabling autoneg
first.  Check this capability and skip disabling autoneg when
it is supported by firmware.  Using this scheme, loopback will
always work even if the PHY only supports autoneg.

Signed-off-by: default avatarMichael Chan <michael.chan@broadcom.com>
Signed-off-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
parent 1acefc9a
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -8419,7 +8419,8 @@ static int bnxt_hwrm_phy_qcaps(struct bnxt *bp)

	bp->flags &= ~BNXT_FLAG_EEE_CAP;
	if (bp->test_info)
		bp->test_info->flags &= ~BNXT_TEST_FL_EXT_LPBK;
		bp->test_info->flags &= ~(BNXT_TEST_FL_EXT_LPBK |
					  BNXT_TEST_FL_AN_PHY_LPBK);
	if (bp->hwrm_spec_code < 0x10201)
		return 0;

@@ -8445,6 +8446,10 @@ static int bnxt_hwrm_phy_qcaps(struct bnxt *bp)
		if (bp->test_info)
			bp->test_info->flags |= BNXT_TEST_FL_EXT_LPBK;
	}
	if (resp->flags & PORT_PHY_QCAPS_RESP_FLAGS_AUTONEG_LPBK_SUPPORTED) {
		if (bp->test_info)
			bp->test_info->flags |= BNXT_TEST_FL_AN_PHY_LPBK;
	}
	if (resp->supported_speeds_auto_mode)
		link_info->support_auto_speeds =
			le16_to_cpu(resp->supported_speeds_auto_mode);
+2 −1
Original line number Diff line number Diff line
@@ -1227,6 +1227,7 @@ struct bnxt_test_info {
	u8 offline_mask;
	u8 flags;
#define BNXT_TEST_FL_EXT_LPBK		0x1
#define BNXT_TEST_FL_AN_PHY_LPBK	0x2
	u16 timeout;
	char string[BNXT_MAX_TEST][ETH_GSTRING_LEN];
};
+2 −1
Original line number Diff line number Diff line
@@ -2698,7 +2698,8 @@ static int bnxt_disable_an_for_lpbk(struct bnxt *bp,
	u16 fw_speed;
	int rc;

	if (!link_info->autoneg)
	if (!link_info->autoneg ||
	    (bp->test_info->flags & BNXT_TEST_FL_AN_PHY_LPBK))
		return 0;

	rc = bnxt_query_force_speeds(bp, &fw_advertising);