Skip to content

Commit

Permalink
net/bnxt: fix speed autonegotiation
Browse files Browse the repository at this point in the history
[ upstream commit 34a0759 ]

The "active_fec_signal_mode" in HWRM_PORT_PHY_QCFG response
does not return correct value till the link is up. Driver cannot
rely on active_fec_signal_mode while setting autoneg speed.

While setting autoneg speed, driver is currently checking only
"auto_link_speed_mask". Fixed to check "auto_pam4_link_speed_mask"
as well. Also, while setting auto mode and setting speed mask,
driver will have to set both NRZ and PAM4 mask.

Fixes: c23f9de ("net/bnxt: support 200G PAM4 link")

Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>
  • Loading branch information
Kalesh AP authored and kevintraynor committed May 25, 2022
1 parent ce36a5d commit db239d7
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions drivers/net/bnxt/bnxt_hwrm.c
Expand Up @@ -1424,17 +1424,17 @@ static int bnxt_hwrm_port_phy_cfg(struct bnxt *bp, struct bnxt_link_info *conf)
}
}
/* AutoNeg - Advertise speeds specified. */
if (conf->auto_link_speed_mask &&
if ((conf->auto_link_speed_mask || conf->auto_pam4_link_speed_mask) &&
!(conf->phy_flags & HWRM_PORT_PHY_CFG_INPUT_FLAGS_FORCE)) {
req.auto_mode =
HWRM_PORT_PHY_CFG_INPUT_AUTO_MODE_SPEED_MASK;
if (conf->auto_pam4_link_speed_mask &&
bp->link_info->link_signal_mode) {
if (conf->auto_pam4_link_speed_mask) {
enables |=
HWRM_PORT_PHY_CFG_IN_EN_AUTO_PAM4_LINK_SPD_MASK;
req.auto_link_pam4_speed_mask =
rte_cpu_to_le_16(conf->auto_pam4_link_speed_mask);
} else {
}
if (conf->auto_link_speed_mask) {
enables |=
HWRM_PORT_PHY_CFG_IN_EN_AUTO_LINK_SPEED_MASK;
req.auto_link_speed_mask =
Expand Down

0 comments on commit db239d7

Please sign in to comment.