]> git.droids-corp.org - dpdk.git/commitdiff
net/bnxt: fix speed autonegotiation
authorKalesh AP <kalesh-anakkur.purayil@broadcom.com>
Wed, 27 Apr 2022 14:58:16 +0000 (20:28 +0530)
committerAjit Khaparde <ajit.khaparde@broadcom.com>
Tue, 10 May 2022 05:13:41 +0000 (07:13 +0200)
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 <kalesh-anakkur.purayil@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>
drivers/net/bnxt/bnxt_hwrm.c

index 82d1a6205b1dd23e04ee78f32bb7566431941074..6e4753c508c2a5a64d014ca18266edc585e07764 100644 (file)
@@ -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 =