From: Ajit Khaparde <ajit.khaparde@broadcom.com> To: dpdk-dev <dev@dpdk.org> Subject: Re: [dpdk-dev] [PATCH] net/bnxt: fix PAM4 link negotiation Date: Mon, 2 Nov 2020 16:24:47 -0800 Message-ID: <CACZ4nhvfRSU_9=Z3f3sgz7LV7EoZdpyABy_qHVtfMrfXNegLzQ@mail.gmail.com> (raw) In-Reply-To: <20201102024316.78661-1-ajit.khaparde@broadcom.com> On Sun, Nov 1, 2020 at 6:43 PM Ajit Khaparde <ajit.khaparde@broadcom.com> wrote: > In some instances link was not coming up if PAM4 signaling is enabled. > Added check to disable autoneg if FW indicates auto speeds are zero. > Use default auto speeds if PAM4 auto speeds is not set. > Added a fix for forced link setting. > > Fixes: c23f9ded0391 ("net/bnxt: support 200G PAM4 link") > > Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com> > Applied to dpdk-next-net-brcm. Thanks > --- > drivers/net/bnxt/bnxt_ethdev.c | 4 ++++ > drivers/net/bnxt/bnxt_hwrm.c | 22 ++++++++++++++++++++-- > 2 files changed, 24 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/bnxt/bnxt_ethdev.c > b/drivers/net/bnxt/bnxt_ethdev.c > index 21ea370bf5..70edf824bc 100644 > --- a/drivers/net/bnxt/bnxt_ethdev.c > +++ b/drivers/net/bnxt/bnxt_ethdev.c > @@ -845,6 +845,10 @@ uint32_t bnxt_get_speed_capabilities(struct bnxt *bp) > uint32_t link_speed = bp->link_info->support_speeds; > uint32_t speed_capa = 0; > > + /* If PAM4 is configured, use PAM4 supported speed */ > + if (link_speed == 0 && bp->link_info->support_pam4_speeds > 0) > + link_speed = bp->link_info->support_pam4_speeds; > + > if (link_speed & HWRM_PORT_PHY_QCFG_OUTPUT_LINK_SPEED_100MB) > speed_capa |= ETH_LINK_SPEED_100M; > if (link_speed & HWRM_PORT_PHY_QCFG_OUTPUT_SUPPORT_SPEEDS_100MBHD) > diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c > index 84702125cc..24c33185b4 100644 > --- a/drivers/net/bnxt/bnxt_hwrm.c > +++ b/drivers/net/bnxt/bnxt_hwrm.c > @@ -1272,9 +1272,10 @@ static int bnxt_hwrm_port_phy_cfg(struct bnxt *bp, > struct bnxt_link_info *conf) > > HWRM_PORT_PHY_CFG_IN_EN_FORCE_PAM4_LINK_SPEED; > req.force_pam4_link_speed = > rte_cpu_to_le_16(conf->link_speed); > - } > - req.force_link_speed = > + } else { > + req.force_link_speed = > rte_cpu_to_le_16(conf->link_speed); > + } > } > /* AutoNeg - Advertise speeds specified. */ > if (conf->auto_link_speed_mask && > @@ -1370,6 +1371,11 @@ static int bnxt_hwrm_port_phy_qcfg(struct bnxt *bp, > link_info->link_speed, link_info->auto_mode, > link_info->auto_link_speed, > link_info->auto_link_speed_mask, > link_info->support_speeds, > link_info->force_link_speed); > + PMD_DRV_LOG(DEBUG, "Link > Signal:%d,PAM::Auto:%x,Support:%x,Force:%x\n", > + link_info->link_signal_mode, > + link_info->auto_pam4_link_speeds, > + link_info->support_pam4_speeds, > + link_info->force_pam4_link_speed); > return rc; > } > > @@ -3071,6 +3077,12 @@ int bnxt_set_hwrm_link_config(struct bnxt *bp, bool > link_up) > autoneg = 0; > } > > + /* No auto speeds and no auto_pam4_link. Disable autoneg */ > + if (bp->link_info->auto_link_speed == 0 && > + bp->link_info->link_signal_mode && > + bp->link_info->auto_pam4_link_speeds == 0) > + autoneg = 0; > + > speed = bnxt_parse_eth_link_speed(dev_conf->link_speeds, > bp->link_info->link_signal_mode); > link_req.phy_flags = HWRM_PORT_PHY_CFG_INPUT_FLAGS_RESET_PHY; > @@ -3116,6 +3128,12 @@ int bnxt_set_hwrm_link_config(struct bnxt *bp, bool > link_up) > link_req.link_speed = > bp->link_info->force_link_speed; > else > link_req.link_speed = > bp->link_info->auto_link_speed; > + /* Auto PAM4 link speed is zero, but auto_link_speed is not > + * zero. Use the auto_link_speed. > + */ > + if (bp->link_info->auto_link_speed != 0 && > + bp->link_info->auto_pam4_link_speeds == 0) > + link_req.link_speed = > bp->link_info->auto_link_speed; > } > link_req.duplex = > bnxt_parse_eth_link_duplex(dev_conf->link_speeds); > link_req.auto_pause = bp->link_info->auto_pause; > -- > 2.21.1 (Apple Git-122.3) > >
prev parent reply other threads:[~2020-11-03 0:25 UTC|newest] Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-11-02 2:43 Ajit Khaparde 2020-11-03 0:24 ` Ajit Khaparde [this message]
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to='CACZ4nhvfRSU_9=Z3f3sgz7LV7EoZdpyABy_qHVtfMrfXNegLzQ@mail.gmail.com' \ --to=ajit.khaparde@broadcom.com \ --cc=dev@dpdk.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
DPDK patches and discussions This inbox may be cloned and mirrored by anyone: git clone --mirror https://inbox.dpdk.org/dev/0 dev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 dev dev/ https://inbox.dpdk.org/dev \ dev@dpdk.org public-inbox-index dev Example config snippet for mirrors. Newsgroup available over NNTP: nntp://inbox.dpdk.org/inbox.dpdk.dev AGPL code for this site: git clone https://public-inbox.org/public-inbox.git