From patchwork Fri Jun 12 13:29:11 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Somnath Kotur X-Patchwork-Id: 71419 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 8BEC6A00BE; Fri, 12 Jun 2020 15:46:28 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 33B8E1C19E; Fri, 12 Jun 2020 15:34:45 +0200 (CEST) Received: from relay.smtp.broadcom.com (unknown [192.19.232.149]) by dpdk.org (Postfix) with ESMTP id 40A371C11D for ; Fri, 12 Jun 2020 15:34:41 +0200 (CEST) Received: from dhcp-10-123-153-55.dhcp.broadcom.net (dhcp-10-123-153-55.dhcp.broadcom.net [10.123.153.55]) by relay.smtp.broadcom.com (Postfix) with ESMTP id 185951BD788; Fri, 12 Jun 2020 06:34:39 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.10.3 relay.smtp.broadcom.com 185951BD788 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1591968880; bh=/ilfk8gBA5GH0dvUkkEQvays9f/cpOMuyjcYdkMrONM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=BfT1EkNc+jKc72NFqV29QrvfirYIfya3+3FLdKnPleWswFRzCUinDUvioUOQ0b/MG f9DUP37bgro9dV2NwGUi9Nf7Vd7RTk5LgLxy5sYrWV426ydvhW+edLJkgysZkRwfS9 Pr1dsj0bUk8rO2GPj2jhHMtTPT0iJn/EWE3W36s0= From: Somnath Kotur To: dev@dpdk.org Cc: ferruh.yigit@intel.com Date: Fri, 12 Jun 2020 18:59:11 +0530 Message-Id: <20200612132934.16488-28-somnath.kotur@broadcom.com> X-Mailer: git-send-email 2.10.1.613.g2cc2e70 In-Reply-To: <20200612132934.16488-1-somnath.kotur@broadcom.com> References: <20200612132934.16488-1-somnath.kotur@broadcom.com> Subject: [dpdk-dev] [PATCH 27/50] net/bnxt: align CFA resources with RM 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: Randy Schacher - HCAPI resources need to align for Resource Manager - Clean up unnecessary debug messages Signed-off-by: Randy Schacher Reviewed-by: Randy Schacher Reviewed-by: Ajit Kumar Khaparde Signed-off-by: Venkat Duvvuru --- drivers/net/bnxt/tf_core/cfa_resource_types.h | 250 ++++++++++++++------------ drivers/net/bnxt/tf_core/tf_identifier.c | 3 +- drivers/net/bnxt/tf_core/tf_msg.c | 37 ++-- drivers/net/bnxt/tf_core/tf_rm.c | 21 +-- drivers/net/bnxt/tf_core/tf_tbl.c | 3 +- drivers/net/bnxt/tf_core/tf_tcam.c | 28 ++- 6 files changed, 197 insertions(+), 145 deletions(-) diff --git a/drivers/net/bnxt/tf_core/cfa_resource_types.h b/drivers/net/bnxt/tf_core/cfa_resource_types.h index 6e79fac..6d6651f 100644 --- a/drivers/net/bnxt/tf_core/cfa_resource_types.h +++ b/drivers/net/bnxt/tf_core/cfa_resource_types.h @@ -48,232 +48,246 @@ #define CFA_RESOURCE_TYPE_P59_TBL_SCOPE 0xdUL /* L2 Func */ #define CFA_RESOURCE_TYPE_P59_L2_FUNC 0xeUL -/* EPOCH */ -#define CFA_RESOURCE_TYPE_P59_EPOCH 0xfUL +/* EPOCH 0 */ +#define CFA_RESOURCE_TYPE_P59_EPOCH0 0xfUL +/* EPOCH 1 */ +#define CFA_RESOURCE_TYPE_P59_EPOCH1 0x10UL /* Metadata */ -#define CFA_RESOURCE_TYPE_P59_METADATA 0x10UL +#define CFA_RESOURCE_TYPE_P59_METADATA 0x11UL /* Connection Tracking Rule TCAM */ -#define CFA_RESOURCE_TYPE_P59_CT_RULE_TCAM 0x11UL +#define CFA_RESOURCE_TYPE_P59_CT_RULE_TCAM 0x12UL /* Range Profile */ -#define CFA_RESOURCE_TYPE_P59_RANGE_PROF 0x12UL +#define CFA_RESOURCE_TYPE_P59_RANGE_PROF 0x13UL /* Range */ -#define CFA_RESOURCE_TYPE_P59_RANGE 0x13UL +#define CFA_RESOURCE_TYPE_P59_RANGE 0x14UL /* Link Aggrigation */ -#define CFA_RESOURCE_TYPE_P59_LAG 0x14UL +#define CFA_RESOURCE_TYPE_P59_LAG 0x15UL /* VEB TCAM */ -#define CFA_RESOURCE_TYPE_P59_VEB_TCAM 0x15UL +#define CFA_RESOURCE_TYPE_P59_VEB_TCAM 0x16UL #define CFA_RESOURCE_TYPE_P59_LAST CFA_RESOURCE_TYPE_P59_VEB_TCAM /* Multicast Group */ -#define CFA_RESOURCE_TYPE_P58_MCG 0x0UL +#define CFA_RESOURCE_TYPE_P58_MCG 0x0UL /* Encap 8 byte record */ -#define CFA_RESOURCE_TYPE_P58_ENCAP_8B 0x1UL +#define CFA_RESOURCE_TYPE_P58_ENCAP_8B 0x1UL /* Encap 16 byte record */ -#define CFA_RESOURCE_TYPE_P58_ENCAP_16B 0x2UL +#define CFA_RESOURCE_TYPE_P58_ENCAP_16B 0x2UL /* Encap 64 byte record */ -#define CFA_RESOURCE_TYPE_P58_ENCAP_64B 0x3UL +#define CFA_RESOURCE_TYPE_P58_ENCAP_64B 0x3UL /* Source Property MAC */ -#define CFA_RESOURCE_TYPE_P58_SP_MAC 0x4UL +#define CFA_RESOURCE_TYPE_P58_SP_MAC 0x4UL /* Source Property MAC and IPv4 */ -#define CFA_RESOURCE_TYPE_P58_SP_MAC_IPV4 0x5UL +#define CFA_RESOURCE_TYPE_P58_SP_MAC_IPV4 0x5UL /* Source Property MAC and IPv6 */ -#define CFA_RESOURCE_TYPE_P58_SP_MAC_IPV6 0x6UL +#define CFA_RESOURCE_TYPE_P58_SP_MAC_IPV6 0x6UL /* Network Address Translation Source Port */ -#define CFA_RESOURCE_TYPE_P58_NAT_SPORT 0x7UL +#define CFA_RESOURCE_TYPE_P58_NAT_SPORT 0x7UL /* Network Address Translation Destination Port */ -#define CFA_RESOURCE_TYPE_P58_NAT_DPORT 0x8UL +#define CFA_RESOURCE_TYPE_P58_NAT_DPORT 0x8UL /* Network Address Translation Source IPv4 address */ -#define CFA_RESOURCE_TYPE_P58_NAT_S_IPV4 0x9UL +#define CFA_RESOURCE_TYPE_P58_NAT_S_IPV4 0x9UL /* Network Address Translation Destination IPv4 address */ -#define CFA_RESOURCE_TYPE_P58_NAT_D_IPV4 0xaUL -/* Network Address Translation Source IPv4 address */ -#define CFA_RESOURCE_TYPE_P58_NAT_S_IPV6 0xbUL -/* Network Address Translation Destination IPv4 address */ -#define CFA_RESOURCE_TYPE_P58_NAT_D_IPV6 0xcUL +#define CFA_RESOURCE_TYPE_P58_NAT_D_IPV4 0xaUL /* Meter */ -#define CFA_RESOURCE_TYPE_P58_METER 0xdUL +#define CFA_RESOURCE_TYPE_P58_METER 0xbUL /* Flow State */ -#define CFA_RESOURCE_TYPE_P58_FLOW_STATE 0xeUL +#define CFA_RESOURCE_TYPE_P58_FLOW_STATE 0xcUL /* Full Action Records */ -#define CFA_RESOURCE_TYPE_P58_FULL_ACTION 0xfUL +#define CFA_RESOURCE_TYPE_P58_FULL_ACTION 0xdUL /* Action Record Format 0 */ -#define CFA_RESOURCE_TYPE_P58_FORMAT_0_ACTION 0x10UL +#define CFA_RESOURCE_TYPE_P58_FORMAT_0_ACTION 0xeUL +/* Action Record Ext Format 0 */ +#define CFA_RESOURCE_TYPE_P58_EXT_FORMAT_0_ACTION 0xfUL +/* Action Record Format 1 */ +#define CFA_RESOURCE_TYPE_P58_FORMAT_1_ACTION 0x10UL /* Action Record Format 2 */ -#define CFA_RESOURCE_TYPE_P58_FORMAT_2_ACTION 0x11UL +#define CFA_RESOURCE_TYPE_P58_FORMAT_2_ACTION 0x11UL /* Action Record Format 3 */ -#define CFA_RESOURCE_TYPE_P58_FORMAT_3_ACTION 0x12UL +#define CFA_RESOURCE_TYPE_P58_FORMAT_3_ACTION 0x12UL /* Action Record Format 4 */ -#define CFA_RESOURCE_TYPE_P58_FORMAT_4_ACTION 0x13UL +#define CFA_RESOURCE_TYPE_P58_FORMAT_4_ACTION 0x13UL +/* Action Record Format 5 */ +#define CFA_RESOURCE_TYPE_P58_FORMAT_5_ACTION 0x14UL +/* Action Record Format 6 */ +#define CFA_RESOURCE_TYPE_P58_FORMAT_6_ACTION 0x15UL /* L2 Context TCAM */ -#define CFA_RESOURCE_TYPE_P58_L2_CTXT_TCAM 0x14UL +#define CFA_RESOURCE_TYPE_P58_L2_CTXT_TCAM 0x16UL /* L2 Context REMAP */ -#define CFA_RESOURCE_TYPE_P58_L2_CTXT_REMAP 0x15UL +#define CFA_RESOURCE_TYPE_P58_L2_CTXT_REMAP 0x17UL /* Profile Func */ -#define CFA_RESOURCE_TYPE_P58_PROF_FUNC 0x16UL +#define CFA_RESOURCE_TYPE_P58_PROF_FUNC 0x18UL /* Profile TCAM */ -#define CFA_RESOURCE_TYPE_P58_PROF_TCAM 0x17UL +#define CFA_RESOURCE_TYPE_P58_PROF_TCAM 0x19UL /* Exact Match Profile Id */ -#define CFA_RESOURCE_TYPE_P58_EM_PROF_ID 0x18UL +#define CFA_RESOURCE_TYPE_P58_EM_PROF_ID 0x1aUL /* Wildcard Profile Id */ -#define CFA_RESOURCE_TYPE_P58_WC_TCAM_PROF_ID 0x19UL +#define CFA_RESOURCE_TYPE_P58_WC_TCAM_PROF_ID 0x1bUL /* Exact Match Record */ -#define CFA_RESOURCE_TYPE_P58_EM_REC 0x1aUL +#define CFA_RESOURCE_TYPE_P58_EM_REC 0x1cUL /* Wildcard TCAM */ -#define CFA_RESOURCE_TYPE_P58_WC_TCAM 0x1bUL +#define CFA_RESOURCE_TYPE_P58_WC_TCAM 0x1dUL /* Meter profile */ -#define CFA_RESOURCE_TYPE_P58_METER_PROF 0x1cUL +#define CFA_RESOURCE_TYPE_P58_METER_PROF 0x1eUL /* Meter */ -#define CFA_RESOURCE_TYPE_P58_MIRROR 0x1dUL +#define CFA_RESOURCE_TYPE_P58_MIRROR 0x1fUL /* Source Property TCAM */ -#define CFA_RESOURCE_TYPE_P58_SP_TCAM 0x1eUL +#define CFA_RESOURCE_TYPE_P58_SP_TCAM 0x20UL /* Exact Match Flexible Key Builder */ -#define CFA_RESOURCE_TYPE_P58_EM_FKB 0x1fUL +#define CFA_RESOURCE_TYPE_P58_EM_FKB 0x21UL /* Wildcard Flexible Key Builder */ -#define CFA_RESOURCE_TYPE_P58_WC_FKB 0x20UL +#define CFA_RESOURCE_TYPE_P58_WC_FKB 0x22UL /* VEB TCAM */ -#define CFA_RESOURCE_TYPE_P58_VEB_TCAM 0x21UL -#define CFA_RESOURCE_TYPE_P58_LAST CFA_RESOURCE_TYPE_P58_VEB_TCAM +#define CFA_RESOURCE_TYPE_P58_VEB_TCAM 0x23UL +#define CFA_RESOURCE_TYPE_P58_LAST CFA_RESOURCE_TYPE_P58_VEB_TCAM /* Multicast Group */ -#define CFA_RESOURCE_TYPE_P45_MCG 0x0UL +#define CFA_RESOURCE_TYPE_P45_MCG 0x0UL /* Encap 8 byte record */ -#define CFA_RESOURCE_TYPE_P45_ENCAP_8B 0x1UL +#define CFA_RESOURCE_TYPE_P45_ENCAP_8B 0x1UL /* Encap 16 byte record */ -#define CFA_RESOURCE_TYPE_P45_ENCAP_16B 0x2UL +#define CFA_RESOURCE_TYPE_P45_ENCAP_16B 0x2UL /* Encap 64 byte record */ -#define CFA_RESOURCE_TYPE_P45_ENCAP_64B 0x3UL +#define CFA_RESOURCE_TYPE_P45_ENCAP_64B 0x3UL /* Source Property MAC */ -#define CFA_RESOURCE_TYPE_P45_SP_MAC 0x4UL +#define CFA_RESOURCE_TYPE_P45_SP_MAC 0x4UL /* Source Property MAC and IPv4 */ -#define CFA_RESOURCE_TYPE_P45_SP_MAC_IPV4 0x5UL +#define CFA_RESOURCE_TYPE_P45_SP_MAC_IPV4 0x5UL /* Source Property MAC and IPv6 */ -#define CFA_RESOURCE_TYPE_P45_SP_MAC_IPV6 0x6UL +#define CFA_RESOURCE_TYPE_P45_SP_MAC_IPV6 0x6UL /* 64B Counters */ -#define CFA_RESOURCE_TYPE_P45_COUNTER_64B 0x7UL +#define CFA_RESOURCE_TYPE_P45_COUNTER_64B 0x7UL /* Network Address Translation Source Port */ -#define CFA_RESOURCE_TYPE_P45_NAT_SPORT 0x8UL +#define CFA_RESOURCE_TYPE_P45_NAT_SPORT 0x8UL /* Network Address Translation Destination Port */ -#define CFA_RESOURCE_TYPE_P45_NAT_DPORT 0x9UL +#define CFA_RESOURCE_TYPE_P45_NAT_DPORT 0x9UL /* Network Address Translation Source IPv4 address */ -#define CFA_RESOURCE_TYPE_P45_NAT_S_IPV4 0xaUL +#define CFA_RESOURCE_TYPE_P45_NAT_S_IPV4 0xaUL /* Network Address Translation Destination IPv4 address */ -#define CFA_RESOURCE_TYPE_P45_NAT_D_IPV4 0xbUL -/* Network Address Translation Source IPv6 address */ -#define CFA_RESOURCE_TYPE_P45_NAT_S_IPV6 0xcUL -/* Network Address Translation Destination IPv6 address */ -#define CFA_RESOURCE_TYPE_P45_NAT_D_IPV6 0xdUL +#define CFA_RESOURCE_TYPE_P45_NAT_D_IPV4 0xbUL /* Meter */ -#define CFA_RESOURCE_TYPE_P45_METER 0xeUL +#define CFA_RESOURCE_TYPE_P45_METER 0xcUL /* Flow State */ -#define CFA_RESOURCE_TYPE_P45_FLOW_STATE 0xfUL +#define CFA_RESOURCE_TYPE_P45_FLOW_STATE 0xdUL /* Full Action Records */ -#define CFA_RESOURCE_TYPE_P45_FULL_ACTION 0x10UL +#define CFA_RESOURCE_TYPE_P45_FULL_ACTION 0xeUL /* Action Record Format 0 */ -#define CFA_RESOURCE_TYPE_P45_FORMAT_0_ACTION 0x11UL +#define CFA_RESOURCE_TYPE_P45_FORMAT_0_ACTION 0xfUL +/* Action Record Ext Format 0 */ +#define CFA_RESOURCE_TYPE_P45_EXT_FORMAT_0_ACTION 0x10UL +/* Action Record Format 1 */ +#define CFA_RESOURCE_TYPE_P45_FORMAT_1_ACTION 0x11UL /* Action Record Format 2 */ -#define CFA_RESOURCE_TYPE_P45_FORMAT_2_ACTION 0x12UL +#define CFA_RESOURCE_TYPE_P45_FORMAT_2_ACTION 0x12UL /* Action Record Format 3 */ -#define CFA_RESOURCE_TYPE_P45_FORMAT_3_ACTION 0x13UL +#define CFA_RESOURCE_TYPE_P45_FORMAT_3_ACTION 0x13UL /* Action Record Format 4 */ -#define CFA_RESOURCE_TYPE_P45_FORMAT_4_ACTION 0x14UL +#define CFA_RESOURCE_TYPE_P45_FORMAT_4_ACTION 0x14UL +/* Action Record Format 5 */ +#define CFA_RESOURCE_TYPE_P45_FORMAT_5_ACTION 0x15UL +/* Action Record Format 6 */ +#define CFA_RESOURCE_TYPE_P45_FORMAT_6_ACTION 0x16UL /* L2 Context TCAM */ -#define CFA_RESOURCE_TYPE_P45_L2_CTXT_TCAM 0x15UL +#define CFA_RESOURCE_TYPE_P45_L2_CTXT_TCAM 0x17UL /* L2 Context REMAP */ -#define CFA_RESOURCE_TYPE_P45_L2_CTXT_REMAP 0x16UL +#define CFA_RESOURCE_TYPE_P45_L2_CTXT_REMAP 0x18UL /* Profile Func */ -#define CFA_RESOURCE_TYPE_P45_PROF_FUNC 0x17UL +#define CFA_RESOURCE_TYPE_P45_PROF_FUNC 0x19UL /* Profile TCAM */ -#define CFA_RESOURCE_TYPE_P45_PROF_TCAM 0x18UL +#define CFA_RESOURCE_TYPE_P45_PROF_TCAM 0x1aUL /* Exact Match Profile Id */ -#define CFA_RESOURCE_TYPE_P45_EM_PROF_ID 0x19UL +#define CFA_RESOURCE_TYPE_P45_EM_PROF_ID 0x1bUL /* Exact Match Record */ -#define CFA_RESOURCE_TYPE_P45_EM_REC 0x1aUL +#define CFA_RESOURCE_TYPE_P45_EM_REC 0x1cUL /* Wildcard Profile Id */ -#define CFA_RESOURCE_TYPE_P45_WC_TCAM_PROF_ID 0x1bUL +#define CFA_RESOURCE_TYPE_P45_WC_TCAM_PROF_ID 0x1dUL /* Wildcard TCAM */ -#define CFA_RESOURCE_TYPE_P45_WC_TCAM 0x1cUL +#define CFA_RESOURCE_TYPE_P45_WC_TCAM 0x1eUL /* Meter profile */ -#define CFA_RESOURCE_TYPE_P45_METER_PROF 0x1dUL +#define CFA_RESOURCE_TYPE_P45_METER_PROF 0x1fUL /* Meter */ -#define CFA_RESOURCE_TYPE_P45_MIRROR 0x1eUL +#define CFA_RESOURCE_TYPE_P45_MIRROR 0x20UL /* Source Property TCAM */ -#define CFA_RESOURCE_TYPE_P45_SP_TCAM 0x1fUL +#define CFA_RESOURCE_TYPE_P45_SP_TCAM 0x21UL /* VEB TCAM */ -#define CFA_RESOURCE_TYPE_P45_VEB_TCAM 0x20UL +#define CFA_RESOURCE_TYPE_P45_VEB_TCAM 0x22UL /* Table Scope */ -#define CFA_RESOURCE_TYPE_P45_TBL_SCOPE 0x21UL -#define CFA_RESOURCE_TYPE_P45_LAST CFA_RESOURCE_TYPE_P45_TBL_SCOPE +#define CFA_RESOURCE_TYPE_P45_TBL_SCOPE 0x23UL +#define CFA_RESOURCE_TYPE_P45_LAST CFA_RESOURCE_TYPE_P45_TBL_SCOPE /* Multicast Group */ -#define CFA_RESOURCE_TYPE_P4_MCG 0x0UL +#define CFA_RESOURCE_TYPE_P4_MCG 0x0UL /* Encap 8 byte record */ -#define CFA_RESOURCE_TYPE_P4_ENCAP_8B 0x1UL +#define CFA_RESOURCE_TYPE_P4_ENCAP_8B 0x1UL /* Encap 16 byte record */ -#define CFA_RESOURCE_TYPE_P4_ENCAP_16B 0x2UL +#define CFA_RESOURCE_TYPE_P4_ENCAP_16B 0x2UL /* Encap 64 byte record */ -#define CFA_RESOURCE_TYPE_P4_ENCAP_64B 0x3UL +#define CFA_RESOURCE_TYPE_P4_ENCAP_64B 0x3UL /* Source Property MAC */ -#define CFA_RESOURCE_TYPE_P4_SP_MAC 0x4UL +#define CFA_RESOURCE_TYPE_P4_SP_MAC 0x4UL /* Source Property MAC and IPv4 */ -#define CFA_RESOURCE_TYPE_P4_SP_MAC_IPV4 0x5UL +#define CFA_RESOURCE_TYPE_P4_SP_MAC_IPV4 0x5UL /* Source Property MAC and IPv6 */ -#define CFA_RESOURCE_TYPE_P4_SP_MAC_IPV6 0x6UL +#define CFA_RESOURCE_TYPE_P4_SP_MAC_IPV6 0x6UL /* 64B Counters */ -#define CFA_RESOURCE_TYPE_P4_COUNTER_64B 0x7UL +#define CFA_RESOURCE_TYPE_P4_COUNTER_64B 0x7UL /* Network Address Translation Source Port */ -#define CFA_RESOURCE_TYPE_P4_NAT_SPORT 0x8UL +#define CFA_RESOURCE_TYPE_P4_NAT_SPORT 0x8UL /* Network Address Translation Destination Port */ -#define CFA_RESOURCE_TYPE_P4_NAT_DPORT 0x9UL +#define CFA_RESOURCE_TYPE_P4_NAT_DPORT 0x9UL /* Network Address Translation Source IPv4 address */ -#define CFA_RESOURCE_TYPE_P4_NAT_S_IPV4 0xaUL +#define CFA_RESOURCE_TYPE_P4_NAT_S_IPV4 0xaUL /* Network Address Translation Destination IPv4 address */ -#define CFA_RESOURCE_TYPE_P4_NAT_D_IPV4 0xbUL -/* Network Address Translation Source IPv6 address */ -#define CFA_RESOURCE_TYPE_P4_NAT_S_IPV6 0xcUL -/* Network Address Translation Destination IPv6 address */ -#define CFA_RESOURCE_TYPE_P4_NAT_D_IPV6 0xdUL +#define CFA_RESOURCE_TYPE_P4_NAT_D_IPV4 0xbUL /* Meter */ -#define CFA_RESOURCE_TYPE_P4_METER 0xeUL +#define CFA_RESOURCE_TYPE_P4_METER 0xcUL /* Flow State */ -#define CFA_RESOURCE_TYPE_P4_FLOW_STATE 0xfUL +#define CFA_RESOURCE_TYPE_P4_FLOW_STATE 0xdUL /* Full Action Records */ -#define CFA_RESOURCE_TYPE_P4_FULL_ACTION 0x10UL +#define CFA_RESOURCE_TYPE_P4_FULL_ACTION 0xeUL /* Action Record Format 0 */ -#define CFA_RESOURCE_TYPE_P4_FORMAT_0_ACTION 0x11UL +#define CFA_RESOURCE_TYPE_P4_FORMAT_0_ACTION 0xfUL +/* Action Record Ext Format 0 */ +#define CFA_RESOURCE_TYPE_P4_EXT_FORMAT_0_ACTION 0x10UL +/* Action Record Format 1 */ +#define CFA_RESOURCE_TYPE_P4_FORMAT_1_ACTION 0x11UL /* Action Record Format 2 */ -#define CFA_RESOURCE_TYPE_P4_FORMAT_2_ACTION 0x12UL +#define CFA_RESOURCE_TYPE_P4_FORMAT_2_ACTION 0x12UL /* Action Record Format 3 */ -#define CFA_RESOURCE_TYPE_P4_FORMAT_3_ACTION 0x13UL +#define CFA_RESOURCE_TYPE_P4_FORMAT_3_ACTION 0x13UL /* Action Record Format 4 */ -#define CFA_RESOURCE_TYPE_P4_FORMAT_4_ACTION 0x14UL +#define CFA_RESOURCE_TYPE_P4_FORMAT_4_ACTION 0x14UL +/* Action Record Format 5 */ +#define CFA_RESOURCE_TYPE_P4_FORMAT_5_ACTION 0x15UL +/* Action Record Format 6 */ +#define CFA_RESOURCE_TYPE_P4_FORMAT_6_ACTION 0x16UL /* L2 Context TCAM */ -#define CFA_RESOURCE_TYPE_P4_L2_CTXT_TCAM 0x15UL +#define CFA_RESOURCE_TYPE_P4_L2_CTXT_TCAM 0x17UL /* L2 Context REMAP */ -#define CFA_RESOURCE_TYPE_P4_L2_CTXT_REMAP 0x16UL +#define CFA_RESOURCE_TYPE_P4_L2_CTXT_REMAP 0x18UL /* Profile Func */ -#define CFA_RESOURCE_TYPE_P4_PROF_FUNC 0x17UL +#define CFA_RESOURCE_TYPE_P4_PROF_FUNC 0x19UL /* Profile TCAM */ -#define CFA_RESOURCE_TYPE_P4_PROF_TCAM 0x18UL +#define CFA_RESOURCE_TYPE_P4_PROF_TCAM 0x1aUL /* Exact Match Profile Id */ -#define CFA_RESOURCE_TYPE_P4_EM_PROF_ID 0x19UL +#define CFA_RESOURCE_TYPE_P4_EM_PROF_ID 0x1bUL /* Exact Match Record */ -#define CFA_RESOURCE_TYPE_P4_EM_REC 0x1aUL +#define CFA_RESOURCE_TYPE_P4_EM_REC 0x1cUL /* Wildcard Profile Id */ -#define CFA_RESOURCE_TYPE_P4_WC_TCAM_PROF_ID 0x1bUL +#define CFA_RESOURCE_TYPE_P4_WC_TCAM_PROF_ID 0x1dUL /* Wildcard TCAM */ -#define CFA_RESOURCE_TYPE_P4_WC_TCAM 0x1cUL +#define CFA_RESOURCE_TYPE_P4_WC_TCAM 0x1eUL /* Meter profile */ -#define CFA_RESOURCE_TYPE_P4_METER_PROF 0x1dUL +#define CFA_RESOURCE_TYPE_P4_METER_PROF 0x1fUL /* Meter */ -#define CFA_RESOURCE_TYPE_P4_MIRROR 0x1eUL +#define CFA_RESOURCE_TYPE_P4_MIRROR 0x20UL /* Source Property TCAM */ -#define CFA_RESOURCE_TYPE_P4_SP_TCAM 0x1fUL +#define CFA_RESOURCE_TYPE_P4_SP_TCAM 0x21UL /* Table Scope */ -#define CFA_RESOURCE_TYPE_P4_TBL_SCOPE 0x20UL -#define CFA_RESOURCE_TYPE_P4_LAST CFA_RESOURCE_TYPE_P4_TBL_SCOPE +#define CFA_RESOURCE_TYPE_P4_TBL_SCOPE 0x22UL +#define CFA_RESOURCE_TYPE_P4_LAST CFA_RESOURCE_TYPE_P4_TBL_SCOPE #endif /* _CFA_RESOURCE_TYPES_H_ */ diff --git a/drivers/net/bnxt/tf_core/tf_identifier.c b/drivers/net/bnxt/tf_core/tf_identifier.c index 2198392..2cc43b4 100644 --- a/drivers/net/bnxt/tf_core/tf_identifier.c +++ b/drivers/net/bnxt/tf_core/tf_identifier.c @@ -59,7 +59,8 @@ tf_ident_bind(struct tf *tfp, init = 1; - printf("Identifier - initialized\n"); + TFP_DRV_LOG(INFO, + "Identifier - initialized\n"); return 0; } diff --git a/drivers/net/bnxt/tf_core/tf_msg.c b/drivers/net/bnxt/tf_core/tf_msg.c index 7fffb6b..659065d 100644 --- a/drivers/net/bnxt/tf_core/tf_msg.c +++ b/drivers/net/bnxt/tf_core/tf_msg.c @@ -18,6 +18,9 @@ #include "hwrm_tf.h" #include "tf_em.h" +/* Logging defines */ +#define TF_RM_MSG_DEBUG 0 + /** * This is the MAX data we can transport across regular HWRM */ @@ -215,7 +218,7 @@ tf_msg_session_resc_qcaps(struct tf *tfp, rc = tfp_send_msg_direct(tfp, &parms); if (rc) - return rc; + goto cleanup; /* Process the response * Should always get expected number of entries @@ -225,31 +228,39 @@ tf_msg_session_resc_qcaps(struct tf *tfp, "%s: QCAPS message size error, rc:%s\n", tf_dir_2_str(dir), strerror(-EINVAL)); - return -EINVAL; + rc = -EINVAL; + goto cleanup; } +#if (TF_RM_MSG_DEBUG == 1) printf("size: %d\n", tfp_le_to_cpu_32(resp.size)); +#endif /* (TF_RM_MSG_DEBUG == 1) */ /* Post process the response */ data = (struct tf_rm_resc_req_entry *)qcaps_buf.va_addr; +#if (TF_RM_MSG_DEBUG == 1) printf("\nQCAPS\n"); +#endif /* (TF_RM_MSG_DEBUG == 1) */ for (i = 0; i < size; i++) { query[i].type = tfp_le_to_cpu_32(data[i].type); query[i].min = tfp_le_to_cpu_16(data[i].min); query[i].max = tfp_le_to_cpu_16(data[i].max); +#if (TF_RM_MSG_DEBUG == 1) printf("type: %d(0x%x) %d %d\n", query[i].type, query[i].type, query[i].min, query[i].max); +#endif /* (TF_RM_MSG_DEBUG == 1) */ } *resv_strategy = resp.flags & HWRM_TF_SESSION_RESC_QCAPS_OUTPUT_FLAGS_SESS_RESV_STRATEGY_MASK; +cleanup: tf_msg_free_dma_buf(&qcaps_buf); return rc; @@ -293,8 +304,10 @@ tf_msg_session_resc_alloc(struct tf *tfp, dma_size = size * sizeof(struct tf_rm_resc_entry); rc = tf_msg_alloc_dma_buf(&resv_buf, dma_size); - if (rc) + if (rc) { + tf_msg_free_dma_buf(&req_buf); return rc; + } /* Populate the request */ req.fw_session_id = tfp_cpu_to_le_32(fw_session_id); @@ -320,7 +333,7 @@ tf_msg_session_resc_alloc(struct tf *tfp, rc = tfp_send_msg_direct(tfp, &parms); if (rc) - return rc; + goto cleanup; /* Process the response * Should always get expected number of entries @@ -330,11 +343,14 @@ tf_msg_session_resc_alloc(struct tf *tfp, "%s: Alloc message size error, rc:%s\n", tf_dir_2_str(dir), strerror(-EINVAL)); - return -EINVAL; + rc = -EINVAL; + goto cleanup; } +#if (TF_RM_MSG_DEBUG == 1) printf("\nRESV\n"); printf("size: %d\n", tfp_le_to_cpu_32(resp.size)); +#endif /* (TF_RM_MSG_DEBUG == 1) */ /* Post process the response */ resv_data = (struct tf_rm_resc_entry *)resv_buf.va_addr; @@ -343,14 +359,17 @@ tf_msg_session_resc_alloc(struct tf *tfp, resv[i].start = tfp_le_to_cpu_16(resv_data[i].start); resv[i].stride = tfp_le_to_cpu_16(resv_data[i].stride); +#if (TF_RM_MSG_DEBUG == 1) printf("%d type: %d(0x%x) %d %d\n", i, resv[i].type, resv[i].type, resv[i].start, resv[i].stride); +#endif /* (TF_RM_MSG_DEBUG == 1) */ } +cleanup: tf_msg_free_dma_buf(&req_buf); tf_msg_free_dma_buf(&resv_buf); @@ -412,8 +431,6 @@ tf_msg_session_resc_flush(struct tf *tfp, parms.mailbox = TF_KONG_MB; rc = tfp_send_msg_direct(tfp, &parms); - if (rc) - return rc; tf_msg_free_dma_buf(&resv_buf); @@ -434,7 +451,7 @@ tf_msg_insert_em_internal_entry(struct tf *tfp, struct tf_session *tfs = (struct tf_session *)(tfp->session->core_data); struct tf_em_64b_entry *em_result = (struct tf_em_64b_entry *)em_parms->em_record; - uint32_t flags; + uint16_t flags; req.fw_session_id = tfp_cpu_to_le_32(tfs->session_id.internal.fw_session_id); @@ -480,7 +497,7 @@ tf_msg_delete_em_entry(struct tf *tfp, struct tfp_send_msg_parms parms = { 0 }; struct hwrm_tf_em_delete_input req = { 0 }; struct hwrm_tf_em_delete_output resp = { 0 }; - uint32_t flags; + uint16_t flags; struct tf_session *tfs = (struct tf_session *)(tfp->session->core_data); @@ -726,8 +743,6 @@ tf_msg_tcam_entry_set(struct tf *tfp, rc = tfp_send_msg_direct(tfp, &mparms); - if (rc) - goto cleanup; cleanup: tf_msg_free_dma_buf(&buf); diff --git a/drivers/net/bnxt/tf_core/tf_rm.c b/drivers/net/bnxt/tf_core/tf_rm.c index e7af9eb..30313e2 100644 --- a/drivers/net/bnxt/tf_core/tf_rm.c +++ b/drivers/net/bnxt/tf_core/tf_rm.c @@ -17,6 +17,9 @@ #include "tfp.h" #include "tf_msg.h" +/* Logging defines */ +#define TF_RM_DEBUG 0 + /** * Generic RM Element data type that an RM DB is build upon. */ @@ -120,16 +123,11 @@ tf_rm_count_hcapi_reservations(enum tf_dir dir, cfg[i].cfg_type == TF_RM_ELEM_CFG_NULL && reservations[i] > 0) { TFP_DRV_LOG(ERR, - "%s, %s, %s allocation not supported\n", - tf_device_module_type_2_str(type), - tf_dir_2_str(dir), - tf_device_module_type_subtype_2_str(type, i)); - printf("%s, %s, %s allocation of %d not supported\n", + "%s, %s, %s allocation of %d not supported\n", tf_device_module_type_2_str(type), tf_dir_2_str(dir), - tf_device_module_type_subtype_2_str(type, i), - reservations[i]); - + tf_device_module_type_subtype_2_str(type, i), + reservations[i]); } } @@ -549,11 +547,6 @@ tf_rm_create_db(struct tf *tfp, db[i].alloc.entry.start = resv[j].start; db[i].alloc.entry.stride = resv[j].stride; - printf("Entry:%d Start:%d Stride:%d\n", - i, - resv[j].start, - resv[j].stride); - /* Only allocate BA pool if so requested */ if (parms->cfg[i].cfg_type == TF_RM_ELEM_CFG_HCAPI_BA) { /* Create pool */ @@ -603,10 +596,12 @@ tf_rm_create_db(struct tf *tfp, rm_db->type = parms->type; *parms->rm_db = (void *)rm_db; +#if (TF_RM_DEBUG == 1) printf("%s: type:%d num_entries:%d\n", tf_dir_2_str(parms->dir), parms->type, i); +#endif /* (TF_RM_DEBUG == 1) */ tfp_free((void *)req); tfp_free((void *)resv); diff --git a/drivers/net/bnxt/tf_core/tf_tbl.c b/drivers/net/bnxt/tf_core/tf_tbl.c index 9b1b20f..a864b16 100644 --- a/drivers/net/bnxt/tf_core/tf_tbl.c +++ b/drivers/net/bnxt/tf_core/tf_tbl.c @@ -71,7 +71,8 @@ tf_tbl_bind(struct tf *tfp, init = 1; - printf("Table Type - initialized\n"); + TFP_DRV_LOG(INFO, + "Table Type - initialized\n"); return 0; } diff --git a/drivers/net/bnxt/tf_core/tf_tcam.c b/drivers/net/bnxt/tf_core/tf_tcam.c index b1092cd..1c48b53 100644 --- a/drivers/net/bnxt/tf_core/tf_tcam.c +++ b/drivers/net/bnxt/tf_core/tf_tcam.c @@ -81,7 +81,8 @@ tf_tcam_bind(struct tf *tfp, init = 1; - printf("TCAM - initialized\n"); + TFP_DRV_LOG(INFO, + "TCAM - initialized\n"); return 0; } @@ -275,6 +276,31 @@ tf_tcam_free(struct tf *tfp, return rc; } + if (parms->type == TF_TCAM_TBL_TYPE_WC_TCAM) { + int i; + + for (i = -1; i < 3; i += 3) { + aparms.index += i; + rc = tf_rm_is_allocated(&aparms); + if (rc) + return rc; + + if (allocated == TF_RM_ALLOCATED_ENTRY_IN_USE) { + /* Free requested element */ + fparms.index = aparms.index; + rc = tf_rm_free(&fparms); + if (rc) { + TFP_DRV_LOG(ERR, + "%s: Free failed, type:%d, index:%d\n", + tf_dir_2_str(parms->dir), + parms->type, + fparms.index); + return rc; + } + } + } + } + /* Convert TF type to HCAPI RM type */ hparms.rm_db = tcam_db[parms->dir]; hparms.db_index = parms->type;