forked from Minki/linux
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: Michael Chan <michael.chan@broadcom.com> Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
This commit is contained in:
parent
1acefc9aed
commit
8a60efd1de
@ -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);
|
||||
|
@ -1226,7 +1226,8 @@ struct bnxt_led_info {
|
||||
struct bnxt_test_info {
|
||||
u8 offline_mask;
|
||||
u8 flags;
|
||||
#define BNXT_TEST_FL_EXT_LPBK 0x1
|
||||
#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];
|
||||
};
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user