From 34a075947879232fcbaf656665380ce25f0523aa Mon Sep 17 00:00:00 2001 From: Kalesh AP Date: Wed, 27 Apr 2022 20:28:16 +0530 Subject: [PATCH] net/bnxt: fix speed autonegotiation 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: c23f9ded0391 ("net/bnxt: support 200G PAM4 link") Cc: stable@dpdk.org Signed-off-by: Kalesh AP Reviewed-by: Ajit Khaparde Reviewed-by: Somnath Kotur --- drivers/net/bnxt/bnxt_hwrm.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c index 82d1a6205b..6e4753c508 100644 --- a/drivers/net/bnxt/bnxt_hwrm.c +++ b/drivers/net/bnxt/bnxt_hwrm.c @@ -1429,17 +1429,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 =