From patchwork Tue Jan 4 08:38:07 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: 105600 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 ABAEAA00C5; Tue, 4 Jan 2022 09:19:19 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id ED89341147; Tue, 4 Jan 2022 09:19:13 +0100 (CET) Received: from relay.smtp-ext.broadcom.com (lpdvsmtp11.broadcom.com [192.19.166.231]) by mails.dpdk.org (Postfix) with ESMTP id E65E141145 for ; Tue, 4 Jan 2022 09:19:12 +0100 (CET) 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 412EAC0000F2; Tue, 4 Jan 2022 00:19:10 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com 412EAC0000F2 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1641284351; bh=JPbnz156Dp2Z7zqTgirVBgBuE2+JfJH+6zrffiWmKD0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=PGJAAT4lTXDlUlEPOW+4cX5gHC7nYXzPjuwINOKCo0WPxLajowLpV/vopJw399tpE jmIUjwq4eBHTfXwSwVRrZgDh+neYomzR4CncQJjt9ih4zEBH0UUTXpYxswWjVVjyVB G5DQ+yDMaxDTuHJHgryxb+q4fKus6XaIOpt9CfM4= From: Kalesh A P To: dev@dpdk.org Cc: ferruh.yigit@intel.com, ajit.khaparde@broadcom.com Subject: [dpdk-dev] [PATCH 01/18] net/bnxt: fix bnxt_dev_set_mc_addr_list_op Date: Tue, 4 Jan 2022 14:08:07 +0530 Message-Id: <20220104083824.23001-2-kalesh-anakkur.purayil@broadcom.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20220104083824.23001-1-kalesh-anakkur.purayil@broadcom.com> References: <20220104083824.23001-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 Fix to cache the multicast mac addresses added to the port to the driver private structure memory. Use this cached mc list to program the FW. This fixes an issue where multicast packets reception is successful only if the multicast mac address of the packets is the first one in the multicast address list of the port. This is in preparation for another fix in the series. Fixes: d69851df12b2 ("net/bnxt: support multicast filter and set MAC addr") Cc: stable@dpdk.org Signed-off-by: Kalesh AP Reviewed-by: Ajit Khaparde Reviewed-by: Somnath Kotur --- drivers/net/bnxt/bnxt.h | 5 +++++ drivers/net/bnxt/bnxt_ethdev.c | 34 +++++++++++++++++++++++++--------- drivers/net/bnxt/bnxt_hwrm.c | 4 ++-- drivers/net/bnxt/bnxt_vnic.c | 7 +------ drivers/net/bnxt/bnxt_vnic.h | 4 ---- 5 files changed, 33 insertions(+), 21 deletions(-) diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h index 2341610..521fcb7 100644 --- a/drivers/net/bnxt/bnxt.h +++ b/drivers/net/bnxt/bnxt.h @@ -891,6 +891,11 @@ struct bnxt { uint16_t tx_cfa_action; struct bnxt_ring_stats *prev_rx_ring_stats; struct bnxt_ring_stats *prev_tx_ring_stats; + +#define BNXT_MAX_MC_ADDRS 16 + struct rte_ether_addr *mcast_addr_list; + rte_iova_t mc_list_dma_addr; + uint32_t nb_mc_addr; }; static diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index f79f33a..50ffa30 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -2831,9 +2831,8 @@ bnxt_dev_set_mc_addr_list_op(struct rte_eth_dev *eth_dev, uint32_t nb_mc_addr) { struct bnxt *bp = eth_dev->data->dev_private; - char *mc_addr_list = (char *)mc_addr_set; struct bnxt_vnic_info *vnic; - uint32_t off = 0, i = 0; + uint32_t i = 0; int rc; rc = is_bnxt_in_error(bp); @@ -2842,6 +2841,8 @@ bnxt_dev_set_mc_addr_list_op(struct rte_eth_dev *eth_dev, vnic = BNXT_GET_DEFAULT_VNIC(bp); + bp->nb_mc_addr = nb_mc_addr; + if (nb_mc_addr > BNXT_MAX_MC_ADDRS) { vnic->flags |= BNXT_VNIC_INFO_ALLMULTI; goto allmulti; @@ -2849,14 +2850,10 @@ bnxt_dev_set_mc_addr_list_op(struct rte_eth_dev *eth_dev, /* TODO Check for Duplicate mcast addresses */ vnic->flags &= ~BNXT_VNIC_INFO_ALLMULTI; - for (i = 0; i < nb_mc_addr; i++) { - memcpy(vnic->mc_list + off, &mc_addr_list[i], - RTE_ETHER_ADDR_LEN); - off += RTE_ETHER_ADDR_LEN; - } + for (i = 0; i < nb_mc_addr; i++) + rte_ether_addr_copy(&mc_addr_set[i], &bp->mcast_addr_list[i]); - vnic->mc_addr_cnt = i; - if (vnic->mc_addr_cnt) + if (bp->nb_mc_addr) vnic->flags |= BNXT_VNIC_INFO_MCAST; else vnic->flags &= ~BNXT_VNIC_INFO_MCAST; @@ -5016,6 +5013,23 @@ static int bnxt_setup_mac_addr(struct rte_eth_dev *eth_dev) /* Copy the permanent MAC from the FUNC_QCAPS response */ memcpy(ð_dev->data->mac_addrs[0], bp->mac_addr, RTE_ETHER_ADDR_LEN); + /* + * Allocate memory to hold multicast mac addresses added. + * Used to restore them during reset recovery + */ + bp->mcast_addr_list = rte_zmalloc("bnxt_mcast_addr_tbl", + sizeof(struct rte_ether_addr) * + BNXT_MAX_MC_ADDRS, 0); + if (bp->mcast_addr_list == NULL) { + PMD_DRV_LOG(ERR, "Failed to allocate multicast addr table\n"); + return -ENOMEM; + } + bp->mc_list_dma_addr = rte_malloc_virt2iova(bp->mcast_addr_list); + if (bp->mc_list_dma_addr == RTE_BAD_IOVA) { + PMD_DRV_LOG(ERR, "Fail to map mcast_addr_list to physical memory\n"); + return -ENOMEM; + } + return rc; } @@ -5916,6 +5930,8 @@ bnxt_uninit_resources(struct bnxt *bp, bool reconfig_dev) if (!reconfig_dev) { bnxt_free_hwrm_resources(bp); bnxt_free_error_recovery_info(bp); + rte_free(bp->mcast_addr_list); + bp->mcast_addr_list = NULL; } bnxt_uninit_ctx_mem(bp); diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c index f53f863..fdc274c 100644 --- a/drivers/net/bnxt/bnxt_hwrm.c +++ b/drivers/net/bnxt/bnxt_hwrm.c @@ -506,8 +506,8 @@ int bnxt_hwrm_cfa_l2_set_rx_mask(struct bnxt *bp, mask |= HWRM_CFA_L2_SET_RX_MASK_INPUT_MASK_ALL_MCAST; } else if (vnic->flags & BNXT_VNIC_INFO_MCAST) { mask |= HWRM_CFA_L2_SET_RX_MASK_INPUT_MASK_MCAST; - req.num_mc_entries = rte_cpu_to_le_32(vnic->mc_addr_cnt); - req.mc_tbl_addr = rte_cpu_to_le_64(vnic->mc_list_dma_addr); + req.num_mc_entries = rte_cpu_to_le_32(bp->nb_mc_addr); + req.mc_tbl_addr = rte_cpu_to_le_64(bp->mc_list_dma_addr); } if (vlan_table) { if (!(mask & HWRM_CFA_L2_SET_RX_MASK_INPUT_MASK_VLAN_NONVLAN)) diff --git a/drivers/net/bnxt/bnxt_vnic.c b/drivers/net/bnxt/bnxt_vnic.c index c63cf4b..e05dc24 100644 --- a/drivers/net/bnxt/bnxt_vnic.c +++ b/drivers/net/bnxt/bnxt_vnic.c @@ -126,8 +126,7 @@ int bnxt_alloc_vnic_attributes(struct bnxt *bp) int i; rte_iova_t mz_phys_addr; - entry_length = HW_HASH_KEY_SIZE + - BNXT_MAX_MC_ADDRS * RTE_ETHER_ADDR_LEN; + entry_length = HW_HASH_KEY_SIZE; if (BNXT_CHIP_P5(bp)) rss_table_size = BNXT_RSS_TBL_SIZE_P5 * @@ -169,10 +168,6 @@ int bnxt_alloc_vnic_attributes(struct bnxt *bp) vnic->rss_hash_key_dma_addr = vnic->rss_table_dma_addr + rss_table_size; - vnic->mc_list = (void *)((char *)vnic->rss_hash_key + - HW_HASH_KEY_SIZE); - vnic->mc_list_dma_addr = vnic->rss_hash_key_dma_addr + - HW_HASH_KEY_SIZE; bnxt_prandom_bytes(vnic->rss_hash_key, HW_HASH_KEY_SIZE); } diff --git a/drivers/net/bnxt/bnxt_vnic.h b/drivers/net/bnxt/bnxt_vnic.h index 37b452f..af3a2dd 100644 --- a/drivers/net/bnxt/bnxt_vnic.h +++ b/drivers/net/bnxt/bnxt_vnic.h @@ -32,10 +32,6 @@ struct bnxt_vnic_info { uint16_t *rss_table; rte_iova_t rss_hash_key_dma_addr; void *rss_hash_key; - rte_iova_t mc_list_dma_addr; - char *mc_list; - uint32_t mc_addr_cnt; -#define BNXT_MAX_MC_ADDRS 16 uint32_t flags; #define BNXT_VNIC_INFO_PROMISC (1 << 0) #define BNXT_VNIC_INFO_ALLMULTI (1 << 1) From patchwork Tue Jan 4 08:38:08 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: 105601 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 59FDDA00C5; Tue, 4 Jan 2022 09:19:26 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 135114114E; Tue, 4 Jan 2022 09:19:15 +0100 (CET) Received: from relay.smtp-ext.broadcom.com (relay.smtp-ext.broadcom.com [192.19.166.231]) by mails.dpdk.org (Postfix) with ESMTP id 9072E41145 for ; Tue, 4 Jan 2022 09:19:13 +0100 (CET) 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 DB75DC0000F1; Tue, 4 Jan 2022 00:19:11 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com DB75DC0000F1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1641284353; bh=4OuIMgrcEfQbdCTB3PWaubxJAXQyEoxLr/g3gBev5cM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=km8EWUsFs/ucCawLOkQj4VgWjVUtZFQvlZ1Wk1++2Hb6OwwC+qYFVOQaan2w7LHBA 11nO6qv+mHFUaZmHuMhIaL1zikkdFirmY+t4hPObNoQ6kgbiB6WWNKuP59qX2yGdbJ QqrembHcDRz7tayg8r68M98n/lk2ZGZzhW3ZR51Q= From: Kalesh A P To: dev@dpdk.org Cc: ferruh.yigit@intel.com, ajit.khaparde@broadcom.com Subject: [dpdk-dev] [PATCH 02/18] net/bnxt: fix to restore mcast macs during reset recovery Date: Tue, 4 Jan 2022 14:08:08 +0530 Message-Id: <20220104083824.23001-3-kalesh-anakkur.purayil@broadcom.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20220104083824.23001-1-kalesh-anakkur.purayil@broadcom.com> References: <20220104083824.23001-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 During reset recovery, driver is not restoring the multicast mac addresses. Added code to restore them during reset recovery. Fixes: b02f1573cd07 ("net/bnxt: restore MAC filters during reset recovery") Cc: stable@dpdk.org Signed-off-by: Kalesh AP Reviewed-by: Ajit Khaparde Reviewed-by: Somnath Kotur --- drivers/net/bnxt/bnxt_ethdev.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index 50ffa30..bac9600 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -4261,6 +4261,18 @@ static int bnxt_restore_mac_filters(struct bnxt *bp) return 0; } +static int bnxt_restore_mcast_mac_filters(struct bnxt *bp) +{ + int ret = 0; + + ret = bnxt_dev_set_mc_addr_list_op(bp->eth_dev, bp->mcast_addr_list, + bp->nb_mc_addr); + if (ret) + PMD_DRV_LOG(ERR, "Failed to restore multicast MAC addreeses\n"); + + return ret; +} + static int bnxt_restore_filters(struct bnxt *bp) { struct rte_eth_dev *dev = bp->eth_dev; @@ -4282,7 +4294,13 @@ static int bnxt_restore_filters(struct bnxt *bp) return ret; ret = bnxt_restore_vlan_filters(bp); - /* TODO restore other filters as well */ + if (ret) + return ret; + + ret = bnxt_restore_mcast_mac_filters(bp); + if (ret) + return ret; + return ret; } From patchwork Tue Jan 4 08:38:09 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: 105602 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 662BDA00C5; Tue, 4 Jan 2022 09:19:30 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0C0F541151; Tue, 4 Jan 2022 09:19:16 +0100 (CET) Received: from relay.smtp-ext.broadcom.com (relay.smtp-ext.broadcom.com [192.19.166.231]) by mails.dpdk.org (Postfix) with ESMTP id 3199441151 for ; Tue, 4 Jan 2022 09:19:15 +0100 (CET) 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 809A7C0000F2; Tue, 4 Jan 2022 00:19:13 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com 809A7C0000F2 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1641284354; bh=660u+WXDThqmrhxEqlYl5wOwN1bJKlDgCrhW94NEvJo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=EgdavSCofAidD12+I/2Ru1Ibk6kWCIXG0SY10Tc2SSOJwe1p+2QklxDvqknf7qQk6 7H5L26GLZepKt5O5kbiZGmpKP9OZSCMTaT/grJ9GhRncAoVXNaotj1m3jLV2Vn/xJ3 o846dx6bKhnc47EiV+n4IQhqfjovqPHoWwhU233w= From: Kalesh A P To: dev@dpdk.org Cc: ferruh.yigit@intel.com, ajit.khaparde@broadcom.com Subject: [dpdk-dev] [PATCH 03/18] net/bnxt: fix queue stop operation Date: Tue, 4 Jan 2022 14:08:09 +0530 Message-Id: <20220104083824.23001-4-kalesh-anakkur.purayil@broadcom.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20220104083824.23001-1-kalesh-anakkur.purayil@broadcom.com> References: <20220104083824.23001-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 When there are no active Rx queues(i.e when all queues have been stopped), clear the RSS redirection table of the VNIC on Thor. Fixes: 9b63c6fd70e3 ("net/bnxt: support Rx/Tx queue start/stop") Cc: stable@dpdk.org Signed-off-by: Kalesh AP Reviewed-by: Ajit Khaparde Reviewed-by: Somnath Kotur Reviewed-by: Lance Richardson --- drivers/net/bnxt/bnxt_hwrm.c | 23 +++++++++++++++++++++++ drivers/net/bnxt/bnxt_hwrm.h | 1 + drivers/net/bnxt/bnxt_rxq.c | 3 +++ 3 files changed, 27 insertions(+) diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c index fdc274c..35d6982 100644 --- a/drivers/net/bnxt/bnxt_hwrm.c +++ b/drivers/net/bnxt/bnxt_hwrm.c @@ -6262,3 +6262,26 @@ int bnxt_hwrm_config_host_mtu(struct bnxt *bp) return rc; } + +int +bnxt_vnic_rss_clear_p5(struct bnxt *bp, struct bnxt_vnic_info *vnic) +{ + struct hwrm_vnic_rss_cfg_output *resp = bp->hwrm_cmd_resp_addr; + struct hwrm_vnic_rss_cfg_input req = {0}; + int nr_ctxs = vnic->num_lb_ctxts; + int i, rc = 0; + + for (i = 0; i < nr_ctxs; i++) { + HWRM_PREP(&req, HWRM_VNIC_RSS_CFG, BNXT_USE_CHIMP_MB); + + req.rss_ctx_idx = rte_cpu_to_le_16(vnic->fw_grp_ids[i]); + req.vnic_id = rte_cpu_to_le_16(vnic->fw_vnic_id); + + rc = bnxt_hwrm_send_message(bp, &req, sizeof(req), BNXT_USE_CHIMP_MB); + + HWRM_CHECK_RESULT(); + HWRM_UNLOCK(); + } + + return rc; +} diff --git a/drivers/net/bnxt/bnxt_hwrm.h b/drivers/net/bnxt/bnxt_hwrm.h index f8f0556..8202455 100644 --- a/drivers/net/bnxt/bnxt_hwrm.h +++ b/drivers/net/bnxt/bnxt_hwrm.h @@ -310,4 +310,5 @@ int bnxt_hwrm_stat_ctx_alloc(struct bnxt *bp, struct bnxt_cp_ring_info *cpr); void bnxt_free_hwrm_tx_ring(struct bnxt *bp, int queue_index); int bnxt_alloc_hwrm_tx_ring(struct bnxt *bp, int queue_index); int bnxt_hwrm_config_host_mtu(struct bnxt *bp); +int bnxt_vnic_rss_clear_p5(struct bnxt *bp, struct bnxt_vnic_info *vnic); #endif diff --git a/drivers/net/bnxt/bnxt_rxq.c b/drivers/net/bnxt/bnxt_rxq.c index 1456f8b..c9d9903 100644 --- a/drivers/net/bnxt/bnxt_rxq.c +++ b/drivers/net/bnxt/bnxt_rxq.c @@ -574,6 +574,9 @@ int bnxt_rx_queue_stop(struct rte_eth_dev *dev, uint16_t rx_queue_id) if (active_queue_cnt == 0) { uint16_t saved_mru = vnic->mru; + /* clear RSS setting on vnic. */ + bnxt_vnic_rss_clear_p5(bp, vnic); + vnic->mru = 0; /* Reconfigure default receive ring and MRU. */ bnxt_hwrm_vnic_cfg(bp, vnic); From patchwork Tue Jan 4 08:38:10 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: 105603 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 DEB46A00C5; Tue, 4 Jan 2022 09:19:35 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0BFC941156; Tue, 4 Jan 2022 09:19:18 +0100 (CET) Received: from relay.smtp-ext.broadcom.com (relay.smtp-ext.broadcom.com [192.19.166.231]) by mails.dpdk.org (Postfix) with ESMTP id C6A5341156 for ; Tue, 4 Jan 2022 09:19:16 +0100 (CET) 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 255D4C0000F1; Tue, 4 Jan 2022 00:19:14 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com 255D4C0000F1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1641284356; bh=Lc8i/u7wj8KIuE9bjEMu38Tt9/FVygmPy5BR/q2RlhU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=rEHGo1AYsgcCGvUKlCLCYe7zjgFZWTmOgrDFaJbvwfzoMrqeVOBmhI32niA7h+HRV QUj2NZw1YSSHalrwdc0cUjsOioNzq6eyeSgp23QFmbNp4Ipb45e1NHUemzeAE0XoAz OGlRferHwxq+SX1Z8iIIRr+KR5couB2YgFPZntcM= From: Kalesh A P To: dev@dpdk.org Cc: ferruh.yigit@intel.com, ajit.khaparde@broadcom.com Subject: [dpdk-dev] [PATCH 04/18] net/bnxt: restore RSS configuration after reset recovery Date: Tue, 4 Jan 2022 14:08:10 +0530 Message-Id: <20220104083824.23001-5-kalesh-anakkur.purayil@broadcom.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20220104083824.23001-1-kalesh-anakkur.purayil@broadcom.com> References: <20220104083824.23001-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 During reset recovery, driver is not restoring the VNIC rss hash key. It's generating a new random hash key which results in unexpected RSS behavior after recovery. Fixed this by storing the VNIC rss configuration to a local struct and then applying the cached value during the recovery. Fixes: df6cd7c1f73a ("net/bnxt: handle reset notify async event from FW") Cc: stable@dpdk.org Signed-off-by: Kalesh AP Reviewed-by: Ajit Khaparde Reviewed-by: Somnath Kotur --- drivers/net/bnxt/bnxt.h | 2 ++ drivers/net/bnxt/bnxt_ethdev.c | 35 +++++++++++++++++++++++++++++++---- drivers/net/bnxt/bnxt_rxq.c | 2 +- drivers/net/bnxt/bnxt_vnic.c | 9 +++++++-- drivers/net/bnxt/bnxt_vnic.h | 2 +- 5 files changed, 42 insertions(+), 8 deletions(-) diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h index 521fcb7..614ea57 100644 --- a/drivers/net/bnxt/bnxt.h +++ b/drivers/net/bnxt/bnxt.h @@ -896,6 +896,8 @@ struct bnxt { struct rte_ether_addr *mcast_addr_list; rte_iova_t mc_list_dma_addr; uint32_t nb_mc_addr; + + struct rte_eth_rss_conf rss_conf; /* RSS configuration. */ }; static diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index bac9600..dcf2839 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -368,7 +368,7 @@ static int bnxt_alloc_mem(struct bnxt *bp, bool reconfig) if (rc) goto alloc_mem_err; - rc = bnxt_alloc_vnic_attributes(bp); + rc = bnxt_alloc_vnic_attributes(bp, reconfig); if (rc) goto alloc_mem_err; @@ -1067,6 +1067,7 @@ static int bnxt_dev_configure_op(struct rte_eth_dev *eth_dev) { struct bnxt *bp = eth_dev->data->dev_private; uint64_t rx_offloads = eth_dev->data->dev_conf.rxmode.offloads; + struct rte_eth_rss_conf *rss_conf = ð_dev->data->dev_conf.rx_adv_conf.rss_conf; int rc; bp->rx_queues = (void *)eth_dev->data->rx_queues; @@ -1141,6 +1142,17 @@ static int bnxt_dev_configure_op(struct rte_eth_dev *eth_dev) rx_offloads |= RTE_ETH_RX_OFFLOAD_RSS_HASH; eth_dev->data->dev_conf.rxmode.offloads = rx_offloads; + /* application provides the hash key to program */ + if (rss_conf->rss_key != NULL) { + if (rss_conf->rss_key_len != HW_HASH_KEY_SIZE) + PMD_DRV_LOG(WARNING, "port %u RSS key len must be %d bytes long", + eth_dev->data->port_id, HW_HASH_KEY_SIZE); + else + memcpy(bp->rss_conf.rss_key, rss_conf->rss_key, HW_HASH_KEY_SIZE); + } + bp->rss_conf.rss_key_len = HW_HASH_KEY_SIZE; + bp->rss_conf.rss_hf = rss_conf->rss_hf; + bnxt_mtu_set_op(eth_dev, eth_dev->data->mtu); return 0; @@ -2126,9 +2138,6 @@ static int bnxt_rss_hash_update_op(struct rte_eth_dev *eth_dev, } bp->flags |= BNXT_FLAG_UPDATE_HASH; - memcpy(ð_dev->data->dev_conf.rx_adv_conf.rss_conf, - rss_conf, - sizeof(*rss_conf)); /* Update the default RSS VNIC(s) */ vnic = BNXT_GET_DEFAULT_VNIC(bp); @@ -2137,6 +2146,9 @@ static int bnxt_rss_hash_update_op(struct rte_eth_dev *eth_dev, bnxt_rte_to_hwrm_hash_level(bp, rss_conf->rss_hf, RTE_ETH_RSS_LEVEL(rss_conf->rss_hf)); + /* Cache the hash function */ + bp->rss_conf.rss_hf = rss_conf->rss_hf; + /* * If hashkey is not specified, use the previously configured * hashkey @@ -2152,6 +2164,9 @@ static int bnxt_rss_hash_update_op(struct rte_eth_dev *eth_dev, } memcpy(vnic->rss_hash_key, rss_conf->rss_key, rss_conf->rss_key_len); + /* Cache the hash key */ + memcpy(bp->rss_conf.rss_key, rss_conf->rss_key, HW_HASH_KEY_SIZE); + rss_config: rc = bnxt_hwrm_vnic_rss_cfg(bp, vnic); return rc; @@ -5304,6 +5319,16 @@ static int bnxt_init_resources(struct bnxt *bp, bool reconfig_dev) } } + if (!reconfig_dev) { + bp->rss_conf.rss_key = rte_zmalloc("bnxt_rss_key", + HW_HASH_KEY_SIZE, 0); + if (bp->rss_conf.rss_key == NULL) { + PMD_DRV_LOG(ERR, "port %u cannot allocate RSS hash key memory", + bp->eth_dev->data->port_id); + return -ENOMEM; + } + } + rc = bnxt_alloc_mem(bp, reconfig_dev); if (rc) return rc; @@ -5950,6 +5975,8 @@ bnxt_uninit_resources(struct bnxt *bp, bool reconfig_dev) bnxt_free_error_recovery_info(bp); rte_free(bp->mcast_addr_list); bp->mcast_addr_list = NULL; + rte_free(bp->rss_conf.rss_key); + bp->rss_conf.rss_key = NULL; } bnxt_uninit_ctx_mem(bp); diff --git a/drivers/net/bnxt/bnxt_rxq.c b/drivers/net/bnxt/bnxt_rxq.c index c9d9903..9f1d1d4 100644 --- a/drivers/net/bnxt/bnxt_rxq.c +++ b/drivers/net/bnxt/bnxt_rxq.c @@ -148,7 +148,7 @@ int bnxt_mq_rx_configure(struct bnxt *bp) bp->rx_num_qs_per_vnic = nb_q_per_grp; if (dev_conf->rxmode.mq_mode & RTE_ETH_MQ_RX_RSS_FLAG) { - struct rte_eth_rss_conf *rss = &dev_conf->rx_adv_conf.rss_conf; + struct rte_eth_rss_conf *rss = &bp->rss_conf; if (bp->flags & BNXT_FLAG_UPDATE_HASH) bp->flags &= ~BNXT_FLAG_UPDATE_HASH; diff --git a/drivers/net/bnxt/bnxt_vnic.c b/drivers/net/bnxt/bnxt_vnic.c index e05dc24..09d67ef 100644 --- a/drivers/net/bnxt/bnxt_vnic.c +++ b/drivers/net/bnxt/bnxt_vnic.c @@ -114,7 +114,7 @@ void bnxt_free_vnic_attributes(struct bnxt *bp) } } -int bnxt_alloc_vnic_attributes(struct bnxt *bp) +int bnxt_alloc_vnic_attributes(struct bnxt *bp, bool reconfig) { struct bnxt_vnic_info *vnic; struct rte_pci_device *pdev = bp->pdev; @@ -168,7 +168,12 @@ int bnxt_alloc_vnic_attributes(struct bnxt *bp) vnic->rss_hash_key_dma_addr = vnic->rss_table_dma_addr + rss_table_size; - bnxt_prandom_bytes(vnic->rss_hash_key, HW_HASH_KEY_SIZE); + if (!reconfig) { + bnxt_prandom_bytes(vnic->rss_hash_key, HW_HASH_KEY_SIZE); + memcpy(bp->rss_conf.rss_key, vnic->rss_hash_key, HW_HASH_KEY_SIZE); + } else { + memcpy(vnic->rss_hash_key, bp->rss_conf.rss_key, HW_HASH_KEY_SIZE); + } } return 0; diff --git a/drivers/net/bnxt/bnxt_vnic.h b/drivers/net/bnxt/bnxt_vnic.h index af3a2dd..25481fc 100644 --- a/drivers/net/bnxt/bnxt_vnic.h +++ b/drivers/net/bnxt/bnxt_vnic.h @@ -60,7 +60,7 @@ int bnxt_free_vnic(struct bnxt *bp, struct bnxt_vnic_info *vnic, struct bnxt_vnic_info *bnxt_alloc_vnic(struct bnxt *bp); void bnxt_free_all_vnics(struct bnxt *bp); void bnxt_free_vnic_attributes(struct bnxt *bp); -int bnxt_alloc_vnic_attributes(struct bnxt *bp); +int bnxt_alloc_vnic_attributes(struct bnxt *bp, bool reconfig); void bnxt_free_vnic_mem(struct bnxt *bp); int bnxt_alloc_vnic_mem(struct bnxt *bp); int bnxt_vnic_grp_alloc(struct bnxt *bp, struct bnxt_vnic_info *vnic); From patchwork Tue Jan 4 08:38:11 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: 105604 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 AE140A00C5; Tue, 4 Jan 2022 09:19:40 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0E41E4115E; Tue, 4 Jan 2022 09:19:19 +0100 (CET) Received: from relay.smtp-ext.broadcom.com (relay.smtp-ext.broadcom.com [192.19.166.231]) by mails.dpdk.org (Postfix) with ESMTP id 79DF94115B for ; Tue, 4 Jan 2022 09:19:18 +0100 (CET) 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 BB4CEC0000F2; Tue, 4 Jan 2022 00:19:16 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com BB4CEC0000F2 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1641284357; bh=l9pahSl6qtEdOUV4NEbSH+zVzRFBkbV9eI4oVbJtbnM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Ilg3rGyaY5lnaMSbZ6g4hTi1JGn3WNjZDj85Jsf/Y909S8OOVB2KjIaNwXU1Cohfn Xww7DPfx5Yg8BVLqYidN0AUthOv/ohpmQswcf0AbGlsuUAXinh3mUSHG30roOc4HTM RejNN6hPxlZShzMdVmxKixrLRb/M0fu8pgdQW8LA= From: Kalesh A P To: dev@dpdk.org Cc: ferruh.yigit@intel.com, ajit.khaparde@broadcom.com Subject: [dpdk-dev] [PATCH 05/18] net/bnxt: fix restoring VLAN filtering after recovery Date: Tue, 4 Jan 2022 14:08:11 +0530 Message-Id: <20220104083824.23001-6-kalesh-anakkur.purayil@broadcom.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20220104083824.23001-1-kalesh-anakkur.purayil@broadcom.com> References: <20220104083824.23001-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 During port start, driver calls bnxt_vlan_offload_set_op() to program VLAN Filter/VLAN Strip setting to the HW. This in turns add the vlan filters. This results in a failure when bnxt_restore_filters() invokes bnxt_restore_vlan_filters() during the recovery as the vlans are already programmed. Fix to ignore the error(-EEXIST). Fixes: 151c8240ac6a ("net/bnxt: restore VLAN filters during reset recovery") Cc: stable@dpdk.org Signed-off-by: Kalesh AP Reviewed-by: Ajit Khaparde Reviewed-by: Somnath Kotur --- drivers/net/bnxt/bnxt_ethdev.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index dcf2839..99a7d35 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -4308,8 +4308,9 @@ static int bnxt_restore_filters(struct bnxt *bp) if (ret) return ret; + /* if vlans are already programmed, this can fail with -EEXIST */ ret = bnxt_restore_vlan_filters(bp); - if (ret) + if (ret && ret != -EEXIST) return ret; ret = bnxt_restore_mcast_mac_filters(bp); From patchwork Tue Jan 4 08:38:12 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: 105605 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 2390EA00C5; Tue, 4 Jan 2022 09:19:45 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1507D41165; Tue, 4 Jan 2022 09:19:22 +0100 (CET) Received: from relay.smtp-ext.broadcom.com (lpdvsmtp11.broadcom.com [192.19.166.231]) by mails.dpdk.org (Postfix) with ESMTP id 1A5E841163 for ; Tue, 4 Jan 2022 09:19:20 +0100 (CET) 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 6D270C0000F1; Tue, 4 Jan 2022 00:19:18 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com 6D270C0000F1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1641284359; bh=bDohiUS2CU/bYWUUD2fAfmGeyuOg/9qNEw0Otfg75aQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=dRqaa+OWkkenFNhLYa6CwET0ACDJVNofToztFbpMQHlOJ+IyQUOZri8vHCWQ0xIpW +yY+L0YKhDlMgQlNwm7DlLcJvperfn/KS32qk8qD92ZLZrwetAMaNfCH/va4s2lcTo Wxye53vehDtP6RyO4mDq2xzp26nZwj05z5jBx3O0= From: Kalesh A P To: dev@dpdk.org Cc: ferruh.yigit@intel.com, ajit.khaparde@broadcom.com Subject: [dpdk-dev] [PATCH 06/18] net/bnxt: fix to cap max number of unicast MACs Date: Tue, 4 Jan 2022 14:08:12 +0530 Message-Id: <20220104083824.23001-7-kalesh-anakkur.purayil@broadcom.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20220104083824.23001-1-kalesh-anakkur.purayil@broadcom.com> References: <20220104083824.23001-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 Maximum number of receive mac addr is hard coded to 128 in the ethdev library(RTE_ETH_NUM_RECEIVE_MAC_ADDR). But the bnxt devices support more than 128 unicast MAC filters which could result in a segfault while user tries to add more than 128 unicast MAC addresses to the port. Fixes: a2033fda22ab ("net/bnxt: fix number of MAC addresses for VMDq") Cc: stable@dpdk.org Signed-off-by: Kalesh AP Reviewed-by: Ajit Khaparde Reviewed-by: Somnath Kotur --- drivers/net/bnxt/bnxt_ethdev.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index 99a7d35..82350a5 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -954,7 +954,7 @@ static int bnxt_dev_info_get_op(struct rte_eth_dev *eth_dev, return rc; /* MAC Specifics */ - dev_info->max_mac_addrs = bp->max_l2_ctx; + dev_info->max_mac_addrs = RTE_MIN(bp->max_l2_ctx, RTE_ETH_NUM_RECEIVE_MAC_ADDR); dev_info->max_hash_mac_addrs = 0; /* PF/VF specifics */ @@ -5016,11 +5016,15 @@ static int bnxt_alloc_stats_mem(struct bnxt *bp) static int bnxt_setup_mac_addr(struct rte_eth_dev *eth_dev) { struct bnxt *bp = eth_dev->data->dev_private; + size_t max_mac_addr = RTE_MIN(bp->max_l2_ctx, RTE_ETH_NUM_RECEIVE_MAC_ADDR); int rc = 0; + if (bp->max_l2_ctx > RTE_ETH_NUM_RECEIVE_MAC_ADDR) + PMD_DRV_LOG(INFO, "Max number of MAC addrs supported is %d, but will be limited to %d\n", + bp->max_l2_ctx, RTE_ETH_NUM_RECEIVE_MAC_ADDR); + eth_dev->data->mac_addrs = rte_zmalloc("bnxt_mac_addr_tbl", - RTE_ETHER_ADDR_LEN * - bp->max_l2_ctx, + RTE_ETHER_ADDR_LEN * max_mac_addr, 0); if (eth_dev->data->mac_addrs == NULL) { PMD_DRV_LOG(ERR, "Failed to alloc MAC addr tbl\n"); From patchwork Tue Jan 4 08:38:13 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: 105606 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 9A9A4A00C5; Tue, 4 Jan 2022 09:19:51 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 95BF841148; Tue, 4 Jan 2022 09:19:23 +0100 (CET) Received: from relay.smtp-ext.broadcom.com (lpdvsmtp11.broadcom.com [192.19.166.231]) by mails.dpdk.org (Postfix) with ESMTP id BF0FE41143 for ; Tue, 4 Jan 2022 09:19:21 +0100 (CET) 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 11B66C0000F2; Tue, 4 Jan 2022 00:19:19 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com 11B66C0000F2 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1641284361; bh=RXyAp1hrL1X0Lx3xuyEWKD/fmO0XBlkZNr4wIZosA60=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=vqMBWhNqiMYWYNDlcUR9CAnl+v+K6MKkzaj2JWsV4mzkSseUb9iw6e9XDNFH9TjtE m2K5tHNTzwhjqbC3spdYkLZ1X5V6aFvE2eZxvZya3MH15X6ScDKPzDK58gtl1xPfuq 0y1qdez7HDpjPbvcS7MHKZTNOwmm9UmoOZcVFoJA= From: Kalesh A P To: dev@dpdk.org Cc: ferruh.yigit@intel.com, ajit.khaparde@broadcom.com Subject: [dpdk-dev] [PATCH 07/18] net/bnxt: set fast-path pointers only if recovery succeeds Date: Tue, 4 Jan 2022 14:08:13 +0530 Message-Id: <20220104083824.23001-8-kalesh-anakkur.purayil@broadcom.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20220104083824.23001-1-kalesh-anakkur.purayil@broadcom.com> References: <20220104083824.23001-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 During reset recovery, fixed to set the fast-path pointers only if recovery succeeds. Fixes: 720b55ad278e ("net/bnxt: fix crash caused by error recovery") Cc: stable@dpdk.org Signed-off-by: Kalesh AP Reviewed-by: Ajit Khaparde Reviewed-by: Somnath Kotur --- drivers/net/bnxt/bnxt_ethdev.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index 82350a5..80de320 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -4376,16 +4376,16 @@ static void bnxt_dev_recover(void *arg) goto err_start; } + rc = bnxt_restore_filters(bp); + if (rc) + goto err_start; + rte_eth_fp_ops[bp->eth_dev->data->port_id].rx_pkt_burst = bp->eth_dev->rx_pkt_burst; rte_eth_fp_ops[bp->eth_dev->data->port_id].tx_pkt_burst = bp->eth_dev->tx_pkt_burst; rte_mb(); - rc = bnxt_restore_filters(bp); - if (rc) - goto err_start; - PMD_DRV_LOG(INFO, "Port: %u Recovered from FW reset\n", bp->eth_dev->data->port_id); pthread_mutex_unlock(&bp->err_recovery_lock); From patchwork Tue Jan 4 08:38:14 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: 105607 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 B13E7A00C5; Tue, 4 Jan 2022 09:19:56 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C08FC41180; Tue, 4 Jan 2022 09:19:24 +0100 (CET) Received: from relay.smtp-ext.broadcom.com (relay.smtp-ext.broadcom.com [192.19.166.231]) by mails.dpdk.org (Postfix) with ESMTP id 6E04140E25 for ; Tue, 4 Jan 2022 09:19:23 +0100 (CET) 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 B23F1C0000F1; Tue, 4 Jan 2022 00:19:21 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com B23F1C0000F1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1641284362; bh=ps1iPLbi7REL7xxK1YY6TDrUyVrome7ovci9Cs/iPok=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=rCfqKOViX79dUChbxZApcFZOIs/EEsC0DLLXsqE2yphXFV3f5xEl2ltnKDSPKR12P CiE6+EZ9k8DDtSmwsmYEpiAqfWQVtb8vOcVMaqV7s1C0i2XF2eaLQcES+TyX1jNmrz kC1iGUw9sCoERG8tvZXWZO6HBVHUWPo0f6QU9H4I= From: Kalesh A P To: dev@dpdk.org Cc: ferruh.yigit@intel.com, ajit.khaparde@broadcom.com Subject: [dpdk-dev] [PATCH 08/18] net/bnxt: improve recovery related log messages Date: Tue, 4 Jan 2022 14:08:14 +0530 Message-Id: <20220104083824.23001-9-kalesh-anakkur.purayil@broadcom.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20220104083824.23001-1-kalesh-anakkur.purayil@broadcom.com> References: <20220104083824.23001-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 Make these messages more specific. Signed-off-by: Kalesh AP Reviewed-by: Ajit Khaparde Reviewed-by: Somnath Kotur --- drivers/net/bnxt/bnxt_ethdev.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index 80de320..a5b960c 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -4401,7 +4401,8 @@ static void bnxt_dev_recover(void *arg) RTE_ETH_EVENT_INTR_RMV, NULL); pthread_mutex_unlock(&bp->err_recovery_lock); - PMD_DRV_LOG(ERR, "Failed to recover from FW reset\n"); + PMD_DRV_LOG(ERR, "Port %u: Failed to recover from FW reset\n", + bp->eth_dev->data->port_id); } void bnxt_dev_reset_and_resume(void *arg) @@ -4437,7 +4438,8 @@ void bnxt_dev_reset_and_resume(void *arg) rc = rte_eal_alarm_set(us, bnxt_dev_recover, (void *)bp); if (rc) - PMD_DRV_LOG(ERR, "Error setting recovery alarm"); + PMD_DRV_LOG(ERR, "Port %u: Error setting recovery alarm", + bp->eth_dev->data->port_id); } uint32_t bnxt_read_fw_status_reg(struct bnxt *bp, uint32_t index) From patchwork Tue Jan 4 08:38:15 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: 105608 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 C707EA00C5; Tue, 4 Jan 2022 09:20:01 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D2DC141183; Tue, 4 Jan 2022 09:19:26 +0100 (CET) Received: from relay.smtp-ext.broadcom.com (relay.smtp-ext.broadcom.com [192.19.166.231]) by mails.dpdk.org (Postfix) with ESMTP id 1DD9241145 for ; Tue, 4 Jan 2022 09:19:25 +0100 (CET) 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 5F626C0000F2; Tue, 4 Jan 2022 00:19:23 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com 5F626C0000F2 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1641284364; bh=VrlrL+TmVoHO1+eoHkvnGnEATtvKfxREu8ZwdmfEtcQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=qxdkXUADVuP7hd0qRZJe0OFbpVv2/MjDOEyZKIETW3qhZ4xN1lnJ4gDINah+VS7G9 XDwiSJPh3DC7Kq02L/wcMdc7QroxQbH2Fx29YaPouNjXJSDjVPu7RlJZecDRH6qkuw 77+KA0ODD+sxz5h33SB7vTAyeGYtIrwsBZ71NvC4= From: Kalesh A P To: dev@dpdk.org Cc: ferruh.yigit@intel.com, ajit.khaparde@broadcom.com Subject: [dpdk-dev] [PATCH 09/18] net/bnxt: add null check for mark table Date: Tue, 4 Jan 2022 14:08:15 +0530 Message-Id: <20220104083824.23001-10-kalesh-anakkur.purayil@broadcom.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20220104083824.23001-1-kalesh-anakkur.purayil@broadcom.com> References: <20220104083824.23001-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 During the port start, driver ignores mark table allocation failure. This could cause a segfault due to NULL pointer dereference in bnxt_set_mark_in_mbuf(). Fix this by checking the pointer validity before accessing it. Fixes: b87abb2e55cb ("net/bnxt: support marking packet") Cc: stable@dpdk.org Signed-off-by: Kalesh AP Reviewed-by: Ajit Khaparde Reviewed-by: Somnath Kotur --- drivers/net/bnxt/bnxt_rxr.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/net/bnxt/bnxt_rxr.c b/drivers/net/bnxt/bnxt_rxr.c index 44247d7..9621809 100644 --- a/drivers/net/bnxt/bnxt_rxr.c +++ b/drivers/net/bnxt/bnxt_rxr.c @@ -824,6 +824,9 @@ void bnxt_set_mark_in_mbuf(struct bnxt *bp, { uint32_t cfa_code = 0; + if (unlikely(bp->mark_table == NULL)) + return; + cfa_code = rte_le_to_cpu_16(rxcmp1->cfa_code); if (!cfa_code) return; From patchwork Tue Jan 4 08:38:16 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: 105609 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 B68FBA00C5; Tue, 4 Jan 2022 09:20:06 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D0862410F2; Tue, 4 Jan 2022 09:19:27 +0100 (CET) Received: from relay.smtp-ext.broadcom.com (lpdvsmtp11.broadcom.com [192.19.166.231]) by mails.dpdk.org (Postfix) with ESMTP id AC8184116E for ; Tue, 4 Jan 2022 09:19:26 +0100 (CET) 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 0A536C0000F1; Tue, 4 Jan 2022 00:19:24 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com 0A536C0000F1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1641284366; bh=lNG1ePXHRA0SbwZ0MV43MzLlNcrft56+c9WA4E6r5YM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=QGL4PS4Vl+v4Lu1GgYMQTXZhmWTmGp8JM+r7egi+x8twloazDQ000LlGLcW3Ljm0X ulz8mwaxMNGUhsImCxrLrk8k3dji+ydRboW3WDMJUP2Mje4xTfQDAJzsisKEMo+m9y K1fHz3LxrbdhHxfuLy1G9OmpLLqvUMEw04dmBao0= From: Kalesh A P To: dev@dpdk.org Cc: ferruh.yigit@intel.com, ajit.khaparde@broadcom.com Subject: [dpdk-dev] [PATCH 10/18] net/bnxt: fix flow create when RSS is disabled Date: Tue, 4 Jan 2022 14:08:16 +0530 Message-Id: <20220104083824.23001-11-kalesh-anakkur.purayil@broadcom.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20220104083824.23001-1-kalesh-anakkur.purayil@broadcom.com> References: <20220104083824.23001-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 This patch reverts the commit "5d47d06b2c83". Revert this commit as it caused a regression on legacy chips. On newer chips we use TruFlow based flow creation instead of HWRM based flow creation. Fixes: 5d47d06b2c83 ("net/bnxt: modify VNIC accounting") Cc: stable@dpdk.org Signed-off-by: Kalesh AP Reviewed-by: Ajit Khaparde Reviewed-by: Somnath Kotur --- drivers/net/bnxt/bnxt.h | 3 --- drivers/net/bnxt/bnxt_ethdev.c | 18 ++++-------------- drivers/net/bnxt/bnxt_flow.c | 14 ++------------ drivers/net/bnxt/bnxt_hwrm.c | 32 -------------------------------- drivers/net/bnxt/bnxt_hwrm.h | 4 ---- 5 files changed, 6 insertions(+), 65 deletions(-) diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h index 614ea57..3df80f5 100644 --- a/drivers/net/bnxt/bnxt.h +++ b/drivers/net/bnxt/bnxt.h @@ -695,9 +695,6 @@ struct bnxt { #define BNXT_FLAG_FLOW_XSTATS_EN BIT(25) #define BNXT_FLAG_DFLT_MAC_SET BIT(26) #define BNXT_FLAG_GFID_ENABLE BIT(27) -#define BNXT_FLAG_RFS_NEEDS_VNIC BIT(28) -#define BNXT_FLAG_FLOW_CFA_RFS_RING_TBL_IDX_V2 BIT(29) -#define BNXT_RFS_NEEDS_VNIC(bp) ((bp)->flags & BNXT_FLAG_RFS_NEEDS_VNIC) #define BNXT_PF(bp) (!((bp)->flags & BNXT_FLAG_VF)) #define BNXT_VF(bp) ((bp)->flags & BNXT_FLAG_VF) #define BNXT_NPAR(bp) ((bp)->flags & BNXT_FLAG_NPAR_PF) diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index a5b960c..00acdb7 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -786,17 +786,11 @@ static int bnxt_start_nic(struct bnxt *bp) } } - /* default vnic 0 */ - rc = bnxt_setup_one_vnic(bp, 0); - if (rc) - goto err_out; /* VNIC configuration */ - if (BNXT_RFS_NEEDS_VNIC(bp)) { - for (i = 1; i < bp->nr_vnics; i++) { - rc = bnxt_setup_one_vnic(bp, i); - if (rc) - goto err_out; - } + for (i = 0; i < bp->nr_vnics; i++) { + rc = bnxt_setup_one_vnic(bp, i); + if (rc) + goto err_out; } for (j = 0; j < bp->tx_nr_rings; j++) { @@ -5232,10 +5226,6 @@ static int bnxt_get_config(struct bnxt *bp) if (rc) return rc; - rc = bnxt_hwrm_cfa_adv_flow_mgmt_qcaps(bp); - if (rc) - return rc; - bnxt_hwrm_port_mac_qcfg(bp); bnxt_hwrm_parent_pf_qcfg(bp); diff --git a/drivers/net/bnxt/bnxt_flow.c b/drivers/net/bnxt/bnxt_flow.c index d062be5..f7c90c4 100644 --- a/drivers/net/bnxt/bnxt_flow.c +++ b/drivers/net/bnxt/bnxt_flow.c @@ -1293,13 +1293,6 @@ bnxt_validate_and_parse_flow(struct rte_eth_dev *dev, } PMD_DRV_LOG(DEBUG, "Queue index %d\n", act_q->index); - if (use_ntuple && !BNXT_RFS_NEEDS_VNIC(bp)) { - filter->flags = - HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_FLAGS_DEST_RFS_RING_IDX; - filter->dst_id = act_q->index; - goto skip_vnic_alloc; - } - vnic_id = attr->group; if (!vnic_id) { PMD_DRV_LOG(DEBUG, "Group id is 0\n"); @@ -1364,7 +1357,7 @@ bnxt_validate_and_parse_flow(struct rte_eth_dev *dev, PMD_DRV_LOG(DEBUG, "Setting vnic ff_idx %d\n", vnic->ff_pool_idx); filter->dst_id = vnic->fw_vnic_id; -skip_vnic_alloc: + /* For ntuple filter, create the L2 filter with default VNIC. * The user specified redirect queue will be set while creating * the ntuple filter in hardware. @@ -2063,10 +2056,7 @@ bnxt_flow_create(struct rte_eth_dev *dev, } } - if (BNXT_RFS_NEEDS_VNIC(bp)) - vnic = find_matching_vnic(bp, filter); - else - vnic = BNXT_GET_DEFAULT_VNIC(bp); + vnic = find_matching_vnic(bp, filter); done: if (!ret || update_flow) { flow->filter = filter; diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c index 35d6982..ceb6808 100644 --- a/drivers/net/bnxt/bnxt_hwrm.c +++ b/drivers/net/bnxt/bnxt_hwrm.c @@ -6106,38 +6106,6 @@ int bnxt_hwrm_cfa_pair_free(struct bnxt *bp, struct bnxt_representor *rep_bp) return rc; } -int bnxt_hwrm_cfa_adv_flow_mgmt_qcaps(struct bnxt *bp) -{ - struct hwrm_cfa_adv_flow_mgnt_qcaps_output *resp = - bp->hwrm_cmd_resp_addr; - struct hwrm_cfa_adv_flow_mgnt_qcaps_input req = {0}; - uint32_t flags = 0; - int rc = 0; - - if (!(bp->fw_cap & BNXT_FW_CAP_ADV_FLOW_MGMT)) - return 0; - - if (!(BNXT_PF(bp) || BNXT_VF_IS_TRUSTED(bp))) { - PMD_DRV_LOG(DEBUG, - "Not a PF or trusted VF. Command not supported\n"); - return 0; - } - - HWRM_PREP(&req, HWRM_CFA_ADV_FLOW_MGNT_QCAPS, BNXT_USE_CHIMP_MB); - rc = bnxt_hwrm_send_message(bp, &req, sizeof(req), BNXT_USE_CHIMP_MB); - - HWRM_CHECK_RESULT(); - flags = rte_le_to_cpu_32(resp->flags); - HWRM_UNLOCK(); - - if (flags & HWRM_CFA_ADV_FLOW_MGNT_QCAPS_RFS_RING_TBL_IDX_V2_SUPPORTED) - bp->flags |= BNXT_FLAG_FLOW_CFA_RFS_RING_TBL_IDX_V2; - else - bp->flags |= BNXT_FLAG_RFS_NEEDS_VNIC; - - return rc; -} - int bnxt_hwrm_fw_echo_reply(struct bnxt *bp, uint32_t echo_req_data1, uint32_t echo_req_data2) { diff --git a/drivers/net/bnxt/bnxt_hwrm.h b/drivers/net/bnxt/bnxt_hwrm.h index 8202455..21e1b7a 100644 --- a/drivers/net/bnxt/bnxt_hwrm.h +++ b/drivers/net/bnxt/bnxt_hwrm.h @@ -58,9 +58,6 @@ struct hwrm_func_qstats_output; #define HWRM_PORT_PHY_CFG_IN_EN_AUTO_LINK_SPEED_MASK \ HWRM_PORT_PHY_CFG_INPUT_ENABLES_AUTO_LINK_SPEED_MASK -#define HWRM_CFA_ADV_FLOW_MGNT_QCAPS_RFS_RING_TBL_IDX_V2_SUPPORTED \ - HWRM_CFA_ADV_FLOW_MGNT_QCAPS_OUTPUT_FLAGS_RFS_RING_TBL_IDX_V2_SUPPORTED - #define HWRM_SPEC_CODE_1_8_4 0x10804 #define HWRM_SPEC_CODE_1_9_0 0x10900 #define HWRM_SPEC_CODE_1_9_2 0x10902 @@ -296,7 +293,6 @@ int bnxt_hwrm_first_vf_id_query(struct bnxt *bp, uint16_t fid, int bnxt_hwrm_cfa_pair_exists(struct bnxt *bp, struct bnxt_representor *rep_bp); int bnxt_hwrm_cfa_pair_alloc(struct bnxt *bp, struct bnxt_representor *rep); int bnxt_hwrm_cfa_pair_free(struct bnxt *bp, struct bnxt_representor *rep); -int bnxt_hwrm_cfa_adv_flow_mgmt_qcaps(struct bnxt *bp); int bnxt_hwrm_fw_echo_reply(struct bnxt *bp, uint32_t echo_req_data1, uint32_t echo_req_data2); int bnxt_hwrm_poll_ver_get(struct bnxt *bp); From patchwork Tue Jan 4 08:38:17 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: 105610 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 7E2B2A00C5; Tue, 4 Jan 2022 09:20:11 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 213B2411AE; Tue, 4 Jan 2022 09:19:30 +0100 (CET) Received: from relay.smtp-ext.broadcom.com (relay.smtp-ext.broadcom.com [192.19.166.231]) by mails.dpdk.org (Postfix) with ESMTP id 52F8841190 for ; Tue, 4 Jan 2022 09:19:28 +0100 (CET) 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 A0673C0000F3; Tue, 4 Jan 2022 00:19:26 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com A0673C0000F3 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1641284367; bh=ul+Sx5wB+TauNafITvSZZGymGaR32sstjTsrCqTaGtU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Nyntyupv5JH1oq5UFpxzPTuZGrVWDVbCge5F6VHncrmTNGC8S8lZk7Tq2CD7VQw6h K9YVm5kLMiCp+GiR+L7YxjqxTZLyDG/gplbBOr8JkWQfBp0IwFS/JLj9lEai/38NPN llLq/uDH0aLDm5ozsylkncJjam123INLLHlkv0S8= From: Kalesh A P To: dev@dpdk.org Cc: ferruh.yigit@intel.com, ajit.khaparde@broadcom.com Subject: [dpdk-dev] [PATCH 11/18] net/bnxt: get max supported multicast filters count Date: Tue, 4 Jan 2022 14:08:17 +0530 Message-Id: <20220104083824.23001-12-kalesh-anakkur.purayil@broadcom.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20220104083824.23001-1-kalesh-anakkur.purayil@broadcom.com> References: <20220104083824.23001-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 HWRM_FUNC_QCAPS response indicates the maximum number of multicast filters that can be supported by this function on the RX side. Fixed to use this value instead of the hard coded value 16. Fixes: d69851df12b2 ("net/bnxt: support multicast filter and set MAC addr") Cc: stable@dpdk.org Signed-off-by: Kalesh AP Reviewed-by: Ajit Khaparde Reviewed-by: Somnath Kotur --- drivers/net/bnxt/bnxt.h | 3 ++- drivers/net/bnxt/bnxt_hwrm.c | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h index 3df80f5..64866de 100644 --- a/drivers/net/bnxt/bnxt.h +++ b/drivers/net/bnxt/bnxt.h @@ -889,10 +889,11 @@ struct bnxt { struct bnxt_ring_stats *prev_rx_ring_stats; struct bnxt_ring_stats *prev_tx_ring_stats; -#define BNXT_MAX_MC_ADDRS 16 +#define BNXT_MAX_MC_ADDRS ((bp)->max_mcast_addr) struct rte_ether_addr *mcast_addr_list; rte_iova_t mc_list_dma_addr; uint32_t nb_mc_addr; + uint32_t max_mcast_addr; /* maximum number of mcast filters supported */ struct rte_eth_rss_conf rss_conf; /* RSS configuration. */ }; diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c index ceb6808..86997f5 100644 --- a/drivers/net/bnxt/bnxt_hwrm.c +++ b/drivers/net/bnxt/bnxt_hwrm.c @@ -914,6 +914,8 @@ static int __bnxt_hwrm_func_qcaps(struct bnxt *bp) PMD_DRV_LOG(DEBUG, "Max l2_cntxts is %d vnics is %d\n", bp->max_l2_ctx, bp->max_vnics); bp->max_stat_ctx = rte_le_to_cpu_16(resp->max_stat_ctx); + bp->max_mcast_addr = rte_le_to_cpu_32(resp->max_mcast_filters); + if (BNXT_PF(bp)) { bp->pf->total_vnics = rte_le_to_cpu_16(resp->max_vnics); if (flags & HWRM_FUNC_QCAPS_OUTPUT_FLAGS_PTP_SUPPORTED) { From patchwork Tue Jan 4 08:38:18 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: 105611 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 457EDA00C5; Tue, 4 Jan 2022 09:20:16 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1DF6E411B8; Tue, 4 Jan 2022 09:19:32 +0100 (CET) Received: from relay.smtp-ext.broadcom.com (lpdvsmtp11.broadcom.com [192.19.166.231]) by mails.dpdk.org (Postfix) with ESMTP id EE6A5411A7 for ; Tue, 4 Jan 2022 09:19:29 +0100 (CET) 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 4882DC0000F1; Tue, 4 Jan 2022 00:19:28 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com 4882DC0000F1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1641284369; bh=RadfgO/Sx0Au1fYl48ayaAN2oJ1HSRibQdPY8ziEI1E=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=qa2I5k6r2ZlDHKWrsA3SrNUFyU4iNouqin8Bi8Kf/0qOyESk7HK+PV1IvDiy6yDTc Q2GLfEBLHoW/arnX2yTSpbrIonwGqXHsWivJVvt22xEZJMjnjZ5RtlOXVw6JkCJuiy o/ytOlzKV1eapIORtoUHefO+923mPzZpKrCc8tSE= From: Kalesh A P To: dev@dpdk.org Cc: ferruh.yigit@intel.com, ajit.khaparde@broadcom.com Subject: [dpdk-dev] [PATCH 12/18] net/bnxt: refactor bnxt_stop_rxtx() for reuse Date: Tue, 4 Jan 2022 14:08:18 +0530 Message-Id: <20220104083824.23001-13-kalesh-anakkur.purayil@broadcom.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20220104083824.23001-1-kalesh-anakkur.purayil@broadcom.com> References: <20220104083824.23001-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 By accepting rte_eth_dev as input, bnxt_stop_rxtx() can be used in multiple scenarios such as representor devices. Signed-off-by: Somnath Kotur Reviewed-by: Ajit Khaparde Reviewed-by: Kalesh AP --- drivers/net/bnxt/bnxt_cpr.c | 16 ++++++++-------- drivers/net/bnxt/bnxt_cpr.h | 2 +- drivers/net/bnxt/bnxt_ethdev.c | 5 ++--- drivers/net/bnxt/bnxt_reps.c | 3 +-- 4 files changed, 12 insertions(+), 14 deletions(-) diff --git a/drivers/net/bnxt/bnxt_cpr.c b/drivers/net/bnxt/bnxt_cpr.c index a43b22a..593eebf 100644 --- a/drivers/net/bnxt/bnxt_cpr.c +++ b/drivers/net/bnxt/bnxt_cpr.c @@ -149,7 +149,7 @@ void bnxt_handle_async_event(struct bnxt *bp, * Avoid any rx/tx packet processing during firmware reset * operation. */ - bnxt_stop_rxtx(bp); + bnxt_stop_rxtx(bp->eth_dev); /* Ignore reset notify async events when stopping the port */ if (!bp->eth_dev->data->dev_started) { @@ -383,15 +383,15 @@ bool bnxt_is_recovery_enabled(struct bnxt *bp) return false; } -void bnxt_stop_rxtx(struct bnxt *bp) +void bnxt_stop_rxtx(struct rte_eth_dev *eth_dev) { - bp->eth_dev->rx_pkt_burst = &bnxt_dummy_recv_pkts; - bp->eth_dev->tx_pkt_burst = &bnxt_dummy_xmit_pkts; + eth_dev->rx_pkt_burst = &bnxt_dummy_recv_pkts; + eth_dev->tx_pkt_burst = &bnxt_dummy_xmit_pkts; - rte_eth_fp_ops[bp->eth_dev->data->port_id].rx_pkt_burst = - bp->eth_dev->rx_pkt_burst; - rte_eth_fp_ops[bp->eth_dev->data->port_id].tx_pkt_burst = - bp->eth_dev->tx_pkt_burst; + rte_eth_fp_ops[eth_dev->data->port_id].rx_pkt_burst = + eth_dev->rx_pkt_burst; + rte_eth_fp_ops[eth_dev->data->port_id].tx_pkt_burst = + eth_dev->tx_pkt_burst; rte_mb(); /* Allow time for threads to exit the real burst functions. */ diff --git a/drivers/net/bnxt/bnxt_cpr.h b/drivers/net/bnxt/bnxt_cpr.h index 73468ed..52db382 100644 --- a/drivers/net/bnxt/bnxt_cpr.h +++ b/drivers/net/bnxt/bnxt_cpr.h @@ -117,7 +117,7 @@ void bnxt_wait_for_device_shutdown(struct bnxt *bp); bool bnxt_is_recovery_enabled(struct bnxt *bp); bool bnxt_is_primary_func(struct bnxt *bp); -void bnxt_stop_rxtx(struct bnxt *bp); +void bnxt_stop_rxtx(struct rte_eth_dev *eth_dev); /** * Check validity of a completion ring entry. If the entry is valid, include a diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index 00acdb7..cf3bd77 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -1471,8 +1471,7 @@ static int bnxt_dev_stop(struct rte_eth_dev *eth_dev) eth_dev->data->dev_started = 0; /* Prevent crashes when queues are still in use */ - eth_dev->rx_pkt_burst = &bnxt_dummy_recv_pkts; - eth_dev->tx_pkt_burst = &bnxt_dummy_xmit_pkts; + bnxt_stop_rxtx(eth_dev); bnxt_disable_int(bp); @@ -4557,7 +4556,7 @@ static void bnxt_check_fw_health(void *arg) bp->flags |= BNXT_FLAG_FATAL_ERROR; bp->flags |= BNXT_FLAG_FW_RESET; - bnxt_stop_rxtx(bp); + bnxt_stop_rxtx(bp->eth_dev); PMD_DRV_LOG(ERR, "Detected FW dead condition\n"); diff --git a/drivers/net/bnxt/bnxt_reps.c b/drivers/net/bnxt/bnxt_reps.c index 22b76b7..f24f5ef 100644 --- a/drivers/net/bnxt/bnxt_reps.c +++ b/drivers/net/bnxt/bnxt_reps.c @@ -505,8 +505,7 @@ int bnxt_rep_dev_stop_op(struct rte_eth_dev *eth_dev) struct bnxt_representor *vfr_bp = eth_dev->data->dev_private; /* Avoid crashes as we are about to free queues */ - eth_dev->rx_pkt_burst = &bnxt_dummy_recv_pkts; - eth_dev->tx_pkt_burst = &bnxt_dummy_xmit_pkts; + bnxt_stop_rxtx(eth_dev); BNXT_TF_DBG(DEBUG, "BNXT Port:%d VFR stop\n", eth_dev->data->port_id); From patchwork Tue Jan 4 08:38:19 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: 105612 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 3508DA00C5; Tue, 4 Jan 2022 09:20:21 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0A10D411DD; Tue, 4 Jan 2022 09:19:33 +0100 (CET) Received: from relay.smtp-ext.broadcom.com (relay.smtp-ext.broadcom.com [192.19.166.231]) by mails.dpdk.org (Postfix) with ESMTP id 9651C410D5 for ; Tue, 4 Jan 2022 09:19:31 +0100 (CET) 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 E7829C0000F2; Tue, 4 Jan 2022 00:19:29 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com E7829C0000F2 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1641284371; bh=GkBFWY9PPzkUL/iVlG4D+nZdTJtzQgbj8zDgh8iDGAM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=X6WtoN7SnJnX6+C/VT0bL83eatsDUdNcM/e8rx/VS7EVf7s2khOpK6GUUyWieUlC3 necaT+KPVdRpGOxHCvOyGMuAfPSuXHUBCB9M0re9uIOB7N4AdU75miR1l1mLoiqGN/ Dov25LQOWfuAUTIN01PnkXjZQaVEtUOW/34uz68w= From: Kalesh A P To: dev@dpdk.org Cc: ferruh.yigit@intel.com, ajit.khaparde@broadcom.com Subject: [dpdk-dev] [PATCH 13/18] net/bnxt: fix handling of VF configuration changes Date: Tue, 4 Jan 2022 14:08:19 +0530 Message-Id: <20220104083824.23001-14-kalesh-anakkur.purayil@broadcom.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20220104083824.23001-1-kalesh-anakkur.purayil@broadcom.com> References: <20220104083824.23001-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 When there is a change in the default VLAN of the VF, FW sends the VF_CFG_CHANGE async event to the driver. Upon receiving this async event, driver currently only queries the FW using HWRM_FUNC_QCFG. But this is not enough. Driver has to clean up the existing filter and recreate filters so the FW can apply the default VLAN to the filter. Fixes: 12213821a8a3 ("net/bnxt: register for more async events") Cc: stable@dpdk.org Signed-off-by: Kalesh AP Reviewed-by: Ajit Khaparde Reviewed-by: Somnath Kotur --- drivers/net/bnxt/bnxt.h | 3 +++ drivers/net/bnxt/bnxt_cpr.c | 25 ++++++++++++++++++++++++- drivers/net/bnxt/bnxt_ethdev.c | 5 +++-- 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h index 64866de..9c0dbc6 100644 --- a/drivers/net/bnxt/bnxt.h +++ b/drivers/net/bnxt/bnxt.h @@ -1068,5 +1068,8 @@ int bnxt_flow_stats_cnt(struct bnxt *bp); uint32_t bnxt_get_speed_capabilities(struct bnxt *bp); int bnxt_flow_ops_get_op(struct rte_eth_dev *dev, const struct rte_flow_ops **ops); +int bnxt_dev_start_op(struct rte_eth_dev *eth_dev); +int bnxt_dev_stop_op(struct rte_eth_dev *eth_dev); +void bnxt_handle_vf_cfg_change(void *arg); #endif diff --git a/drivers/net/bnxt/bnxt_cpr.c b/drivers/net/bnxt/bnxt_cpr.c index 593eebf..9b9285b 100644 --- a/drivers/net/bnxt/bnxt_cpr.c +++ b/drivers/net/bnxt/bnxt_cpr.c @@ -107,6 +107,26 @@ static void bnxt_handle_event_error_report(struct bnxt *bp, } } +void bnxt_handle_vf_cfg_change(void *arg) +{ + struct bnxt *bp = arg; + struct rte_eth_dev *eth_dev = bp->eth_dev; + int rc; + + /* Free and recreate filters with default VLAN */ + if (eth_dev->data->dev_started) { + rc = bnxt_dev_stop_op(eth_dev); + if (rc != 0) { + PMD_DRV_LOG(ERR, "Failed to stop Port:%u\n", eth_dev->data->port_id); + return; + } + + rc = bnxt_dev_start_op(eth_dev); + if (rc != 0) + PMD_DRV_LOG(ERR, "Failed to start Port:%u\n", eth_dev->data->port_id); + } +} + /* * Async event handling */ @@ -138,8 +158,11 @@ void bnxt_handle_async_event(struct bnxt *bp, PMD_DRV_LOG(INFO, "Async event: PF driver unloaded\n"); break; case HWRM_ASYNC_EVENT_CMPL_EVENT_ID_VF_CFG_CHANGE: - PMD_DRV_LOG(INFO, "Async event: VF config changed\n"); + PMD_DRV_LOG(INFO, "Port %u: VF config change async event\n", port_id); + PMD_DRV_LOG(INFO, "event: data1 %#x data2 %#x\n", data1, data2); bnxt_hwrm_func_qcfg(bp, NULL); + if (BNXT_VF(bp)) + rte_eal_alarm_set(1, bnxt_handle_vf_cfg_change, (void *)bp); break; case HWRM_ASYNC_EVENT_CMPL_EVENT_ID_PORT_CONN_NOT_ALLOWED: PMD_DRV_LOG(INFO, "Port conn async event\n"); diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index cf3bd77..999a9a5 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -1530,7 +1530,7 @@ static int bnxt_dev_stop(struct rte_eth_dev *eth_dev) } /* Unload the driver, release resources */ -static int bnxt_dev_stop_op(struct rte_eth_dev *eth_dev) +int bnxt_dev_stop_op(struct rte_eth_dev *eth_dev) { struct bnxt *bp = eth_dev->data->dev_private; @@ -1546,7 +1546,7 @@ static int bnxt_dev_stop_op(struct rte_eth_dev *eth_dev) return bnxt_dev_stop(eth_dev); } -static int bnxt_dev_start_op(struct rte_eth_dev *eth_dev) +int bnxt_dev_start_op(struct rte_eth_dev *eth_dev) { struct bnxt *bp = eth_dev->data->dev_private; uint64_t rx_offloads = eth_dev->data->dev_conf.rxmode.offloads; @@ -1678,6 +1678,7 @@ static int bnxt_dev_close_op(struct rte_eth_dev *eth_dev) rte_eal_alarm_cancel(bnxt_dev_reset_and_resume, (void *)bp); rte_eal_alarm_cancel(bnxt_dev_recover, (void *)bp); bnxt_cancel_fc_thread(bp); + rte_eal_alarm_cancel(bnxt_handle_vf_cfg_change, (void *)bp); if (eth_dev->data->dev_started) ret = bnxt_dev_stop(eth_dev); From patchwork Tue Jan 4 08:38:20 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: 105613 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 2ACD0A00C5; Tue, 4 Jan 2022 09:20:27 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5DE33411F3; Tue, 4 Jan 2022 09:19:34 +0100 (CET) Received: from relay.smtp-ext.broadcom.com (lpdvsmtp11.broadcom.com [192.19.166.231]) by mails.dpdk.org (Postfix) with ESMTP id 349D741145 for ; Tue, 4 Jan 2022 09:19:33 +0100 (CET) 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 89628C0000F1; Tue, 4 Jan 2022 00:19:31 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com 89628C0000F1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1641284372; bh=Hvz6KjiuTUF3V4ibQMaaIEfZXkoj2Xr9BiMz5po86SA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=X0yj7C1mwDQFv8ldrFPZo1hgQvPD6oHFLCx1NPF1gN/bCKUY9o3GxKBbZp3SQuq/b 3IcxYfyEtFHwjLGeTFsD+JrO3XP6y9D6ceFu/W8zVl4Xof2kB6jUDUZ/0BdfErdKvs vajjVmYq3O1joQ2bTj/jjGHF69S/syXIVBV61igU= From: Kalesh A P To: dev@dpdk.org Cc: ferruh.yigit@intel.com, ajit.khaparde@broadcom.com Subject: [dpdk-dev] [PATCH 14/18] net/bnxt: fix ring teardown Date: Tue, 4 Jan 2022 14:08:20 +0530 Message-Id: <20220104083824.23001-15-kalesh-anakkur.purayil@broadcom.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20220104083824.23001-1-kalesh-anakkur.purayil@broadcom.com> References: <20220104083824.23001-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 Check for valid bit while scanning for hwrm_done completion during ring teardown. Not checking the valid bit could cause a ring overflow when we ring the doorbell. Fixes: 4fb6ab3f866d ("net/bnxt: check flush status during ring free") Cc: stable@dpdk.org Signed-off-by: Ajit Khaparde Reviewed-by: Somnath Kotur Reviewed-by: Kalesh AP --- drivers/net/bnxt/bnxt_rxr.c | 3 +++ drivers/net/bnxt/bnxt_txr.c | 3 +++ 2 files changed, 6 insertions(+) diff --git a/drivers/net/bnxt/bnxt_rxr.c b/drivers/net/bnxt/bnxt_rxr.c index 9621809..b60c247 100644 --- a/drivers/net/bnxt/bnxt_rxr.c +++ b/drivers/net/bnxt/bnxt_rxr.c @@ -1411,6 +1411,9 @@ int bnxt_flush_rx_cmp(struct bnxt_cp_ring_info *cpr) cons = RING_CMP(cpr->cp_ring_struct, raw_cons); rxcmp = (struct rx_pkt_cmpl *)&cpr->cp_desc_ring[cons]; + if (!bnxt_cpr_cmp_valid(rxcmp, raw_cons, ring_mask + 1)) + break; + if (CMP_TYPE(rxcmp) == CMPL_BASE_TYPE_HWRM_DONE) return 1; diff --git a/drivers/net/bnxt/bnxt_txr.c b/drivers/net/bnxt/bnxt_txr.c index e2b7e40..3b8f238 100644 --- a/drivers/net/bnxt/bnxt_txr.c +++ b/drivers/net/bnxt/bnxt_txr.c @@ -602,6 +602,9 @@ int bnxt_flush_tx_cmp(struct bnxt_cp_ring_info *cpr) cons = RING_CMPL(ring_mask, raw_cons); txcmp = (struct tx_cmpl *)&cp_desc_ring[cons]; + if (!bnxt_cpr_cmp_valid(txcmp, raw_cons, ring_mask + 1)) + break; + opaque = rte_cpu_to_le_32(txcmp->opaque); raw_cons = NEXT_RAW_CMP(raw_cons); From patchwork Tue Jan 4 08:38:21 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: 105614 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 41909A00C5; Tue, 4 Jan 2022 09:20:32 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5588E4115D; Tue, 4 Jan 2022 09:19:36 +0100 (CET) Received: from relay.smtp-ext.broadcom.com (lpdvsmtp11.broadcom.com [192.19.166.231]) by mails.dpdk.org (Postfix) with ESMTP id C6F894120A for ; Tue, 4 Jan 2022 09:19:34 +0100 (CET) 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 28645C0000F2; Tue, 4 Jan 2022 00:19:32 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com 28645C0000F2 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1641284374; bh=QyzkscEPAAEPfd+12pkuMAwYYqoCkliZ4gW5OO64MaM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=fy3VtP/zlrq4ws2UqOj5ui5koILkgiaL9MzLlIEWEf4qF0NwHdb8Wu0iEZV1kQmiS uu+zuCp9j1dSSFYsNPNBja2bSflS2qeopfNG+F0Oi6eHIHZXE0bC/8YRCx7MskvvZ2 p+tWrTNJJl0tMvQO8tS1kKe899RgUcvoaB4mGY2E= From: Kalesh A P To: dev@dpdk.org Cc: ferruh.yigit@intel.com, ajit.khaparde@broadcom.com Subject: [dpdk-dev] [PATCH 15/18] net/bnxt: fix PAM4 mask setting Date: Tue, 4 Jan 2022 14:08:21 +0530 Message-Id: <20220104083824.23001-16-kalesh-anakkur.purayil@broadcom.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20220104083824.23001-1-kalesh-anakkur.purayil@broadcom.com> References: <20220104083824.23001-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 Set the PAM4 mask setting only when PAM4 signaling is enabled. Setting it otherwise seems to result in link negotiation. Also auto_pam4_link_speeds has been renamed to auto_pam4_link_speed_mask to reflect its real usage. Fixes: c23f9ded0391 ("net/bnxt: support 200G PAM4 link") Cc: stable@dpdk.org Signed-off-by: Ajit Khaparde Reviewed-by: Kalesh AP Reviewed-by: Somnath Kotur --- drivers/net/bnxt/bnxt.h | 2 +- drivers/net/bnxt/bnxt_hwrm.c | 25 +++++++++++++------------ 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h index 9c0dbc6..433f1c8 100644 --- a/drivers/net/bnxt/bnxt.h +++ b/drivers/net/bnxt/bnxt.h @@ -297,7 +297,7 @@ struct bnxt_link_info { uint8_t link_signal_mode; uint16_t force_pam4_link_speed; uint16_t support_pam4_speeds; - uint16_t auto_pam4_link_speeds; + uint16_t auto_pam4_link_speed_mask; uint16_t support_pam4_auto_speeds; uint8_t req_signal_mode; uint8_t module_status; diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c index 86997f5..a59e436 100644 --- a/drivers/net/bnxt/bnxt_hwrm.c +++ b/drivers/net/bnxt/bnxt_hwrm.c @@ -1436,16 +1436,17 @@ static int bnxt_hwrm_port_phy_cfg(struct bnxt *bp, struct bnxt_link_info *conf) !(conf->phy_flags & HWRM_PORT_PHY_CFG_INPUT_FLAGS_FORCE)) { req.auto_mode = HWRM_PORT_PHY_CFG_INPUT_AUTO_MODE_SPEED_MASK; - req.auto_link_speed_mask = - conf->auto_link_speed_mask; - if (conf->auto_pam4_link_speeds) { + if (conf->auto_pam4_link_speed_mask && + bp->link_info->link_signal_mode) { enables |= HWRM_PORT_PHY_CFG_IN_EN_AUTO_PAM4_LINK_SPD_MASK; req.auto_link_pam4_speed_mask = - conf->auto_pam4_link_speeds; + rte_cpu_to_le_16(conf->auto_pam4_link_speed_mask); } else { enables |= HWRM_PORT_PHY_CFG_IN_EN_AUTO_LINK_SPEED_MASK; + req.auto_link_speed_mask = + rte_cpu_to_le_16(conf->auto_link_speed_mask); } } if (conf->auto_link_speed && @@ -1518,7 +1519,7 @@ static int bnxt_hwrm_port_phy_qcfg(struct bnxt *bp, rte_le_to_cpu_16(resp->force_pam4_link_speed); link_info->support_pam4_speeds = rte_le_to_cpu_16(resp->support_pam4_speeds); - link_info->auto_pam4_link_speeds = + link_info->auto_pam4_link_speed_mask = rte_le_to_cpu_16(resp->auto_pam4_link_speed_mask); link_info->module_status = resp->module_status; HWRM_UNLOCK(); @@ -1529,7 +1530,7 @@ static int bnxt_hwrm_port_phy_qcfg(struct bnxt *bp, 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->auto_pam4_link_speed_mask, link_info->support_pam4_speeds, link_info->force_pam4_link_speed); return rc; @@ -3245,7 +3246,7 @@ int bnxt_set_hwrm_link_config(struct bnxt *bp, bool link_up) /* 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) + bp->link_info->auto_pam4_link_speed_mask == 0) autoneg = 0; speed = bnxt_parse_eth_link_speed(dev_conf->link_speeds, @@ -3258,8 +3259,8 @@ int bnxt_set_hwrm_link_config(struct bnxt *bp, bool link_up) link_req.auto_link_speed_mask = bnxt_parse_eth_link_speed_mask(bp, dev_conf->link_speeds); - link_req.auto_pam4_link_speeds = - bp->link_info->auto_pam4_link_speeds; + link_req.auto_pam4_link_speed_mask = + bp->link_info->auto_pam4_link_speed_mask; } else { if (bp->link_info->phy_type == HWRM_PORT_PHY_QCFG_OUTPUT_PHY_TYPE_BASET || @@ -3278,9 +3279,9 @@ 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->auto_pam4_link_speeds) + else if (bp->link_info->auto_pam4_link_speed_mask) link_req.link_speed = - bp->link_info->auto_pam4_link_speeds; + 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; @@ -3292,7 +3293,7 @@ int bnxt_set_hwrm_link_config(struct bnxt *bp, bool link_up) * zero. Use the auto_link_speed. */ if (bp->link_info->auto_link_speed != 0 && - bp->link_info->auto_pam4_link_speeds == 0) + bp->link_info->auto_pam4_link_speed_mask == 0) link_req.link_speed = bp->link_info->auto_link_speed; } link_req.duplex = bnxt_parse_eth_link_duplex(dev_conf->link_speeds); From patchwork Tue Jan 4 08:38:22 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: 105615 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 BF0B0A00C5; Tue, 4 Jan 2022 09:20:36 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 508914122E; Tue, 4 Jan 2022 09:19:38 +0100 (CET) Received: from relay.smtp-ext.broadcom.com (relay.smtp-ext.broadcom.com [192.19.166.231]) by mails.dpdk.org (Postfix) with ESMTP id 7765441223 for ; Tue, 4 Jan 2022 09:19:36 +0100 (CET) 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 BB132C0000F1; Tue, 4 Jan 2022 00:19:34 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com BB132C0000F1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1641284375; bh=gFLXNCZN3fBZVZOSCUK4S/oQOY5eWRMLPfWxbNZOdoM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=OhnkWvj9/EPn6rd0bxmQpLzDE5WH0ViG6lu4Myc0UYQcBQdaYcsmfq+Fhh9IrjRzr czU+slRf8HI+7Wq7tR0kk5ikHOeUtaZB6DafGmje8C9UnbTKNAmGiUKyfAYmmJuM4Z 5so0Gg1lX7gark08KrTKwPSQxalS+LEqzGtW2AjE= From: Kalesh A P To: dev@dpdk.org Cc: ferruh.yigit@intel.com, ajit.khaparde@broadcom.com Subject: [dpdk-dev] [PATCH 16/18] net/bnxt: fix pointer access Date: Tue, 4 Jan 2022 14:08:22 +0530 Message-Id: <20220104083824.23001-17-kalesh-anakkur.purayil@broadcom.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20220104083824.23001-1-kalesh-anakkur.purayil@broadcom.com> References: <20220104083824.23001-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 Validate the pointers in rxq before accessing them. Otherwise it can cause a segfault. Fixes: 657c2a7f1dd4 ("net/bnxt: create aggregation rings when needed") Cc: stable@dpdk.org Signed-off-by: Ajit Khaparde Reviewed-by: Kalesh AP Reviewed-by: Somnath Kotur --- drivers/net/bnxt/bnxt_rxq.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/net/bnxt/bnxt_rxq.c b/drivers/net/bnxt/bnxt_rxq.c index 9f1d1d4..cd3bb14 100644 --- a/drivers/net/bnxt/bnxt_rxq.c +++ b/drivers/net/bnxt/bnxt_rxq.c @@ -214,7 +214,9 @@ void bnxt_rx_queue_release_mbufs(struct bnxt_rx_queue *rxq) } } /* Free up mbufs in Agg ring */ - if (!bnxt_need_agg_ring(rxq->bp->eth_dev)) + if (rxq->bp == NULL || + rxq->bp->eth_dev == NULL || + !bnxt_need_agg_ring(rxq->bp->eth_dev)) return; sw_ring = rxq->rx_ring->ag_buf_ring; From patchwork Tue Jan 4 08:38:23 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: 105616 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 903FCA00C5; Tue, 4 Jan 2022 09:20:41 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4587441C26; Tue, 4 Jan 2022 09:19:39 +0100 (CET) Received: from relay.smtp-ext.broadcom.com (relay.smtp-ext.broadcom.com [192.19.166.231]) by mails.dpdk.org (Postfix) with ESMTP id 289EB41226 for ; Tue, 4 Jan 2022 09:19:38 +0100 (CET) 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 6CB59C0000F2; Tue, 4 Jan 2022 00:19:36 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com 6CB59C0000F2 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1641284377; bh=+4Ol8aKVp1hAD6D+6X/Jaa2uhabMGSTng0GsfoJb2qQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=LQeK48GpcN4MXCMqmOtgYQwIDDRi8xVrpY/G5Um6s5ctET0xA5JYK3+STAVTnJgaA Gt6olgAsyRTbvTOukT1oq0VVkydt6B5i6oAmZ/wSAQMJOGCrxwTogYQBb/S4aq7KRd B0sRYslpJ+iC5iMGMJSHuEyprXg/ZViHCeNbP4NI= From: Kalesh A P To: dev@dpdk.org Cc: ferruh.yigit@intel.com, ajit.khaparde@broadcom.com Subject: [dpdk-dev] [PATCH 17/18] net/bnxt: fix incorrect memset in bnxt_dev_xstats_get_op Date: Tue, 4 Jan 2022 14:08:23 +0530 Message-Id: <20220104083824.23001-18-kalesh-anakkur.purayil@broadcom.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20220104083824.23001-1-kalesh-anakkur.purayil@broadcom.com> References: <20220104083824.23001-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 In bnxt_dev_xstats_get_op(), the PMD is not zeroing the whole buffer supplied by the application. This can end up passing junk statistics values to the application when the FW does not support extended stats on a function. Fixed to call memset() with corrrect size. Fixes: f55e12f33416 ("net/bnxt: support extended port counters") Cc: stable@dpdk.org Signed-off-by: Kalesh AP Reviewed-by: Ajit Khaparde Reviewed-by: Somnath Kotur --- drivers/net/bnxt/bnxt_stats.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/bnxt/bnxt_stats.c b/drivers/net/bnxt/bnxt_stats.c index 991eafc..5b6519e 100644 --- a/drivers/net/bnxt/bnxt_stats.c +++ b/drivers/net/bnxt/bnxt_stats.c @@ -741,7 +741,7 @@ int bnxt_dev_xstats_get_op(struct rte_eth_dev *eth_dev, (bp->fw_tx_port_stats_ext_size / stat_size)); - memset(xstats, 0, sizeof(*xstats)); + memset(xstats, 0, sizeof(*xstats) * n); count = 0; for (i = 0; i < RTE_DIM(bnxt_rx_stats_strings); i++) { From patchwork Tue Jan 4 08:38:24 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: 105617 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 136B5A00C5; Tue, 4 Jan 2022 09:20:46 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3479C4115F; Tue, 4 Jan 2022 09:19:41 +0100 (CET) Received: from relay.smtp-ext.broadcom.com (relay.smtp-ext.broadcom.com [192.19.166.231]) by mails.dpdk.org (Postfix) with ESMTP id 346E8426D2 for ; Tue, 4 Jan 2022 09:19:40 +0100 (CET) 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 1B789C0000F1; Tue, 4 Jan 2022 00:19:37 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com 1B789C0000F1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1641284379; bh=89c/SyylRj+ilzHwRurZLc8vRJ+Hi3R1YDjDfwexGD8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=DF6B4Oy0Ll0dRMmCQxFyF5ugL03DUMi1dm4cKkLQhMPUBvkua4uMKnQPUGABSBQBl veQ5qMzOttlxeGdbPb+CGP3P4WS73WY2VdDkfPmyi5Zv2RoU/pEX3mlNGTgXGkaas9 H4YGkV5wWMw6Cb8BAPk2V5j1IFjLrOO+KA0IloD8= From: Kalesh A P To: dev@dpdk.org Cc: ferruh.yigit@intel.com, ajit.khaparde@broadcom.com Subject: [dpdk-dev] [PATCH 18/18] net/bnxt: check VF rep pointer before access Date: Tue, 4 Jan 2022 14:08:24 +0530 Message-Id: <20220104083824.23001-19-kalesh-anakkur.purayil@broadcom.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20220104083824.23001-1-kalesh-anakkur.purayil@broadcom.com> References: <20220104083824.23001-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 The PF or trusted VF Rx handler could invoke the VF representor's Rx function without knowledge of the application cleaning up the representor ports. Check if the vfr_bp pointer is valid before accessing it. Fixes: 6dc83230b43b ("net/bnxt: support port representor data path") Cc: stable@dpdk.org Signed-off-by: Ajit Khaparde Reviewed-by: Kalesh AP Reviewed-by: Somnath Kotur --- drivers/net/bnxt/bnxt_reps.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/drivers/net/bnxt/bnxt_reps.c b/drivers/net/bnxt/bnxt_reps.c index f24f5ef..5e140f0 100644 --- a/drivers/net/bnxt/bnxt_reps.c +++ b/drivers/net/bnxt/bnxt_reps.c @@ -35,16 +35,20 @@ static const struct eth_dev_ops bnxt_rep_dev_ops = { uint16_t bnxt_vfr_recv(uint16_t port_id, uint16_t queue_id, struct rte_mbuf *mbuf) { - struct rte_mbuf **prod_rx_buf; + struct bnxt_representor *vfr_bp = NULL; struct bnxt_rx_ring_info *rep_rxr; - struct bnxt_rx_queue *rep_rxq; struct rte_eth_dev *vfr_eth_dev; - struct bnxt_representor *vfr_bp; + struct rte_mbuf **prod_rx_buf; + struct bnxt_rx_queue *rep_rxq; uint16_t mask; uint8_t que; vfr_eth_dev = &rte_eth_devices[port_id]; - vfr_bp = vfr_eth_dev->data->dev_private; + vfr_bp = vfr_eth_dev ? vfr_eth_dev->data->dev_private : NULL; + + if (unlikely(vfr_bp == NULL)) + return 1; + /* If rxq_id happens to be > nr_rings, use ring 0 */ que = queue_id < vfr_bp->rx_nr_rings ? queue_id : 0; rep_rxq = vfr_bp->rx_queues[que];