From patchwork Thu Jul 9 09:38:28 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kalesh A P X-Patchwork-Id: 73624 X-Patchwork-Delegate: ajit.khaparde@broadcom.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 899D8A0526; Thu, 9 Jul 2020 11:23:17 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id F09A21E4A8; Thu, 9 Jul 2020 11:23:11 +0200 (CEST) Received: from relay.smtp.broadcom.com (relay.smtp.broadcom.com [192.19.232.149]) by dpdk.org (Postfix) with ESMTP id 03D741DEA4 for ; Thu, 9 Jul 2020 11:23:09 +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.broadcom.com (Postfix) with ESMTP id E80DD1BE201; Thu, 9 Jul 2020 02:23:07 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.10.3 relay.smtp.broadcom.com E80DD1BE201 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1594286589; bh=uPCl+k//cKoFSkYpEctfEKPqoIZHCg/dZZ5IQZ3Dh6E=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=fSHWKG5Wyo0OHOZZx0WrvHOwPSqiw5Hk5Hs36INTSH5MhoIxrTB1rbdV/SbbwxGPt OYm6rcM0xlS5LClXICBB6xVk/3M3/x+byZm5IrnbpB8hkllP4MDXxZrMBFvCiXsiYj Uy0bDwhNgLTPKiJHPFINBEERw3T3A9+8PUEg4sfU= From: Kalesh A P To: dev@dpdk.org Cc: ferruh.yigit@intel.com, ajit.khaparde@broadcom.com Date: Thu, 9 Jul 2020 15:08:28 +0530 Message-Id: <20200709093832.7616-2-kalesh-anakkur.purayil@broadcom.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20200709093832.7616-1-kalesh-anakkur.purayil@broadcom.com> References: <20200709093832.7616-1-kalesh-anakkur.purayil@broadcom.com> Subject: [dpdk-dev] [PATCH 1/5] net/bnxt: fix to avoid unnecessary memory allocation X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Kalesh AP VFs are not privileged to issue HWRM_PORT_LED_QCFG/CFG. There is no need to allocate "bp->leds" memory. Fixes: 205b74295282 ("net/bnxt: fix allocation of LED config info") Cc: stable@dpdk.org Signed-off-by: Kalesh AP Reviewed-by: Somnath Kotur Reviewed-by: Ajit Kumar Khaparde --- drivers/net/bnxt/bnxt_ethdev.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index d228223..65094a3 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -194,6 +194,9 @@ static void bnxt_free_link_info(struct bnxt *bp) static void bnxt_free_leds_info(struct bnxt *bp) { + if (BNXT_VF(bp)) + return; + rte_free(bp->leds); bp->leds = NULL; } @@ -263,6 +266,9 @@ static int bnxt_alloc_link_info(struct bnxt *bp) static int bnxt_alloc_leds_info(struct bnxt *bp) { + if (BNXT_VF(bp)) + return 0; + bp->leds = rte_zmalloc("bnxt_leds", BNXT_MAX_LED * sizeof(struct bnxt_led_info), 0); From patchwork Thu Jul 9 09:38:29 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kalesh A P X-Patchwork-Id: 73625 X-Patchwork-Delegate: ajit.khaparde@broadcom.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 8A281A0526; Thu, 9 Jul 2020 11:23:24 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 46FE61E532; Thu, 9 Jul 2020 11:23:13 +0200 (CEST) Received: from relay.smtp.broadcom.com (relay.smtp.broadcom.com [192.19.232.149]) by dpdk.org (Postfix) with ESMTP id 7CF171E48E for ; Thu, 9 Jul 2020 11:23:10 +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.broadcom.com (Postfix) with ESMTP id 7B5641BE20F; Thu, 9 Jul 2020 02:23:09 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.10.3 relay.smtp.broadcom.com 7B5641BE20F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1594286590; bh=EGb/4Bsn3kBcvID/lD1lyrtoYE1XIu1W1yA0EMu2Va4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=rzLlgWb/jA0I8WZY5kiC4QhGjlpYCkEZq+9qn1yqCy1EGnVaqcJSXV0auBoT54OK0 vfrgQbXG3Apqz+D187ljYQ/2hJWpAgoT/eS3SgKs9HGzjKa3bV0l41QkaKDvaEennY k3wARvftv3dqMynm7BYQO6BbWqeqL+WJjT3tvQvo= From: Kalesh A P To: dev@dpdk.org Cc: ferruh.yigit@intel.com, ajit.khaparde@broadcom.com Date: Thu, 9 Jul 2020 15:08:29 +0530 Message-Id: <20200709093832.7616-3-kalesh-anakkur.purayil@broadcom.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20200709093832.7616-1-kalesh-anakkur.purayil@broadcom.com> References: <20200709093832.7616-1-kalesh-anakkur.purayil@broadcom.com> Subject: [dpdk-dev] [PATCH 2/5] net/bnxt: remove unused enum declaration X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Kalesh AP "enum bnxt_hw_context" is defined in the header file, but is not used anywhere. Fixes: 9738793f28ec ("net/bnxt: add VNIC functions and structs") Cc: stable@dpdk.org Signed-off-by: Kalesh AP Reviewed-by: Ajit Kumar Khaparde --- drivers/net/bnxt/bnxt.h | 7 ------- 1 file changed, 7 deletions(-) diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h index f69ba24..8325e87 100644 --- a/drivers/net/bnxt/bnxt.h +++ b/drivers/net/bnxt/bnxt.h @@ -183,13 +183,6 @@ struct bnxt_led_cfg { #define BNXT_LED_DFLT_ENABLES(x) \ rte_cpu_to_le_32(BNXT_LED_DFLT_ENA << (BNXT_LED_DFLT_ENA_SHIFT * (x))) -enum bnxt_hw_context { - HW_CONTEXT_NONE = 0, - HW_CONTEXT_IS_RSS = 1, - HW_CONTEXT_IS_COS = 2, - HW_CONTEXT_IS_LB = 3, -}; - struct bnxt_vlan_table_entry { uint16_t tpid; uint16_t vid; From patchwork Thu Jul 9 09:38:30 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kalesh A P X-Patchwork-Id: 73626 X-Patchwork-Delegate: ajit.khaparde@broadcom.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 87BE7A0526; Thu, 9 Jul 2020 11:23:34 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id A246E1E545; Thu, 9 Jul 2020 11:23:15 +0200 (CEST) Received: from relay.smtp.broadcom.com (unknown [192.19.232.149]) by dpdk.org (Postfix) with ESMTP id DCF781E49E for ; Thu, 9 Jul 2020 11:23:11 +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.broadcom.com (Postfix) with ESMTP id 0E8A51BE21A; Thu, 9 Jul 2020 02:23:10 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.10.3 relay.smtp.broadcom.com 0E8A51BE21A DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1594286592; bh=v886cisoUSyyAcZ3DSDRC9G40Wp/ogrMtKCe7sukxP0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=C8++g5Bytrzw2tPBnaOVxSsIgKerlQKT/D+zWLwx1brMoo/71DEVBItuS6EjoHKu9 MY5uZ1hD1nu6aU5PrhbExSEaK/4PkVtuXrZEKIdyL1j7FhWkUI1j7xdMTQX/kedA2L RfgY/lmVR467O3tOIAdo/iW+54z9aHZnMCol4LCc= From: Kalesh A P To: dev@dpdk.org Cc: ferruh.yigit@intel.com, ajit.khaparde@broadcom.com Date: Thu, 9 Jul 2020 15:08:30 +0530 Message-Id: <20200709093832.7616-4-kalesh-anakkur.purayil@broadcom.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20200709093832.7616-1-kalesh-anakkur.purayil@broadcom.com> References: <20200709093832.7616-1-kalesh-anakkur.purayil@broadcom.com> Subject: [dpdk-dev] [PATCH 3/5] net/bnxt: fix to not send unnecessary hwrm command X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Kalesh AP During probe, driver issues HWRM_CFA_ADV_FLOW_MGNT_QCAPS command. But it is not using the command response anywhere which makes the fw call redundant. Remove the unnecessary HWRM_CFA_ADV_FLOW_MGNT_QCAPS call to fw. Remove the redundant flow_flags in bnxt struct. Fixes: afef822b2e1b ("net/bnxt: support creating SMAC and inner DMAC filters") Cc: stable@dpdk.org Signed-off-by: Kalesh AP Reviewed-by: Somnath Kotur Reviewed-by: Ajit Kumar Khaparde --- drivers/net/bnxt/bnxt.h | 2 -- drivers/net/bnxt/bnxt_ethdev.c | 4 ---- drivers/net/bnxt/bnxt_hwrm.c | 32 -------------------------------- drivers/net/bnxt/bnxt_hwrm.h | 1 - 4 files changed, 39 deletions(-) diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h index 8325e87..50f93ff 100644 --- a/drivers/net/bnxt/bnxt.h +++ b/drivers/net/bnxt/bnxt.h @@ -638,8 +638,6 @@ struct bnxt { #define BNXT_FW_CAP_ADV_FLOW_COUNTERS BIT(6) #define BNXT_FW_CAP_HCOMM_FW_STATUS BIT(7) - uint32_t flow_flags; -#define BNXT_FLOW_FLAG_L2_HDR_SRC_FILTER_EN BIT(0) pthread_mutex_t flow_lock; uint32_t vnic_cap_flags; diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index 65094a3..2485a72 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -5472,10 +5472,6 @@ static int bnxt_init_fw(struct bnxt *bp) bnxt_hwrm_port_phy_qcaps(bp); - rc = bnxt_hwrm_cfa_adv_flow_mgmt_qcaps(bp); - if (rc) - return rc; - bnxt_alloc_error_recovery_info(bp); /* Get the adapter error recovery support info */ rc = bnxt_hwrm_error_recovery_qcfg(bp); diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c index 6ade32d..f9c7461 100644 --- a/drivers/net/bnxt/bnxt_hwrm.c +++ b/drivers/net/bnxt/bnxt_hwrm.c @@ -5320,38 +5320,6 @@ int bnxt_hwrm_port_ts_query(struct bnxt *bp, uint8_t path, uint64_t *timestamp) 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 rc; - - 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_KONG(bp)); - rc = bnxt_hwrm_send_message(bp, &req, sizeof(req), BNXT_USE_KONG(bp)); - - HWRM_CHECK_RESULT(); - flags = rte_le_to_cpu_32(resp->flags); - HWRM_UNLOCK(); - - if (flags & HWRM_CFA_ADV_FLOW_MGNT_QCAPS_L2_HDR_SRC_FILTER_EN) { - bp->flow_flags |= BNXT_FLOW_FLAG_L2_HDR_SRC_FILTER_EN; - PMD_DRV_LOG(INFO, "Source L2 header filtering enabled\n"); - } - - return rc; -} - int bnxt_hwrm_cfa_counter_qcaps(struct bnxt *bp, uint16_t *max_fc) { int rc = 0; diff --git a/drivers/net/bnxt/bnxt_hwrm.h b/drivers/net/bnxt/bnxt_hwrm.h index 9e0b799..1704edd 100644 --- a/drivers/net/bnxt/bnxt_hwrm.h +++ b/drivers/net/bnxt/bnxt_hwrm.h @@ -259,7 +259,6 @@ int bnxt_hwrm_error_recovery_qcfg(struct bnxt *bp); int bnxt_hwrm_fw_reset(struct bnxt *bp); int bnxt_hwrm_port_ts_query(struct bnxt *bp, uint8_t path, uint64_t *timestamp); -int bnxt_hwrm_cfa_adv_flow_mgmt_qcaps(struct bnxt *bp); int bnxt_hwrm_cfa_counter_qcaps(struct bnxt *bp, uint16_t *max_fc); int bnxt_hwrm_ctx_rgtr(struct bnxt *bp, rte_iova_t dma_addr, uint16_t *ctx_id); int bnxt_hwrm_ctx_unrgtr(struct bnxt *bp, uint16_t ctx_id); From patchwork Thu Jul 9 09:38:31 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kalesh A P X-Patchwork-Id: 73627 X-Patchwork-Delegate: ajit.khaparde@broadcom.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id A4862A0526; Thu, 9 Jul 2020 11:23:41 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 1CEF91E551; Thu, 9 Jul 2020 11:23:17 +0200 (CEST) Received: from relay.smtp.broadcom.com (relay.smtp.broadcom.com [192.19.232.149]) by dpdk.org (Postfix) with ESMTP id 69E981E535 for ; Thu, 9 Jul 2020 11:23:13 +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.broadcom.com (Postfix) with ESMTP id 8DF491BE21D; Thu, 9 Jul 2020 02:23:12 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.10.3 relay.smtp.broadcom.com 8DF491BE21D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1594286593; bh=0VGFglTPPCR8ArWBa3Cp6/eZJbSRwyOubZm1SrsqBYI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=P3zmaBhEXSy9DOfDEztA8HLrTJu+KL5mlKuJpQL0HNsqALs+wt1QL5gEAPJgnVioo O2g3LUVNbjn+OIWELj722TvONdcLfNzqSq4GOnQmtK5b6ElhOE3t1b+98IrYzcogZ4 TbrIryY7KJfC/alQax6fklwGTyLY8yIMRVx85R6A= From: Kalesh A P To: dev@dpdk.org Cc: ferruh.yigit@intel.com, ajit.khaparde@broadcom.com Date: Thu, 9 Jul 2020 15:08:31 +0530 Message-Id: <20200709093832.7616-5-kalesh-anakkur.purayil@broadcom.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20200709093832.7616-1-kalesh-anakkur.purayil@broadcom.com> References: <20200709093832.7616-1-kalesh-anakkur.purayil@broadcom.com> Subject: [dpdk-dev] [PATCH 4/5] net/bnxt: fix to set flow error when filter create fails X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Kalesh AP If set_em_filter/set_ntuple_filter cmds fails for some reason, driver is not filling the "rte_flow_error" string buffer. Same is the case when flow create fails due to an already existing mark id for the new flow id created. This leads to a crash in testpmd while trying to print the error message. Fixes: 5c1171c97216 ("net/bnxt: refactor filter/flow") Fixes: 9db66782bd06 ("net/bnxt: fix supporting zero mark ID with RSS action") Cc: stable@dpdk.org Signed-off-by: Kalesh AP Reviewed-by: Ajit Kumar Khaparde --- drivers/net/bnxt/bnxt_flow.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/drivers/net/bnxt/bnxt_flow.c b/drivers/net/bnxt/bnxt_flow.c index 19bc66a..499dcdf 100644 --- a/drivers/net/bnxt/bnxt_flow.c +++ b/drivers/net/bnxt/bnxt_flow.c @@ -1786,12 +1786,24 @@ bnxt_flow_create(struct rte_eth_dev *dev, filter->enables |= HWRM_CFA_EM_FLOW_ALLOC_INPUT_ENABLES_L2_FILTER_ID; ret = bnxt_hwrm_set_em_filter(bp, filter->dst_id, filter); + if (ret != 0) { + rte_flow_error_set(error, -ret, + RTE_FLOW_ERROR_TYPE_HANDLE, NULL, + "Failed to create EM filter"); + goto free_filter; + } } if (filter->filter_type == HWRM_CFA_NTUPLE_FILTER) { filter->enables |= HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_ENABLES_L2_FILTER_ID; ret = bnxt_hwrm_set_ntuple_filter(bp, filter->dst_id, filter); + if (ret != 0) { + rte_flow_error_set(error, -ret, + RTE_FLOW_ERROR_TYPE_HANDLE, NULL, + "Failed to create ntuple filter"); + goto free_filter; + } } vnic = find_matching_vnic(bp, filter); @@ -1817,10 +1829,10 @@ bnxt_flow_create(struct rte_eth_dev *dev, */ flow_id = filter->flow_id & BNXT_FLOW_ID_MASK; if (bp->mark_table[flow_id].valid) { - PMD_DRV_LOG(ERR, - "Entry for Mark id 0x%x occupied" - " flow id 0x%x\n", - filter->mark, filter->flow_id); + rte_flow_error_set(error, EEXIST, + RTE_FLOW_ERROR_TYPE_HANDLE, + NULL, + "Flow with mark id exists"); goto free_filter; } bp->mark_table[flow_id].valid = true; From patchwork Thu Jul 9 09:38:32 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kalesh A P X-Patchwork-Id: 73628 X-Patchwork-Delegate: ajit.khaparde@broadcom.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 8BC63A0526; Thu, 9 Jul 2020 11:23:51 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id A8B401E559; Thu, 9 Jul 2020 11:23:18 +0200 (CEST) Received: from relay.smtp.broadcom.com (unknown [192.19.232.149]) by dpdk.org (Postfix) with ESMTP id E40511E544 for ; Thu, 9 Jul 2020 11:23:14 +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.broadcom.com (Postfix) with ESMTP id 177D51BE227; Thu, 9 Jul 2020 02:23:13 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.10.3 relay.smtp.broadcom.com 177D51BE227 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1594286595; bh=1jVXY5lFU1qLc/j/Doyvl7f/9POuq2IywUGhf4sxlsk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=excBDCI7D8wb/PVjXBhva8+U4SxcP2xP31hp3HdiTHZDL74ymbEUt3aD5mNr9XWCy +hyadESxDcC3BrnbmxaVV8OOY/FGci9iwDmr8mf6Hs7aWgALMGe6zBkYm3ygWEKNHD drI+tUnuTKHJiJuMh+5iKtjNRX//3b62DxHy+xOU= From: Kalesh A P To: dev@dpdk.org Cc: ferruh.yigit@intel.com, ajit.khaparde@broadcom.com Date: Thu, 9 Jul 2020 15:08:32 +0530 Message-Id: <20200709093832.7616-6-kalesh-anakkur.purayil@broadcom.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20200709093832.7616-1-kalesh-anakkur.purayil@broadcom.com> References: <20200709093832.7616-1-kalesh-anakkur.purayil@broadcom.com> Subject: [dpdk-dev] [PATCH 5/5] net/bnxt: fix to free filters when flow create fails X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Kalesh AP This patch does following things: 1. Added a wrapper function bnxt_clear_one_vnic_filter() for destroying the filters in hw. This will avoid duplicate code in many places. 2. When flow creae fails due to an already existing mark id for the new flow id created, fixed to destroy the hw filter created. 3. Re-arranged code to move a log and list update to right place. Fixes: 9db66782bd06 ("net/bnxt: fix supporting zero mark ID with RSS action") Fixes: 5ef3b79fdfe6 ("net/bnxt: support flow filter ops") Cc: stable@dpdk.org Signed-off-by: Kalesh AP Reviewed-by: Somnath Kotur Reviewed-by: Ajit Kumar Khaparde --- drivers/net/bnxt/bnxt_flow.c | 15 +++++++-------- drivers/net/bnxt/bnxt_hwrm.c | 31 +++++++++++++++++++++---------- drivers/net/bnxt/bnxt_hwrm.h | 2 ++ 3 files changed, 30 insertions(+), 18 deletions(-) diff --git a/drivers/net/bnxt/bnxt_flow.c b/drivers/net/bnxt/bnxt_flow.c index 499dcdf..320b53d 100644 --- a/drivers/net/bnxt/bnxt_flow.c +++ b/drivers/net/bnxt/bnxt_flow.c @@ -1816,9 +1816,6 @@ bnxt_flow_create(struct rte_eth_dev *dev, goto free_flow; } - STAILQ_INSERT_TAIL(&vnic->filter, filter, next); - PMD_DRV_LOG(DEBUG, "Successfully created flow.\n"); - STAILQ_INSERT_TAIL(&vnic->flow_list, flow, next); if (filter->valid_flags & BNXT_FLOW_MARK_FLAG) { PMD_DRV_LOG(DEBUG, "Mark action: mark id 0x%x, flow id 0x%x\n", @@ -1833,15 +1830,21 @@ bnxt_flow_create(struct rte_eth_dev *dev, RTE_FLOW_ERROR_TYPE_HANDLE, NULL, "Flow with mark id exists"); + bnxt_clear_one_vnic_filter(bp, filter); goto free_filter; } bp->mark_table[flow_id].valid = true; bp->mark_table[flow_id].mark_id = filter->mark; } + + STAILQ_INSERT_TAIL(&vnic->filter, filter, next); + STAILQ_INSERT_TAIL(&vnic->flow_list, flow, next); + if (BNXT_FLOW_XSTATS_EN(bp)) bp->flow_stat->flow_count++; bnxt_release_flow_lock(bp); bnxt_setup_flow_counter(bp); + PMD_DRV_LOG(DEBUG, "Successfully created flow.\n"); return flow; } @@ -1940,11 +1943,7 @@ _bnxt_flow_destroy(struct bnxt *bp, filter->flow_id = 0; } - if (filter->filter_type == HWRM_CFA_EM_FILTER) - ret = bnxt_hwrm_clear_em_filter(bp, filter); - if (filter->filter_type == HWRM_CFA_NTUPLE_FILTER) - ret = bnxt_hwrm_clear_ntuple_filter(bp, filter); - ret = bnxt_hwrm_clear_l2_filter(bp, filter); + ret = bnxt_clear_one_vnic_filter(bp, filter); done: if (!ret) { diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c index f9c7461..7ea13a8 100644 --- a/drivers/net/bnxt/bnxt_hwrm.c +++ b/drivers/net/bnxt/bnxt_hwrm.c @@ -2613,6 +2613,25 @@ int bnxt_alloc_hwrm_resources(struct bnxt *bp) return 0; } +int +bnxt_clear_one_vnic_filter(struct bnxt *bp, struct bnxt_filter_info *filter) +{ + int rc = 0; + + if (filter->filter_type == HWRM_CFA_EM_FILTER) { + rc = bnxt_hwrm_clear_em_filter(bp, filter); + if (rc) + return rc; + } else if (filter->filter_type == HWRM_CFA_NTUPLE_FILTER) { + rc = bnxt_hwrm_clear_ntuple_filter(bp, filter); + if (rc) + return rc; + } + + rc = bnxt_hwrm_clear_l2_filter(bp, filter); + return rc; +} + static int bnxt_clear_hwrm_vnic_filters(struct bnxt *bp, struct bnxt_vnic_info *vnic) { @@ -2620,11 +2639,7 @@ bnxt_clear_hwrm_vnic_filters(struct bnxt *bp, struct bnxt_vnic_info *vnic) int rc = 0; STAILQ_FOREACH(filter, &vnic->filter, next) { - if (filter->filter_type == HWRM_CFA_EM_FILTER) - rc = bnxt_hwrm_clear_em_filter(bp, filter); - else if (filter->filter_type == HWRM_CFA_NTUPLE_FILTER) - rc = bnxt_hwrm_clear_ntuple_filter(bp, filter); - rc = bnxt_hwrm_clear_l2_filter(bp, filter); + rc = bnxt_clear_one_vnic_filter(bp, filter); STAILQ_REMOVE(&vnic->filter, filter, bnxt_filter_info, next); bnxt_free_filter(bp, filter); } @@ -2642,11 +2657,7 @@ bnxt_clear_hwrm_vnic_flows(struct bnxt *bp, struct bnxt_vnic_info *vnic) flow = STAILQ_FIRST(&vnic->flow_list); filter = flow->filter; PMD_DRV_LOG(DEBUG, "filter type %d\n", filter->filter_type); - if (filter->filter_type == HWRM_CFA_EM_FILTER) - rc = bnxt_hwrm_clear_em_filter(bp, filter); - else if (filter->filter_type == HWRM_CFA_NTUPLE_FILTER) - rc = bnxt_hwrm_clear_ntuple_filter(bp, filter); - rc = bnxt_hwrm_clear_l2_filter(bp, filter); + rc = bnxt_clear_one_vnic_filter(bp, filter); STAILQ_REMOVE(&vnic->flow_list, flow, rte_flow, next); rte_free(flow); diff --git a/drivers/net/bnxt/bnxt_hwrm.h b/drivers/net/bnxt/bnxt_hwrm.h index 1704edd..01201a7 100644 --- a/drivers/net/bnxt/bnxt_hwrm.h +++ b/drivers/net/bnxt/bnxt_hwrm.h @@ -276,4 +276,6 @@ int bnxt_hwrm_get_dflt_vnic_svif(struct bnxt *bp, uint16_t fid, int bnxt_hwrm_parent_pf_qcfg(struct bnxt *bp); int bnxt_hwrm_port_phy_qcaps(struct bnxt *bp); int bnxt_hwrm_oem_cmd(struct bnxt *bp, uint32_t entry_num); +int bnxt_clear_one_vnic_filter(struct bnxt *bp, + struct bnxt_filter_info *filter); #endif