From patchwork Wed Jun 15 14:56:56 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kalesh A P X-Patchwork-Id: 112781 X-Patchwork-Delegate: ajit.khaparde@broadcom.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 53C75A0548; Wed, 15 Jun 2022 16:57:48 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4282142B7D; Wed, 15 Jun 2022 16:57:45 +0200 (CEST) Received: from relay.smtp-ext.broadcom.com (relay.smtp-ext.broadcom.com [192.19.166.231]) by mails.dpdk.org (Postfix) with ESMTP id D30C340F19 for ; Wed, 15 Jun 2022 16:57:42 +0200 (CEST) Received: from dhcp-10-123-153-22.dhcp.broadcom.net (bgccx-dev-host-lnx2.bec.broadcom.net [10.123.153.22]) by relay.smtp-ext.broadcom.com (Postfix) with ESMTP id 1CB1FC0000F3; Wed, 15 Jun 2022 07:57:40 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com 1CB1FC0000F3 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1655305062; bh=4OiFAsa33I+6ClAbDVwltLEXkQxZ8QQtoD3neHCmSYA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=codVjPZ0f6MdIhE1yREDy0URdha3HAbsAbZIGs0xn98bHsp9SfJcyH285WBoQ81zY QPGm9rLVwdv3L1roDfxvrRRtqCa4qWx3HJn7JYTImDMBTv++vMb4ke8njJgzFA6TDm nfI63RQwRCsgkWytkJNfM4UVM6IbNcMLQAl4AO88= From: Kalesh A P To: dev@dpdk.org Cc: ferruh.yigit@xilinx.com, ajit.khaparde@broadcom.com Subject: [dpdk-dev] [PATCH 1/8] net/bnxt: remove assert for zero data len in Tx path Date: Wed, 15 Jun 2022 20:26:56 +0530 Message-Id: <20220615145703.6613-2-kalesh-anakkur.purayil@broadcom.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20220615145703.6613-1-kalesh-anakkur.purayil@broadcom.com> References: <20220615145703.6613-1-kalesh-anakkur.purayil@broadcom.com> X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Somnath Kotur Currently the PMD tries to detect a potential 0 byte DMA by using RTE_VERIFY. But since RTE_VERIFY internally calls rte_panic() it is fatal to the application and some applications want to avoid that. So return an error from the bnxt xmit handler if such a bad pkt is encountered by logging an error message, dumping the pkt header and dump the current stack as well Signed-off-by: Somnath Kotur Reviewed-by: Ajit Khaparde --- drivers/net/bnxt/bnxt_txr.c | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/drivers/net/bnxt/bnxt_txr.c b/drivers/net/bnxt/bnxt_txr.c index 7a7196a..67e0167 100644 --- a/drivers/net/bnxt/bnxt_txr.c +++ b/drivers/net/bnxt/bnxt_txr.c @@ -123,6 +123,26 @@ bnxt_xmit_need_long_bd(struct rte_mbuf *tx_pkt, struct bnxt_tx_queue *txq) return false; } +static bool +bnxt_zero_data_len_tso_segsz(struct rte_mbuf *tx_pkt, uint8_t data_len_chk) +{ + const char *type_str = "Data len"; + uint16_t len_to_check = tx_pkt->data_len; + + if (data_len_chk == 0) { + type_str = "TSO Seg size"; + len_to_check = tx_pkt->tso_segsz; + } + + if (len_to_check == 0) { + PMD_DRV_LOG(ERR, "Error! Tx pkt %s == 0\n", type_str); + rte_pktmbuf_dump(stdout, tx_pkt, 64); + rte_dump_stack(); + return true; + } + return false; +} + static uint16_t bnxt_start_xmit(struct rte_mbuf *tx_pkt, struct bnxt_tx_queue *txq, uint16_t *coal_pkts, @@ -179,7 +199,8 @@ static uint16_t bnxt_start_xmit(struct rte_mbuf *tx_pkt, } /* Check non zero data_len */ - RTE_VERIFY(tx_pkt->data_len); + if (unlikely(bnxt_zero_data_len_tso_segsz(tx_pkt, 1))) + return -EIO; prod = RING_IDX(ring, txr->tx_raw_prod); tx_buf = &txr->tx_buf_ring[prod]; @@ -256,7 +277,8 @@ static uint16_t bnxt_start_xmit(struct rte_mbuf *tx_pkt, */ txbd1->kid_or_ts_low_hdr_size = hdr_size >> 1; txbd1->kid_or_ts_high_mss = tx_pkt->tso_segsz; - RTE_VERIFY(txbd1->kid_or_ts_high_mss); + if (unlikely(bnxt_zero_data_len_tso_segsz(tx_pkt, 0))) + return -EIO; } else if ((tx_pkt->ol_flags & PKT_TX_OIP_IIP_TCP_UDP_CKSUM) == PKT_TX_OIP_IIP_TCP_UDP_CKSUM) { @@ -330,7 +352,8 @@ static uint16_t bnxt_start_xmit(struct rte_mbuf *tx_pkt, m_seg = tx_pkt->next; while (m_seg) { /* Check non zero data_len */ - RTE_VERIFY(m_seg->data_len); + if (unlikely(bnxt_zero_data_len_tso_segsz(m_seg, 1))) + return -EIO; txr->tx_raw_prod = RING_NEXT(txr->tx_raw_prod); prod = RING_IDX(ring, txr->tx_raw_prod); From patchwork Wed Jun 15 14:56:57 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kalesh A P X-Patchwork-Id: 112782 X-Patchwork-Delegate: ajit.khaparde@broadcom.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 0ED80A0548; Wed, 15 Jun 2022 16:57:55 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0675842B86; Wed, 15 Jun 2022 16:57:46 +0200 (CEST) Received: from relay.smtp-ext.broadcom.com (lpdvsmtp11.broadcom.com [192.19.166.231]) by mails.dpdk.org (Postfix) with ESMTP id 81A9642B7A for ; Wed, 15 Jun 2022 16:57:44 +0200 (CEST) Received: from dhcp-10-123-153-22.dhcp.broadcom.net (bgccx-dev-host-lnx2.bec.broadcom.net [10.123.153.22]) by relay.smtp-ext.broadcom.com (Postfix) with ESMTP id BC6FDC0000E6; Wed, 15 Jun 2022 07:57:42 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com BC6FDC0000E6 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1655305063; bh=LtVCwMJ9BVOLDS1kAXv21uiJNrBlbeumonAdxkjoCuw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=JruA0iuNv4glJGLinrYir7alvWoGHnac607AUdqA4XgppHCWPq3No4yj0UBSUHNcz RBhuUcEoZ61F8cTyBgb8sqDLCeUWVoYPjLqgu2/dtpilDnxgzB5u8WmDdpU90w3/Ie JBNRAIIAeSeXt7Hwi1XRVkR9kk7qjEotcyTjcuus= From: Kalesh A P To: dev@dpdk.org Cc: ferruh.yigit@xilinx.com, ajit.khaparde@broadcom.com Subject: [dpdk-dev] [PATCH 2/8] net/bnxt: fix switch domain allocation Date: Wed, 15 Jun 2022 20:26:57 +0530 Message-Id: <20220615145703.6613-3-kalesh-anakkur.purayil@broadcom.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20220615145703.6613-1-kalesh-anakkur.purayil@broadcom.com> References: <20220615145703.6613-1-kalesh-anakkur.purayil@broadcom.com> X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Ajit Khaparde Allocate switch domain after the trusted VF capability is queried from the FW. Currently we are calling the function earlier. Since the switch domain is allocated only for PFs or trusted VF, the current location of code fails to allocate the domain during init. But during cleanup we try to free the domain incorrectly. Fix the behavior by changing the sequence of function calls. Fixes: 3127f99274b67 ("net/bnxt: refactor init/uninit") Cc: stable@dpdk.org Signed-off-by: Ajit Khaparde Reviewed-by: Somnath Kotur Reviewed-by: Kalesh AP Reviewed-by: Andy Gospodarek --- drivers/net/bnxt/bnxt_ethdev.c | 45 +++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index 0f0f40b..34f2149 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -5287,6 +5287,25 @@ bnxt_init_locks(struct bnxt *bp) return err; } +/* This should be called after we have queried trusted VF cap */ +static int bnxt_alloc_switch_domain(struct bnxt *bp) +{ + int rc = 0; + + if (BNXT_PF(bp) || BNXT_VF_IS_TRUSTED(bp)) { + rc = rte_eth_switch_domain_alloc(&bp->switch_domain_id); + if (rc) + PMD_DRV_LOG(ERR, + "Failed to alloc switch domain: %d\n", rc); + else + PMD_DRV_LOG(INFO, + "Switch domain allocated %d\n", + bp->switch_domain_id); + } + + return rc; +} + static int bnxt_init_resources(struct bnxt *bp, bool reconfig_dev) { int rc = 0; @@ -5295,6 +5314,10 @@ static int bnxt_init_resources(struct bnxt *bp, bool reconfig_dev) if (rc) return rc; + rc = bnxt_alloc_switch_domain(bp); + if (rc) + return rc; + if (!reconfig_dev) { rc = bnxt_setup_mac_addr(bp->eth_dev); if (rc) @@ -5734,24 +5757,6 @@ bnxt_parse_dev_args(struct bnxt *bp, struct rte_devargs *devargs) return ret; } -static int bnxt_alloc_switch_domain(struct bnxt *bp) -{ - int rc = 0; - - if (BNXT_PF(bp) || BNXT_VF_IS_TRUSTED(bp)) { - rc = rte_eth_switch_domain_alloc(&bp->switch_domain_id); - if (rc) - PMD_DRV_LOG(ERR, - "Failed to alloc switch domain: %d\n", rc); - else - PMD_DRV_LOG(INFO, - "Switch domain allocated %d\n", - bp->switch_domain_id); - } - - return rc; -} - /* Allocate and initialize various fields in bnxt struct that * need to be allocated/destroyed only once in the lifetime of the driver */ @@ -5828,10 +5833,6 @@ static int bnxt_drv_init(struct rte_eth_dev *eth_dev) if (rc) return rc; - rc = bnxt_alloc_switch_domain(bp); - if (rc) - return rc; - return rc; } From patchwork Wed Jun 15 14:56:58 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kalesh A P X-Patchwork-Id: 112783 X-Patchwork-Delegate: ajit.khaparde@broadcom.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 67420A0548; Wed, 15 Jun 2022 16:58:01 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id BF24442B8C; Wed, 15 Jun 2022 16:57:47 +0200 (CEST) Received: from relay.smtp-ext.broadcom.com (relay.smtp-ext.broadcom.com [192.19.166.231]) by mails.dpdk.org (Postfix) with ESMTP id 38DE340F19 for ; Wed, 15 Jun 2022 16:57:46 +0200 (CEST) Received: from dhcp-10-123-153-22.dhcp.broadcom.net (bgccx-dev-host-lnx2.bec.broadcom.net [10.123.153.22]) by relay.smtp-ext.broadcom.com (Postfix) with ESMTP id 6BB71C0000F3; Wed, 15 Jun 2022 07:57:44 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com 6BB71C0000F3 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1655305065; bh=zR4SgCticLlt1ZDBwB9w4IzMQW1MUL/8fqQWZdaaMFc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=QZ8rD0H/M15wCYjgf99JAVyTC8CGlXr2nqn8Rbt7jfUck1W4X7EC8ajX1GijA/qj9 3EBXsaijsGk86D45B44sXha2rDqXNuafJPn2sU83ex8aVS15rUKxaKgFQ5Ceur+2cV bJRPFAbtGnTanTaRKkOCDVa9DixQJXh9ng11jvx0= From: Kalesh A P To: dev@dpdk.org Cc: ferruh.yigit@xilinx.com, ajit.khaparde@broadcom.com Subject: [dpdk-dev] [PATCH 3/8] net/bnxt: reduce the verbosity of a log Date: Wed, 15 Jun 2022 20:26:58 +0530 Message-Id: <20220615145703.6613-4-kalesh-anakkur.purayil@broadcom.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20220615145703.6613-1-kalesh-anakkur.purayil@broadcom.com> References: <20220615145703.6613-1-kalesh-anakkur.purayil@broadcom.com> X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Kalesh AP Broadcom HW drops packets when there are no descriptors available. It does not matter what flag the application specifies in "rx_drop_en" when configuring the Rx ring. Reduce the verbosity of the log to print the status of the "rx_drop_en" when configuring the Rx ring. Signed-off-by: Kalesh AP Reviewed-by: Somnath Kotur Reviewed-by: Ajit Khaparde --- drivers/net/bnxt/bnxt_rxq.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/drivers/net/bnxt/bnxt_rxq.c b/drivers/net/bnxt/bnxt_rxq.c index ef2ef83..f4b6417 100644 --- a/drivers/net/bnxt/bnxt_rxq.c +++ b/drivers/net/bnxt/bnxt_rxq.c @@ -360,9 +360,8 @@ int bnxt_rx_queue_setup_op(struct rte_eth_dev *eth_dev, rxq->rx_free_thresh = RTE_MIN(rte_align32pow2(nb_desc) / 4, RTE_BNXT_MAX_RX_BURST); - if (rx_conf->rx_drop_en != BNXT_DEFAULT_RX_DROP_EN) - PMD_DRV_LOG(NOTICE, - "Per-queue config of drop-en is not supported.\n"); + PMD_DRV_LOG(DEBUG, + "App supplied RXQ drop_en status : %d\n", rx_conf->rx_drop_en); rxq->drop_en = BNXT_DEFAULT_RX_DROP_EN; PMD_DRV_LOG(DEBUG, "RX Buf MTU %d\n", eth_dev->data->mtu); From patchwork Wed Jun 15 14:56:59 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kalesh A P X-Patchwork-Id: 112784 X-Patchwork-Delegate: ajit.khaparde@broadcom.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 11F5FA0548; Wed, 15 Jun 2022 16:58:08 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 86E1D42B8E; Wed, 15 Jun 2022 16:57:50 +0200 (CEST) Received: from relay.smtp-ext.broadcom.com (relay.smtp-ext.broadcom.com [192.19.166.231]) by mails.dpdk.org (Postfix) with ESMTP id C55DA42B8E for ; Wed, 15 Jun 2022 16:57:47 +0200 (CEST) Received: from dhcp-10-123-153-22.dhcp.broadcom.net (bgccx-dev-host-lnx2.bec.broadcom.net [10.123.153.22]) by relay.smtp-ext.broadcom.com (Postfix) with ESMTP id 21AF3C0000F5; Wed, 15 Jun 2022 07:57:45 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com 21AF3C0000F5 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1655305067; bh=Xca0aoY9VRsN1ZuJ/pFbi7zq3oNx3ug7iH07dKNh54A=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=XT7GFO7ba2j1kRK/2d5shiORawiovwXXnJ6dxuEPRFafVHI8KQdWqLcg1EgDbZM0l oyQ0ljG5J8wup2jNFv2TjP5lUNkpmt9k5E+P+NEc87HKwDtzTvA+ytakHgjGf+X60b KD2TAjyHoUCIGBBq6UCXa/Pbw7/zCDMPEln/MwVs= From: Kalesh A P To: dev@dpdk.org Cc: ferruh.yigit@xilinx.com, ajit.khaparde@broadcom.com Subject: [dpdk-dev] [PATCH 4/8] net/bnxt: allow Tx only or Rx only configs in PMD Date: Wed, 15 Jun 2022 20:26:59 +0530 Message-Id: <20220615145703.6613-5-kalesh-anakkur.purayil@broadcom.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20220615145703.6613-1-kalesh-anakkur.purayil@broadcom.com> References: <20220615145703.6613-1-kalesh-anakkur.purayil@broadcom.com> X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Damodharam Ammepalli Currently, we fail the init/probe of pmd if eth_dev->data->nb_tx_queues or eth_dev->data->nb_rx_queues is 0. We are removing this check. Fixes: daef48efe5e5 ("net/bnxt: support set MTU") Cc: stable@dpdk.org Signed-off-by: Damodharam Ammepalli Reviewed-by: Ajit Khaparde Reviewed-by: Somnath Kotur --- drivers/net/bnxt/bnxt_ethdev.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index 34f2149..8181e1f 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -723,7 +723,7 @@ static int bnxt_alloc_prev_ring_stats(struct bnxt *bp) sizeof(struct bnxt_ring_stats) * bp->tx_cp_nr_rings, 0); - if (bp->prev_tx_ring_stats == NULL) + if (bp->tx_cp_nr_rings > 0 && bp->prev_tx_ring_stats == NULL) goto error; return 0; @@ -1567,11 +1567,6 @@ int bnxt_dev_start_op(struct rte_eth_dev *eth_dev) int vlan_mask = 0; int rc, retry_cnt = BNXT_IF_CHANGE_RETRY_COUNT; - if (!eth_dev->data->nb_tx_queues || !eth_dev->data->nb_rx_queues) { - PMD_DRV_LOG(ERR, "Queues are not configured yet!\n"); - return -EINVAL; - } - if (bp->rx_cp_nr_rings > RTE_ETHDEV_QUEUE_STAT_CNTRS) PMD_DRV_LOG(ERR, "RxQ cnt %d > RTE_ETHDEV_QUEUE_STAT_CNTRS %d\n", From patchwork Wed Jun 15 14:57:00 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kalesh A P X-Patchwork-Id: 112785 X-Patchwork-Delegate: ajit.khaparde@broadcom.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 2E9C3A0548; Wed, 15 Jun 2022 16:58:14 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4CB2E42B95; Wed, 15 Jun 2022 16:57:52 +0200 (CEST) Received: from relay.smtp-ext.broadcom.com (lpdvsmtp11.broadcom.com [192.19.166.231]) by mails.dpdk.org (Postfix) with ESMTP id 753E342B8E for ; Wed, 15 Jun 2022 16:57:49 +0200 (CEST) Received: from dhcp-10-123-153-22.dhcp.broadcom.net (bgccx-dev-host-lnx2.bec.broadcom.net [10.123.153.22]) by relay.smtp-ext.broadcom.com (Postfix) with ESMTP id C09C9C0000E6; Wed, 15 Jun 2022 07:57:47 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com C09C9C0000E6 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1655305068; bh=U/Yr7RHdaYZtrxDWRn4VuywKNXBAjPqgXQ4+lVAcwI0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=eGVt1VJ+3ov527H7KLU2YdcoXuC7wdxMvgCRsjBhbJvhYtVS6/+bOidwn139xeasQ 6kfkNeiqZNvIRyNrZ8ouyXXqXwO+YORdUZ0bj9SKGw4KSrVXL/ZIh+27b5ByAgAIvx sScjP8loAeyvnJxQU7XjmNOQ5GfVArX2hfysn970= From: Kalesh A P To: dev@dpdk.org Cc: ferruh.yigit@xilinx.com, ajit.khaparde@broadcom.com Subject: [dpdk-dev] [PATCH 5/8] net/bnxt: fix setting forced speed Date: Wed, 15 Jun 2022 20:27:00 +0530 Message-Id: <20220615145703.6613-6-kalesh-anakkur.purayil@broadcom.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20220615145703.6613-1-kalesh-anakkur.purayil@broadcom.com> References: <20220615145703.6613-1-kalesh-anakkur.purayil@broadcom.com> X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Kalesh AP 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 forced speed. While setting forced speed of 50G/100G/200G, check if PAM4 speeds are supported for the port first and then populate the HWRM request accordingly. Also, If PAM4 speed is supported, use PAM4 supported speed while reporting speed capabilities. 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_ethdev.c | 11 ++++++----- drivers/net/bnxt/bnxt_hwrm.c | 27 +++++++++++++++++++-------- drivers/net/bnxt/bnxt_hwrm.h | 3 +++ 3 files changed, 28 insertions(+), 13 deletions(-) diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index 8181e1f..4e4791c 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -903,6 +903,7 @@ static int bnxt_shutdown_nic(struct bnxt *bp) uint32_t bnxt_get_speed_capabilities(struct bnxt *bp) { + uint32_t pam4_link_speed = 0; uint32_t link_speed = 0; uint32_t speed_capa = 0; @@ -912,8 +913,8 @@ uint32_t bnxt_get_speed_capabilities(struct bnxt *bp) link_speed = bp->link_info->support_speeds; /* 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 (bp->link_info->support_pam4_speeds > 0) + pam4_link_speed = bp->link_info->support_pam4_speeds; if (link_speed & HWRM_PORT_PHY_QCFG_OUTPUT_LINK_SPEED_100MB) speed_capa |= RTE_ETH_LINK_SPEED_100M; @@ -935,11 +936,11 @@ uint32_t bnxt_get_speed_capabilities(struct bnxt *bp) speed_capa |= RTE_ETH_LINK_SPEED_50G; if (link_speed & HWRM_PORT_PHY_QCFG_OUTPUT_SUPPORT_SPEEDS_100GB) speed_capa |= RTE_ETH_LINK_SPEED_100G; - if (link_speed & HWRM_PORT_PHY_QCFG_OUTPUT_SUPPORT_PAM4_SPEEDS_50G) + if (pam4_link_speed & HWRM_PORT_PHY_QCFG_OUTPUT_SUPPORT_PAM4_SPEEDS_50G) speed_capa |= RTE_ETH_LINK_SPEED_50G; - if (link_speed & HWRM_PORT_PHY_QCFG_OUTPUT_SUPPORT_PAM4_SPEEDS_100G) + if (pam4_link_speed & HWRM_PORT_PHY_QCFG_OUTPUT_SUPPORT_PAM4_SPEEDS_100G) speed_capa |= RTE_ETH_LINK_SPEED_100G; - if (link_speed & HWRM_PORT_PHY_QCFG_OUTPUT_SUPPORT_PAM4_SPEEDS_200G) + if (pam4_link_speed & HWRM_PORT_PHY_QCFG_OUTPUT_SUPPORT_PAM4_SPEEDS_200G) speed_capa |= RTE_ETH_LINK_SPEED_200G; if (bp->link_info->auto_mode == diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c index 9eb8b8d..206ac20 100644 --- a/drivers/net/bnxt/bnxt_hwrm.c +++ b/drivers/net/bnxt/bnxt_hwrm.c @@ -2970,7 +2970,7 @@ static uint16_t bnxt_check_eth_link_autoneg(uint32_t conf_link) } static uint16_t bnxt_parse_eth_link_speed(uint32_t conf_link_speed, - uint16_t pam4_link) + struct bnxt_link_info *link_info) { uint16_t eth_link_speed = 0; @@ -3009,18 +3009,29 @@ static uint16_t bnxt_parse_eth_link_speed(uint32_t conf_link_speed, HWRM_PORT_PHY_CFG_INPUT_FORCE_LINK_SPEED_40GB; break; case RTE_ETH_LINK_SPEED_50G: - eth_link_speed = pam4_link ? - HWRM_PORT_PHY_CFG_INPUT_FORCE_PAM4_LINK_SPEED_50GB : - HWRM_PORT_PHY_CFG_INPUT_FORCE_LINK_SPEED_50GB; + if (link_info->support_pam4_speeds & + HWRM_PORT_PHY_QCFG_OUTPUT_SUPPORT_PAM4_SPEEDS_50G) { + eth_link_speed = HWRM_PORT_PHY_CFG_INPUT_FORCE_PAM4_LINK_SPEED_50GB; + link_info->link_signal_mode = BNXT_SIG_MODE_PAM4; + } else { + eth_link_speed = HWRM_PORT_PHY_CFG_INPUT_FORCE_LINK_SPEED_50GB; + link_info->link_signal_mode = BNXT_SIG_MODE_NRZ; + } break; case RTE_ETH_LINK_SPEED_100G: - eth_link_speed = pam4_link ? - HWRM_PORT_PHY_CFG_INPUT_FORCE_PAM4_LINK_SPEED_100GB : - HWRM_PORT_PHY_CFG_INPUT_FORCE_LINK_SPEED_100GB; + if (link_info->support_pam4_speeds & + HWRM_PORT_PHY_QCFG_OUTPUT_SUPPORT_PAM4_SPEEDS_100G) { + eth_link_speed = HWRM_PORT_PHY_CFG_INPUT_FORCE_PAM4_LINK_SPEED_100GB; + link_info->link_signal_mode = BNXT_SIG_MODE_PAM4; + } else { + eth_link_speed = HWRM_PORT_PHY_CFG_INPUT_FORCE_LINK_SPEED_100GB; + link_info->link_signal_mode = BNXT_SIG_MODE_NRZ; + } break; case RTE_ETH_LINK_SPEED_200G: eth_link_speed = HWRM_PORT_PHY_CFG_INPUT_FORCE_PAM4_LINK_SPEED_200GB; + link_info->link_signal_mode = BNXT_SIG_MODE_PAM4; break; default: PMD_DRV_LOG(ERR, @@ -3242,7 +3253,7 @@ int bnxt_set_hwrm_link_config(struct bnxt *bp, bool link_up) autoneg = 0; speed = bnxt_parse_eth_link_speed(dev_conf->link_speeds, - bp->link_info->link_signal_mode); + bp->link_info); link_req.phy_flags = HWRM_PORT_PHY_CFG_INPUT_FLAGS_RESET_PHY; /* Autoneg can be done only when the FW allows. */ if (autoneg == 1 && diff --git a/drivers/net/bnxt/bnxt_hwrm.h b/drivers/net/bnxt/bnxt_hwrm.h index 77f8521..a82d9fb 100644 --- a/drivers/net/bnxt/bnxt_hwrm.h +++ b/drivers/net/bnxt/bnxt_hwrm.h @@ -141,6 +141,9 @@ struct bnxt_pf_resource_info { BNXT_TUNNELED_OFFLOADS_CAP_GRE_EN(bp) && \ BNXT_TUNNELED_OFFLOADS_CAP_IPINIP_EN(bp)) +#define BNXT_SIG_MODE_NRZ HWRM_PORT_PHY_QCFG_OUTPUT_SIGNAL_MODE_NRZ +#define BNXT_SIG_MODE_PAM4 HWRM_PORT_PHY_QCFG_OUTPUT_SIGNAL_MODE_PAM4 + int bnxt_hwrm_cfa_l2_clear_rx_mask(struct bnxt *bp, struct bnxt_vnic_info *vnic); int bnxt_hwrm_cfa_l2_set_rx_mask(struct bnxt *bp, struct bnxt_vnic_info *vnic, From patchwork Wed Jun 15 14:57:01 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kalesh A P X-Patchwork-Id: 112786 X-Patchwork-Delegate: ajit.khaparde@broadcom.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 26752A0548; Wed, 15 Jun 2022 16:58:21 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1A5C142B8A; Wed, 15 Jun 2022 16:57:53 +0200 (CEST) Received: from relay.smtp-ext.broadcom.com (relay.smtp-ext.broadcom.com [192.19.166.231]) by mails.dpdk.org (Postfix) with ESMTP id 1F18C42B92 for ; Wed, 15 Jun 2022 16:57:51 +0200 (CEST) Received: from dhcp-10-123-153-22.dhcp.broadcom.net (bgccx-dev-host-lnx2.bec.broadcom.net [10.123.153.22]) by relay.smtp-ext.broadcom.com (Postfix) with ESMTP id 6D011C0000F3; Wed, 15 Jun 2022 07:57:49 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com 6D011C0000F3 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1655305070; bh=UBoTeAeoczpCcTmSg6BtuOYk1IVaPJz4xJrEDjQogKo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=R/Mk4oLJ3Y7E6YOiFs2Yy36DZh1gJFdpz7I3DUuZw8IEmwg/Se74kBCqTQaUpKiJJ aB3ln27NQ76ydYMTVLrm/SZvrI5wfsj2tMCc/jywhXnfDxDAbTdMPzum8OfDy00drR OZINkK6ro3MVjtDQt+tJPep0/2z3jKvPaPUm8ps8= From: Kalesh A P To: dev@dpdk.org Cc: ferruh.yigit@xilinx.com, ajit.khaparde@broadcom.com Subject: [dpdk-dev] [PATCH 6/8] net/bnxt: disallow MTU change when device is started Date: Wed, 15 Jun 2022 20:27:01 +0530 Message-Id: <20220615145703.6613-7-kalesh-anakkur.purayil@broadcom.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20220615145703.6613-1-kalesh-anakkur.purayil@broadcom.com> References: <20220615145703.6613-1-kalesh-anakkur.purayil@broadcom.com> X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Damodharam Ammepalli With this patch, bnxt_mtu_set_op() will return an error code if the device has already started. The user application will have to take care to bring down device before invoking the mtu_set() Fixes: daef48efe5e5 ("net/bnxt: support set MTU") Cc: stable@dpdk.org Signed-off-by: Damodharam Ammepalli Reviewed-by: Andy Gospodarek Reviewed-by: Ajit Khaparde --- drivers/net/bnxt/bnxt_ethdev.c | 28 ++++++++-------------------- 1 file changed, 8 insertions(+), 20 deletions(-) diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index 4e4791c..f040cdc 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -3019,9 +3019,7 @@ bnxt_tx_burst_mode_get(struct rte_eth_dev *dev, __rte_unused uint16_t queue_id, int bnxt_mtu_set_op(struct rte_eth_dev *eth_dev, uint16_t new_mtu) { - uint32_t overhead = BNXT_MAX_PKT_LEN - BNXT_MAX_MTU; struct bnxt *bp = eth_dev->data->dev_private; - uint32_t new_pkt_size; uint32_t rc; uint32_t i; @@ -3029,25 +3027,15 @@ int bnxt_mtu_set_op(struct rte_eth_dev *eth_dev, uint16_t new_mtu) if (rc) return rc; + /* Return if port is active */ + if (eth_dev->data->dev_started) { + PMD_DRV_LOG(ERR, "Stop port before changing MTU\n"); + return -EPERM; + } + /* Exit if receive queues are not configured yet */ if (!eth_dev->data->nb_rx_queues) - return rc; - - new_pkt_size = new_mtu + overhead; - - /* - * Disallow any MTU change that would require scattered receive support - * if it is not already enabled. - */ - if (eth_dev->data->dev_started && - !eth_dev->data->scattered_rx && - (new_pkt_size > - eth_dev->data->min_rx_buf_size - RTE_PKTMBUF_HEADROOM)) { - PMD_DRV_LOG(ERR, - "MTU change would require scattered rx support. "); - PMD_DRV_LOG(ERR, "Stop port before changing MTU.\n"); - return -EINVAL; - } + return -ENOTSUP; if (new_mtu > RTE_ETHER_MTU) bp->flags |= BNXT_FLAG_JUMBO; @@ -3056,7 +3044,7 @@ int bnxt_mtu_set_op(struct rte_eth_dev *eth_dev, uint16_t new_mtu) /* Is there a change in mtu setting? */ if (eth_dev->data->mtu == new_mtu) - return rc; + return 0; for (i = 0; i < bp->nr_vnics; i++) { struct bnxt_vnic_info *vnic = &bp->vnic_info[i]; From patchwork Wed Jun 15 14:57:02 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kalesh A P X-Patchwork-Id: 112787 X-Patchwork-Delegate: ajit.khaparde@broadcom.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id E01ADA0548; Wed, 15 Jun 2022 16:58:27 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D665242BA5; Wed, 15 Jun 2022 16:57:53 +0200 (CEST) Received: from relay.smtp-ext.broadcom.com (lpdvsmtp11.broadcom.com [192.19.166.231]) by mails.dpdk.org (Postfix) with ESMTP id C31B842B8A for ; Wed, 15 Jun 2022 16:57:52 +0200 (CEST) Received: from dhcp-10-123-153-22.dhcp.broadcom.net (bgccx-dev-host-lnx2.bec.broadcom.net [10.123.153.22]) by relay.smtp-ext.broadcom.com (Postfix) with ESMTP id 19D37C0000E6; Wed, 15 Jun 2022 07:57:50 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com 19D37C0000E6 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1655305072; bh=369kr2sUpBzp5GMifAyjK4/8zsDCn0O7RfDPAPOxgP4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=VxrCIjPBf8xlpNIOIC4ZuWa+q3U2GWxu+qeeOccuW0PPUNepMTKfVV1O/Zx7YgD/o sXItJi+BoF+KjhA8ByHo3Kfr4wbsnHXhdtNTNDqC51APehEwtoeFDzWyOaDq8Y9Vwo NyCCehJcPZaasLwp/0/bCy8DjjKPipEmmJPi6bIc= From: Kalesh A P To: dev@dpdk.org Cc: ferruh.yigit@xilinx.com, ajit.khaparde@broadcom.com Subject: [dpdk-dev] [PATCH 7/8] net/bnxt: cleanups in MTU set callback Date: Wed, 15 Jun 2022 20:27:02 +0530 Message-Id: <20220615145703.6613-8-kalesh-anakkur.purayil@broadcom.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20220615145703.6613-1-kalesh-anakkur.purayil@broadcom.com> References: <20220615145703.6613-1-kalesh-anakkur.purayil@broadcom.com> X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Damodharam Ammepalli Minor cleanup in bnxt_mtu_set_op() to move pre-mature setting of jumbo flag post mtu check and remove a redundant mtu set operation from rxq vnic configs. Fixes: daef48efe5e5 ("net/bnxt: support set MTU") Cc: stable@dpdk.org Signed-off-by: Damodharam Ammepalli Reviewed-by: Ajit Khaparde Reviewed-by: Somnath Kotur --- drivers/net/bnxt/bnxt_ethdev.c | 8 ++++---- drivers/net/bnxt/bnxt_rxq.c | 4 ---- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index f040cdc..e275d3a 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -3037,15 +3037,15 @@ int bnxt_mtu_set_op(struct rte_eth_dev *eth_dev, uint16_t new_mtu) if (!eth_dev->data->nb_rx_queues) return -ENOTSUP; + /* Is there a change in mtu setting? */ + if (eth_dev->data->mtu == new_mtu) + return 0; + if (new_mtu > RTE_ETHER_MTU) bp->flags |= BNXT_FLAG_JUMBO; else bp->flags &= ~BNXT_FLAG_JUMBO; - /* Is there a change in mtu setting? */ - if (eth_dev->data->mtu == new_mtu) - return 0; - for (i = 0; i < bp->nr_vnics; i++) { struct bnxt_vnic_info *vnic = &bp->vnic_info[i]; uint16_t size = 0; diff --git a/drivers/net/bnxt/bnxt_rxq.c b/drivers/net/bnxt/bnxt_rxq.c index f4b6417..fabbbd4 100644 --- a/drivers/net/bnxt/bnxt_rxq.c +++ b/drivers/net/bnxt/bnxt_rxq.c @@ -402,10 +402,6 @@ int bnxt_rx_queue_setup_op(struct rte_eth_dev *eth_dev, rxq->rx_started = rxq->rx_deferred_start ? false : true; rxq->vnic = BNXT_GET_DEFAULT_VNIC(bp); - /* Configure mtu if it is different from what was configured before */ - if (!queue_idx) - bnxt_mtu_set_op(eth_dev, eth_dev->data->mtu); - return 0; err: bnxt_rx_queue_release_op(eth_dev, queue_idx); From patchwork Wed Jun 15 14:57:03 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kalesh A P X-Patchwork-Id: 112788 X-Patchwork-Delegate: ajit.khaparde@broadcom.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 06A58A0548; Wed, 15 Jun 2022 16:58:37 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id DF69542BB1; Wed, 15 Jun 2022 16:57:55 +0200 (CEST) Received: from relay.smtp-ext.broadcom.com (lpdvsmtp11.broadcom.com [192.19.166.231]) by mails.dpdk.org (Postfix) with ESMTP id 6F67642BAB for ; Wed, 15 Jun 2022 16:57:54 +0200 (CEST) Received: from dhcp-10-123-153-22.dhcp.broadcom.net (bgccx-dev-host-lnx2.bec.broadcom.net [10.123.153.22]) by relay.smtp-ext.broadcom.com (Postfix) with ESMTP id BB6B7C0000F3; Wed, 15 Jun 2022 07:57:52 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com BB6B7C0000F3 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1655305073; bh=RGgEN/MdcVYT4q/6Naw47Ixmhdbu6cPEW04qRdS1Dvs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=s7M1NHVwsZkTQiQEyWOMEvQOQt8qhQtcGrOkPkRHvWRwExnCGaPuka5LZjiXXtgFW waUL7P5EB1RrNN6tNT7Uf8HB8/ia415R5dVf/I+wnMDNwPLw2Uhc+PIkgOGHGXJe5a Oy64ZocqN3phVuPV89smY+VRxLvN53UsGsqkMhxk= From: Kalesh A P To: dev@dpdk.org Cc: ferruh.yigit@xilinx.com, ajit.khaparde@broadcom.com Subject: [dpdk-dev] [PATCH 8/8] net/bnxt: fix the check for autoneg enablement in the PHY FW Date: Wed, 15 Jun 2022 20:27:03 +0530 Message-Id: <20220615145703.6613-9-kalesh-anakkur.purayil@broadcom.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20220615145703.6613-1-kalesh-anakkur.purayil@broadcom.com> References: <20220615145703.6613-1-kalesh-anakkur.purayil@broadcom.com> X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Somnath Kotur The current combination of checks to determine whether autoneg is enabled in the card is a bit convoluted and may become incorrect as well in the future as one of the fields being used - auto_link_speed might become deprecated. Switch to using the 'auto_mode' field obtained from the response of HWRM_PHY_QCFG cmd as that is always deterministically set by the PHY FW. Fixed a bug in the 40G check to only look for the bit setting and not the actual value. Also, check the forced speeds first before trying to enforce the auto speeds Allow the user to set autoneg speed in all cases except for PAM4 200G as PAM4 200G will come up only in forced mode. Fixes: c23f9ded0391 ("net/bnxt: support 200G PAM4 link") Signed-off-by: Somnath Kotur Reviewed-by: Kalesh AP Reviewed-by: Ajit Khaparde --- drivers/net/bnxt/bnxt_hwrm.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c index 206ac20..9c52573 100644 --- a/drivers/net/bnxt/bnxt_hwrm.c +++ b/drivers/net/bnxt/bnxt_hwrm.c @@ -3235,9 +3235,11 @@ int bnxt_set_hwrm_link_config(struct bnxt *bp, bool link_up) if (!link_up) goto port_phy_cfg; + /* Get user requested autoneg setting */ autoneg = bnxt_check_eth_link_autoneg(dev_conf->link_speeds); + if (BNXT_CHIP_P5(bp) && - dev_conf->link_speeds == RTE_ETH_LINK_SPEED_40G) { + dev_conf->link_speeds & RTE_ETH_LINK_SPEED_40G) { /* 40G is not supported as part of media auto detect. * The speed should be forced and autoneg disabled * to configure 40G speed. @@ -3246,11 +3248,13 @@ 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_speed_mask == 0) + /* Override based on current Autoneg setting in PHY for 200G */ + if (autoneg == 1 && BNXT_CHIP_P5(bp) && bp->link_info->auto_mode == 0 && + bp->link_info->force_pam4_link_speed == + HWRM_PORT_PHY_CFG_INPUT_FORCE_PAM4_LINK_SPEED_200GB) { autoneg = 0; + PMD_DRV_LOG(DEBUG, "Disabling autoneg for 200G\n"); + } speed = bnxt_parse_eth_link_speed(dev_conf->link_speeds, bp->link_info); @@ -3283,14 +3287,14 @@ int bnxt_set_hwrm_link_config(struct bnxt *bp, bool link_up) else if (bp->link_info->force_pam4_link_speed) link_req.link_speed = bp->link_info->force_pam4_link_speed; + else if (bp->link_info->force_link_speed) + link_req.link_speed = bp->link_info->force_link_speed; else if (bp->link_info->auto_pam4_link_speed_mask) link_req.link_speed = bp->link_info->auto_pam4_link_speed_mask; else if (bp->link_info->support_pam4_speeds) link_req.link_speed = bp->link_info->support_pam4_speeds; - else if (bp->link_info->force_link_speed) - 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