From: Ajit Khaparde <ajit.khaparde@broadcom.com>
To: dev@dpdk.org
Cc: Farah Smith <farah.smith@broadcom.com>,
Peter Spreadborough <peter.spreadborough@broadcom.com>,
Randy Schacher <stuart.schacher@broadcom.com>,
Venkat Duvvuru <venkatkumar.duvvuru@broadcom.com>
Subject: [dpdk-dev] [PATCH v2 02/58] net/bnxt: add base TRUFLOW support for Thor
Date: Sat, 12 Jun 2021 17:05:56 -0700 [thread overview]
Message-ID: <20210613000652.28191-3-ajit.khaparde@broadcom.com> (raw)
In-Reply-To: <20210613000652.28191-1-ajit.khaparde@broadcom.com>
[-- Attachment #1: Type: text/plain, Size: 28549 bytes --]
From: Farah Smith <farah.smith@broadcom.com>
Add infrastructure code to support TRUFLOW on Thor NICs.
Also update meson.build
Signed-off-by: Farah Smith <farah.smith@broadcom.com>
Signed-off-by: Peter Spreadborough <peter.spreadborough@broadcom.com>
Signed-off-by: Randy Schacher <stuart.schacher@broadcom.com>
Signed-off-by: Venkat Duvvuru <venkatkumar.duvvuru@broadcom.com>
Acked-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
---
drivers/net/bnxt/tf_core/cfa_resource_types.h | 1 -
drivers/net/bnxt/tf_core/meson.build | 1 +
drivers/net/bnxt/tf_core/tf_core.c | 1 +
drivers/net/bnxt/tf_core/tf_device.c | 207 +++++++++++++
drivers/net/bnxt/tf_core/tf_device.h | 24 ++
drivers/net/bnxt/tf_core/tf_device_p4.c | 111 ++++++-
drivers/net/bnxt/tf_core/tf_device_p4.h | 3 +-
drivers/net/bnxt/tf_core/tf_device_p58.c | 284 ++++++++++++++++++
drivers/net/bnxt/tf_core/tf_device_p58.h | 79 +++++
drivers/net/bnxt/tf_core/tf_em_common.c | 4 +-
drivers/net/bnxt/tf_core/tf_msg.c | 33 --
drivers/net/bnxt/tf_core/tf_rm.c | 8 +-
drivers/net/bnxt/tf_core/tf_shadow_tcam.c | 4 +-
13 files changed, 711 insertions(+), 49 deletions(-)
create mode 100644 drivers/net/bnxt/tf_core/tf_device_p58.c
create mode 100644 drivers/net/bnxt/tf_core/tf_device_p58.h
diff --git a/drivers/net/bnxt/tf_core/cfa_resource_types.h b/drivers/net/bnxt/tf_core/cfa_resource_types.h
index f55a98a388..b63b87bcf3 100644
--- a/drivers/net/bnxt/tf_core/cfa_resource_types.h
+++ b/drivers/net/bnxt/tf_core/cfa_resource_types.h
@@ -254,5 +254,4 @@
#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/meson.build b/drivers/net/bnxt/tf_core/meson.build
index b23e0fbe70..d7e8f664fd 100644
--- a/drivers/net/bnxt/tf_core/meson.build
+++ b/drivers/net/bnxt/tf_core/meson.build
@@ -20,6 +20,7 @@ sources += files(
'tf_session.c',
'tf_device.c',
'tf_device_p4.c',
+ 'tf_device_p58.c',
'tf_identifier.c',
'tf_shadow_tbl.c',
'tf_shadow_tcam.c',
diff --git a/drivers/net/bnxt/tf_core/tf_core.c b/drivers/net/bnxt/tf_core/tf_core.c
index feec3cf459..b1ce4e721c 100644
--- a/drivers/net/bnxt/tf_core/tf_core.c
+++ b/drivers/net/bnxt/tf_core/tf_core.c
@@ -35,6 +35,7 @@ tf_open_session(struct tf *tfp,
* firmware open session succeeds.
*/
if (parms->device_type != TF_DEVICE_TYPE_WH &&
+ parms->device_type != TF_DEVICE_TYPE_THOR &&
parms->device_type != TF_DEVICE_TYPE_SR) {
TFP_DRV_LOG(ERR,
"Unsupported device type %d\n",
diff --git a/drivers/net/bnxt/tf_core/tf_device.c b/drivers/net/bnxt/tf_core/tf_device.c
index f68eb723fe..9c63f6d5d4 100644
--- a/drivers/net/bnxt/tf_core/tf_device.c
+++ b/drivers/net/bnxt/tf_core/tf_device.c
@@ -5,6 +5,7 @@
#include "tf_device.h"
#include "tf_device_p4.h"
+#include "tf_device_p58.h"
#include "tfp.h"
#include "tf_em.h"
@@ -12,6 +13,7 @@ struct tf;
/* Forward declarations */
static int tf_dev_unbind_p4(struct tf *tfp);
+static int tf_dev_unbind_p58(struct tf *tfp);
/**
* Device specific bind function, WH+
@@ -234,6 +236,203 @@ tf_dev_unbind_p4(struct tf *tfp)
return rc;
}
+/**
+ * Device specific bind function, THOR
+ *
+ * [in] tfp
+ * Pointer to TF handle
+ *
+ * [in] shadow_copy
+ * Flag controlling shadow copy DB creation
+ *
+ * [in] resources
+ * Pointer to resource allocation information
+ *
+ * [out] dev_handle
+ * Device handle
+ *
+ * Returns
+ * - (0) if successful.
+ * - (-EINVAL) on parameter or internal failure.
+ */
+static int
+tf_dev_bind_p58(struct tf *tfp,
+ bool shadow_copy,
+ struct tf_session_resources *resources,
+ struct tf_dev_info *dev_handle)
+{
+ int rc;
+ int frc;
+ struct tf_ident_cfg_parms ident_cfg;
+ struct tf_tbl_cfg_parms tbl_cfg;
+ struct tf_tcam_cfg_parms tcam_cfg;
+ struct tf_em_cfg_parms em_cfg;
+ struct tf_if_tbl_cfg_parms if_tbl_cfg;
+ struct tf_global_cfg_cfg_parms global_cfg;
+
+ /* Initial function initialization */
+ dev_handle->ops = &tf_dev_ops_p58_init;
+
+ /* Initialize the modules */
+
+ ident_cfg.num_elements = TF_IDENT_TYPE_MAX;
+ ident_cfg.cfg = tf_ident_p58;
+ ident_cfg.shadow_copy = shadow_copy;
+ ident_cfg.resources = resources;
+ rc = tf_ident_bind(tfp, &ident_cfg);
+ if (rc) {
+ TFP_DRV_LOG(ERR,
+ "Identifier initialization failure\n");
+ goto fail;
+ }
+
+ tbl_cfg.num_elements = TF_TBL_TYPE_MAX;
+ tbl_cfg.cfg = tf_tbl_p58;
+ tbl_cfg.shadow_copy = shadow_copy;
+ tbl_cfg.resources = resources;
+ rc = tf_tbl_bind(tfp, &tbl_cfg);
+ if (rc) {
+ TFP_DRV_LOG(ERR,
+ "Table initialization failure\n");
+ goto fail;
+ }
+
+ tcam_cfg.num_elements = TF_TCAM_TBL_TYPE_MAX;
+ tcam_cfg.cfg = tf_tcam_p58;
+ tcam_cfg.shadow_copy = shadow_copy;
+ tcam_cfg.resources = resources;
+ rc = tf_tcam_bind(tfp, &tcam_cfg);
+ if (rc) {
+ TFP_DRV_LOG(ERR,
+ "TCAM initialization failure\n");
+ goto fail;
+ }
+
+ /*
+ * EM
+ */
+ em_cfg.num_elements = TF_EM_TBL_TYPE_MAX;
+ em_cfg.cfg = tf_em_int_p58;
+ em_cfg.resources = resources;
+ em_cfg.mem_type = 0; /* Not used by EM */
+
+ rc = tf_em_int_bind(tfp, &em_cfg);
+ if (rc) {
+ TFP_DRV_LOG(ERR,
+ "EM initialization failure\n");
+ goto fail;
+ }
+
+ /*
+ * IF_TBL
+ */
+ if_tbl_cfg.num_elements = TF_IF_TBL_TYPE_MAX;
+ if_tbl_cfg.cfg = tf_if_tbl_p58;
+ if_tbl_cfg.shadow_copy = shadow_copy;
+ rc = tf_if_tbl_bind(tfp, &if_tbl_cfg);
+ if (rc) {
+ TFP_DRV_LOG(ERR,
+ "IF Table initialization failure\n");
+ goto fail;
+ }
+
+ /*
+ * GLOBAL_CFG
+ */
+ global_cfg.num_elements = TF_GLOBAL_CFG_TYPE_MAX;
+ global_cfg.cfg = tf_global_cfg_p58;
+ rc = tf_global_cfg_bind(tfp, &global_cfg);
+ if (rc) {
+ TFP_DRV_LOG(ERR,
+ "Global Cfg initialization failure\n");
+ goto fail;
+ }
+
+ /* Final function initialization */
+ dev_handle->ops = &tf_dev_ops_p58;
+
+ return 0;
+
+ fail:
+ /* Cleanup of already created modules */
+ frc = tf_dev_unbind_p58(tfp);
+ if (frc)
+ return frc;
+
+ return rc;
+}
+
+/**
+ * Device specific unbind function, THOR
+ *
+ * [in] tfp
+ * Pointer to TF handle
+ *
+ * Returns
+ * - (0) if successful.
+ * - (-EINVAL) on failure.
+ */
+static int
+ tf_dev_unbind_p58(struct tf *tfp)
+{
+ int rc = 0;
+ bool fail = false;
+
+ /* Unbind all the support modules. As this is only done on
+ * close we only report errors as everything has to be cleaned
+ * up regardless.
+ *
+ * In case of residuals TCAMs are cleaned up first as to
+ * invalidate the pipeline in a clean manner.
+ */
+ rc = tf_tcam_unbind(tfp);
+ if (rc) {
+ TFP_DRV_LOG(ERR,
+ "Device unbind failed, TCAM\n");
+ fail = true;
+ }
+
+ rc = tf_ident_unbind(tfp);
+ if (rc) {
+ TFP_DRV_LOG(ERR,
+ "Device unbind failed, Identifier\n");
+ fail = true;
+ }
+
+ rc = tf_tbl_unbind(tfp);
+ if (rc) {
+ TFP_DRV_LOG(ERR,
+ "Device unbind failed, Table Type\n");
+ fail = true;
+ }
+
+ rc = tf_em_int_unbind(tfp);
+ if (rc) {
+ TFP_DRV_LOG(ERR,
+ "Device unbind failed, EM\n");
+ fail = true;
+ }
+
+ rc = tf_if_tbl_unbind(tfp);
+ if (rc) {
+ TFP_DRV_LOG(ERR,
+ "Device unbind failed, IF Table Type\n");
+ fail = true;
+ }
+
+ rc = tf_global_cfg_unbind(tfp);
+ if (rc) {
+ TFP_DRV_LOG(ERR,
+ "Device unbind failed, Global Cfg Type\n");
+ fail = true;
+ }
+
+ if (fail)
+ return -1;
+
+ return rc;
+}
+
int
tf_dev_bind(struct tf *tfp __rte_unused,
enum tf_device_type type,
@@ -249,6 +448,12 @@ tf_dev_bind(struct tf *tfp __rte_unused,
shadow_copy,
resources,
dev_handle);
+ case TF_DEVICE_TYPE_THOR:
+ dev_handle->type = type;
+ return tf_dev_bind_p58(tfp,
+ shadow_copy,
+ resources,
+ dev_handle);
default:
TFP_DRV_LOG(ERR,
"No such device\n");
@@ -264,6 +469,8 @@ tf_dev_unbind(struct tf *tfp,
case TF_DEVICE_TYPE_WH:
case TF_DEVICE_TYPE_SR:
return tf_dev_unbind_p4(tfp);
+ case TF_DEVICE_TYPE_THOR:
+ return tf_dev_unbind_p58(tfp);
default:
TFP_DRV_LOG(ERR,
"No such device\n");
diff --git a/drivers/net/bnxt/tf_core/tf_device.h b/drivers/net/bnxt/tf_core/tf_device.h
index d0c4ec80d0..d5ef72309f 100644
--- a/drivers/net/bnxt/tf_core/tf_device.h
+++ b/drivers/net/bnxt/tf_core/tf_device.h
@@ -134,6 +134,28 @@ struct tf_dev_ops {
int (*tf_dev_get_max_types)(struct tf *tfp,
uint16_t *max_types);
+ /**
+ * Retrieves the string description for the CFA resource
+ * type
+ *
+ * [in] tfp
+ * Pointer to TF handle
+ *
+ * [in] resource_id
+ * HCAPI cfa resource type id
+ *
+ * [out] resource_str
+ * Pointer to a string
+ *
+ * Returns
+ * - (0) if successful.
+ * - (-EINVAL) on failure.
+ */
+ int (*tf_dev_get_resource_str)(struct tf *tfp,
+ uint16_t resource_id,
+ const char **resource_str);
+
+
/**
* Retrieves the WC TCAM slice information that the device
* supports.
@@ -709,5 +731,7 @@ struct tf_dev_ops {
*/
extern const struct tf_dev_ops tf_dev_ops_p4_init;
extern const struct tf_dev_ops tf_dev_ops_p4;
+extern const struct tf_dev_ops tf_dev_ops_p58_init;
+extern const struct tf_dev_ops tf_dev_ops_p58;
#endif /* _TF_DEVICE_H_ */
diff --git a/drivers/net/bnxt/tf_core/tf_device_p4.c b/drivers/net/bnxt/tf_core/tf_device_p4.c
index 17d2f05bcc..257a0fb2d0 100644
--- a/drivers/net/bnxt/tf_core/tf_device_p4.c
+++ b/drivers/net/bnxt/tf_core/tf_device_p4.c
@@ -4,8 +4,8 @@
*/
#include <rte_common.h>
-#include <cfa_resource_types.h>
+#include "cfa_resource_types.h"
#include "tf_device.h"
#include "tf_identifier.h"
#include "tf_tbl.h"
@@ -17,6 +17,79 @@
#define TF_DEV_P4_PARIF_MAX 16
#define TF_DEV_P4_PF_MASK 0xfUL
+const char *tf_resource_str_p4[CFA_RESOURCE_TYPE_P4_LAST + 1] = {
+ /* CFA_RESOURCE_TYPE_P4_MCG */
+ "mc_group",
+ /* CFA_RESOURCE_TYPE_P4_ENCAP_8B */
+ "encap_8 ",
+ /* CFA_RESOURCE_TYPE_P4_ENCAP_16B */
+ "encap_16",
+ /* CFA_RESOURCE_TYPE_P4_ENCAP_64B */
+ "encap_64",
+ /* CFA_RESOURCE_TYPE_P4_SP_MAC */
+ "sp_mac ",
+ /* CFA_RESOURCE_TYPE_P4_SP_MAC_IPV4 */
+ "sp_macv4",
+ /* CFA_RESOURCE_TYPE_P4_SP_MAC_IPV6 */
+ "sp_macv6",
+ /* CFA_RESOURCE_TYPE_P4_COUNTER_64B */
+ "ctr_64b ",
+ /* CFA_RESOURCE_TYPE_P4_NAT_PORT */
+ "nat_port",
+ /* CFA_RESOURCE_TYPE_P4_NAT_IPV4 */
+ "nat_ipv4",
+ /* CFA_RESOURCE_TYPE_P4_METER */
+ "meter ",
+ /* CFA_RESOURCE_TYPE_P4_FLOW_STATE */
+ "flow_st ",
+ /* CFA_RESOURCE_TYPE_P4_FULL_ACTION */
+ "full_act",
+ /* CFA_RESOURCE_TYPE_P4_FORMAT_0_ACTION */
+ "fmt0_act",
+ /* CFA_RESOURCE_TYPE_P4_EXT_FORMAT_0_ACTION */
+ "ext0_act",
+ /* CFA_RESOURCE_TYPE_P4_FORMAT_1_ACTION */
+ "fmt1_act",
+ /* CFA_RESOURCE_TYPE_P4_FORMAT_2_ACTION */
+ "fmt2_act",
+ /* CFA_RESOURCE_TYPE_P4_FORMAT_3_ACTION */
+ "fmt3_act",
+ /* CFA_RESOURCE_TYPE_P4_FORMAT_4_ACTION */
+ "fmt4_act",
+ /* CFA_RESOURCE_TYPE_P4_FORMAT_5_ACTION */
+ "fmt5_act",
+ /* CFA_RESOURCE_TYPE_P4_FORMAT_6_ACTION */
+ "fmt6_act",
+ /* CFA_RESOURCE_TYPE_P4_L2_CTXT_TCAM_HIGH */
+ "l2ctx_hi",
+ /* CFA_RESOURCE_TYPE_P4_L2_CTXT_TCAM_LOW */
+ "l2ctx_lo",
+ /* CFA_RESOURCE_TYPE_P4_L2_CTXT_REMAP_HIGH */
+ "l2ctr_hi",
+ /* CFA_RESOURCE_TYPE_P4_L2_CTXT_REMAP_LOW */
+ "l2ctr_lo",
+ /* CFA_RESOURCE_TYPE_P4_PROF_FUNC */
+ "prf_func",
+ /* CFA_RESOURCE_TYPE_P4_PROF_TCAM */
+ "prf_tcam",
+ /* CFA_RESOURCE_TYPE_P4_EM_PROF_ID */
+ "em_prof ",
+ /* CFA_RESOURCE_TYPE_P4_EM_REC */
+ "em_rec ",
+ /* CFA_RESOURCE_TYPE_P4_WC_TCAM_PROF_ID */
+ "wc_prof ",
+ /* CFA_RESOURCE_TYPE_P4_WC_TCAM */
+ "wc_tcam ",
+ /* CFA_RESOURCE_TYPE_P4_METER_PROF */
+ "mtr_prof",
+ /* CFA_RESOURCE_TYPE_P4_MIRROR */
+ "mirror ",
+ /* CFA_RESOURCE_TYPE_P4_SP_TCAM */
+ "sp_tcam ",
+ /* CFA_RESOURCE_TYPE_P4_TBL_SCOPE */
+ "tb_scope",
+};
+
/**
* Device specific function that retrieves the MAX number of HCAPI
* types the device supports.
@@ -25,7 +98,7 @@
* Pointer to TF handle
*
* [out] max_types
- * Pointer to the MAX number of HCAPI types supported
+ * Pointer to the MAX number of CFA resource types supported
*
* Returns
* - (0) if successful.
@@ -61,6 +134,38 @@ tf_dev_p4_get_max_types(struct tf *tfp,
return 0;
}
+/**
+ * Device specific function that retrieves a human readable
+ * string to identify a CFA resource type.
+ *
+ * [in] tfp
+ * Pointer to TF handle
+ *
+ * [in] resource_id
+ * HCAPI CFA resource id
+ *
+ * [out] resource_str
+ * Resource string
+ *
+ * Returns
+ * - (0) if successful.
+ * - (-EINVAL) on failure.
+ */
+static int
+tf_dev_p4_get_resource_str(struct tf *tfp __rte_unused,
+ uint16_t resource_id,
+ const char **resource_str)
+{
+ if (resource_str == NULL)
+ return -EINVAL;
+
+ if (resource_id > CFA_RESOURCE_TYPE_P4_LAST)
+ return -EINVAL;
+
+ *resource_str = tf_resource_str_p4[resource_id];
+
+ return 0;
+}
/**
* Device specific function that retrieves the WC TCAM slices the
@@ -142,6 +247,7 @@ tf_dev_p4_map_parif(struct tf *tfp __rte_unused,
*/
const struct tf_dev_ops tf_dev_ops_p4_init = {
.tf_dev_get_max_types = tf_dev_p4_get_max_types,
+ .tf_dev_get_resource_str = tf_dev_p4_get_resource_str,
.tf_dev_get_tcam_slice_info = tf_dev_p4_get_tcam_slice_info,
.tf_dev_alloc_ident = NULL,
.tf_dev_free_ident = NULL,
@@ -179,6 +285,7 @@ const struct tf_dev_ops tf_dev_ops_p4_init = {
*/
const struct tf_dev_ops tf_dev_ops_p4 = {
.tf_dev_get_max_types = tf_dev_p4_get_max_types,
+ .tf_dev_get_resource_str = tf_dev_p4_get_resource_str,
.tf_dev_get_tcam_slice_info = tf_dev_p4_get_tcam_slice_info,
.tf_dev_alloc_ident = tf_ident_alloc,
.tf_dev_free_ident = tf_ident_free,
diff --git a/drivers/net/bnxt/tf_core/tf_device_p4.h b/drivers/net/bnxt/tf_core/tf_device_p4.h
index 81ed2322d1..bfad02a0b8 100644
--- a/drivers/net/bnxt/tf_core/tf_device_p4.h
+++ b/drivers/net/bnxt/tf_core/tf_device_p4.h
@@ -6,8 +6,7 @@
#ifndef _TF_DEVICE_P4_H_
#define _TF_DEVICE_P4_H_
-#include <cfa_resource_types.h>
-
+#include "cfa_resource_types.h"
#include "tf_core.h"
#include "tf_rm.h"
#include "tf_if_tbl.h"
diff --git a/drivers/net/bnxt/tf_core/tf_device_p58.c b/drivers/net/bnxt/tf_core/tf_device_p58.c
new file mode 100644
index 0000000000..fb5ad29a5c
--- /dev/null
+++ b/drivers/net/bnxt/tf_core/tf_device_p58.c
@@ -0,0 +1,284 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2019-2021 Broadcom
+ * All rights reserved.
+ */
+
+#include <rte_common.h>
+
+#include "cfa_resource_types.h"
+#include "tf_device.h"
+#include "tf_identifier.h"
+#include "tf_tbl.h"
+#include "tf_tcam.h"
+#include "tf_em.h"
+#include "tf_if_tbl.h"
+#include "tfp.h"
+
+#define TF_DEV_P58_PARIF_MAX 16
+#define TF_DEV_P58_PF_MASK 0xfUL
+
+const char *tf_resource_str_p58[CFA_RESOURCE_TYPE_P58_LAST + 1] = {
+ /* CFA_RESOURCE_TYPE_P58_METER */
+ "meter ",
+ /* CFA_RESOURCE_TYPE_P58_SRAM_BANK_0 */
+ "sram_bk0",
+ /* CFA_RESOURCE_TYPE_P58_SRAM_BANK_1 */
+ "sram_bk1",
+ /* CFA_RESOURCE_TYPE_P58_SRAM_BANK_2 */
+ "sram_bk2",
+ /* CFA_RESOURCE_TYPE_P58_SRAM_BANK_3 */
+ "sram_bk3",
+ /* CFA_RESOURCE_TYPE_P58_L2_CTXT_TCAM_HIGH */
+ "l2ctx_hi",
+ /* CFA_RESOURCE_TYPE_P58_L2_CTXT_TCAM_LOW */
+ "l2ctx_lo",
+ /* CFA_RESOURCE_TYPE_P58_L2_CTXT_REMAP_HIGH */
+ "l2ctr_hi",
+ /* CFA_RESOURCE_TYPE_P58_L2_CTXT_REMAP_LOW */
+ "l2ctr_lo",
+ /* CFA_RESOURCE_TYPE_P58_PROF_FUNC */
+ "prf_func",
+ /* CFA_RESOURCE_TYPE_P58_PROF_TCAM */
+ "prf_tcam",
+ /* CFA_RESOURCE_TYPE_P58_EM_PROF_ID */
+ "em_prof ",
+ /* CFA_RESOURCE_TYPE_P58_WC_TCAM_PROF_ID */
+ "wc_prof ",
+ /* CFA_RESOURCE_TYPE_P58_EM_REC */
+ "em_rec ",
+ /* CFA_RESOURCE_TYPE_P58_WC_TCAM */
+ "wc_tcam ",
+ /* CFA_RESOURCE_TYPE_P58_METER_PROF */
+ "mtr_prof",
+ /* CFA_RESOURCE_TYPE_P58_MIRROR */
+ "mirror ",
+ /* CFA_RESOURCE_TYPE_P58_EM_FKB */
+ "em_fkb ",
+ /* CFA_RESOURCE_TYPE_P58_WC_FKB */
+ "wc_fkb ",
+ /* CFA_RESOURCE_TYPE_P58_VEB_TCAM */
+ "veb ",
+};
+
+/**
+ * Device specific function that retrieves the MAX number of HCAPI
+ * types the device supports.
+ *
+ * [in] tfp
+ * Pointer to TF handle
+ *
+ * [out] max_types
+ * Pointer to the MAX number of HCAPI types supported
+ *
+ * Returns
+ * - (0) if successful.
+ * - (-EINVAL) on failure.
+ */
+static int
+tf_dev_p58_get_max_types(struct tf *tfp,
+ uint16_t *max_types)
+{
+ struct tf_session *tfs;
+ struct tf_dev_info *dev;
+ int rc;
+
+ if (max_types == NULL || tfp == NULL)
+ return -EINVAL;
+
+ /* Retrieve the session information */
+ rc = tf_session_get_session(tfp, &tfs);
+ if (rc)
+ return rc;
+
+ /* Retrieve the device information */
+ rc = tf_session_get_device(tfs, &dev);
+ if (rc)
+ return rc;
+
+ *max_types = CFA_RESOURCE_TYPE_P58_LAST + 1;
+
+ return 0;
+}
+/**
+ * Device specific function that retrieves a human readable
+ * string to identify a CFA resource type.
+ *
+ * [in] tfp
+ * Pointer to TF handle
+ *
+ * [in] resource_id
+ * HCAPI CFA resource id
+ *
+ * [out] resource_str
+ * Resource string
+ *
+ * Returns
+ * - (0) if successful.
+ * - (-EINVAL) on failure.
+ */
+static int
+tf_dev_p58_get_resource_str(struct tf *tfp __rte_unused,
+ uint16_t resource_id,
+ const char **resource_str)
+{
+ if (resource_str == NULL)
+ return -EINVAL;
+
+ if (resource_id > CFA_RESOURCE_TYPE_P58_LAST)
+ return -EINVAL;
+
+ *resource_str = tf_resource_str_p58[resource_id];
+
+ return 0;
+}
+
+/**
+ * Device specific function that retrieves the WC TCAM slices the
+ * device supports.
+ *
+ * [in] tfp
+ * Pointer to TF handle
+ *
+ * [out] slice_size
+ * Pointer to the WC TCAM slice size
+ *
+ * [out] num_slices_per_row
+ * Pointer to the WC TCAM row slice configuration
+ *
+ * Returns
+ * - (0) if successful.
+ * - (-EINVAL) on failure.
+ */
+static int
+tf_dev_p58_get_tcam_slice_info(struct tf *tfp __rte_unused,
+ enum tf_tcam_tbl_type type,
+ uint16_t key_sz,
+ uint16_t *num_slices_per_row)
+{
+#define CFA_P58_WC_TCAM_SLICES_PER_ROW 2
+#define CFA_P58_WC_TCAM_SLICE_SIZE 12
+
+ if (type == TF_TCAM_TBL_TYPE_WC_TCAM) {
+ *num_slices_per_row = CFA_P58_WC_TCAM_SLICES_PER_ROW;
+ if (key_sz > *num_slices_per_row * CFA_P58_WC_TCAM_SLICE_SIZE)
+ return -ENOTSUP;
+
+ *num_slices_per_row = 1;
+ } else { /* for other type of tcam */
+ *num_slices_per_row = 1;
+ }
+
+ return 0;
+}
+
+static int
+tf_dev_p58_map_parif(struct tf *tfp __rte_unused,
+ uint16_t parif_bitmask,
+ uint16_t pf,
+ uint8_t *data,
+ uint8_t *mask,
+ uint16_t sz_in_bytes)
+{
+ uint32_t parif_pf[2] = { 0 };
+ uint32_t parif_pf_mask[2] = { 0 };
+ uint32_t parif;
+ uint32_t shift;
+
+ if (sz_in_bytes != sizeof(uint64_t))
+ return -ENOTSUP;
+
+ for (parif = 0; parif < TF_DEV_P58_PARIF_MAX; parif++) {
+ if (parif_bitmask & (1UL << parif)) {
+ if (parif < 8) {
+ shift = 4 * parif;
+ parif_pf_mask[0] |= TF_DEV_P58_PF_MASK << shift;
+ parif_pf[0] |= pf << shift;
+ } else {
+ shift = 4 * (parif - 8);
+ parif_pf_mask[1] |= TF_DEV_P58_PF_MASK << shift;
+ parif_pf[1] |= pf << shift;
+ }
+ }
+ }
+ tfp_memcpy(data, parif_pf, sz_in_bytes);
+ tfp_memcpy(mask, parif_pf_mask, sz_in_bytes);
+
+ return 0;
+}
+
+
+/**
+ * Truflow P58 device specific functions
+ */
+const struct tf_dev_ops tf_dev_ops_p58_init = {
+ .tf_dev_get_max_types = tf_dev_p58_get_max_types,
+ .tf_dev_get_resource_str = tf_dev_p58_get_resource_str,
+ .tf_dev_get_tcam_slice_info = tf_dev_p58_get_tcam_slice_info,
+ .tf_dev_alloc_ident = NULL,
+ .tf_dev_free_ident = NULL,
+ .tf_dev_search_ident = NULL,
+ .tf_dev_alloc_ext_tbl = NULL,
+ .tf_dev_alloc_tbl = NULL,
+ .tf_dev_free_ext_tbl = NULL,
+ .tf_dev_free_tbl = NULL,
+ .tf_dev_alloc_search_tbl = NULL,
+ .tf_dev_set_tbl = NULL,
+ .tf_dev_set_ext_tbl = NULL,
+ .tf_dev_get_tbl = NULL,
+ .tf_dev_get_bulk_tbl = NULL,
+ .tf_dev_alloc_tcam = NULL,
+ .tf_dev_free_tcam = NULL,
+ .tf_dev_alloc_search_tcam = NULL,
+ .tf_dev_set_tcam = NULL,
+ .tf_dev_get_tcam = NULL,
+ .tf_dev_insert_int_em_entry = NULL,
+ .tf_dev_delete_int_em_entry = NULL,
+ .tf_dev_insert_ext_em_entry = NULL,
+ .tf_dev_delete_ext_em_entry = NULL,
+ .tf_dev_alloc_tbl_scope = NULL,
+ .tf_dev_map_tbl_scope = NULL,
+ .tf_dev_map_parif = NULL,
+ .tf_dev_free_tbl_scope = NULL,
+ .tf_dev_set_if_tbl = NULL,
+ .tf_dev_get_if_tbl = NULL,
+ .tf_dev_set_global_cfg = NULL,
+ .tf_dev_get_global_cfg = NULL,
+};
+
+/**
+ * Truflow P58 device specific functions
+ */
+const struct tf_dev_ops tf_dev_ops_p58 = {
+ .tf_dev_get_max_types = tf_dev_p58_get_max_types,
+ .tf_dev_get_resource_str = tf_dev_p58_get_resource_str,
+ .tf_dev_get_tcam_slice_info = tf_dev_p58_get_tcam_slice_info,
+ .tf_dev_alloc_ident = tf_ident_alloc,
+ .tf_dev_free_ident = tf_ident_free,
+ .tf_dev_search_ident = tf_ident_search,
+ .tf_dev_alloc_tbl = tf_tbl_alloc,
+ .tf_dev_alloc_ext_tbl = tf_tbl_ext_alloc,
+ .tf_dev_free_tbl = tf_tbl_free,
+ .tf_dev_free_ext_tbl = tf_tbl_ext_free,
+ .tf_dev_alloc_search_tbl = tf_tbl_alloc_search,
+ .tf_dev_set_tbl = tf_tbl_set,
+ .tf_dev_set_ext_tbl = tf_tbl_ext_common_set,
+ .tf_dev_get_tbl = tf_tbl_get,
+ .tf_dev_get_bulk_tbl = tf_tbl_bulk_get,
+ .tf_dev_alloc_tcam = tf_tcam_alloc,
+ .tf_dev_free_tcam = tf_tcam_free,
+ .tf_dev_alloc_search_tcam = tf_tcam_alloc_search,
+ .tf_dev_set_tcam = tf_tcam_set,
+ .tf_dev_get_tcam = NULL,
+ .tf_dev_insert_int_em_entry = tf_em_insert_int_entry,
+ .tf_dev_delete_int_em_entry = tf_em_delete_int_entry,
+ .tf_dev_insert_ext_em_entry = tf_em_insert_ext_entry,
+ .tf_dev_delete_ext_em_entry = tf_em_delete_ext_entry,
+ .tf_dev_alloc_tbl_scope = tf_em_ext_common_alloc,
+ .tf_dev_map_tbl_scope = tf_em_ext_map_tbl_scope,
+ .tf_dev_map_parif = tf_dev_p58_map_parif,
+ .tf_dev_free_tbl_scope = tf_em_ext_common_free,
+ .tf_dev_set_if_tbl = tf_if_tbl_set,
+ .tf_dev_get_if_tbl = tf_if_tbl_get,
+ .tf_dev_set_global_cfg = tf_global_cfg_set,
+ .tf_dev_get_global_cfg = tf_global_cfg_get,
+};
diff --git a/drivers/net/bnxt/tf_core/tf_device_p58.h b/drivers/net/bnxt/tf_core/tf_device_p58.h
new file mode 100644
index 0000000000..3d6e3240bf
--- /dev/null
+++ b/drivers/net/bnxt/tf_core/tf_device_p58.h
@@ -0,0 +1,79 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2019-2021 Broadcom
+ * All rights reserved.
+ */
+
+#ifndef _TF_DEVICE_P58_H_
+#define _TF_DEVICE_P58_H_
+
+#include "cfa_resource_types.h"
+#include "tf_core.h"
+#include "tf_rm.h"
+#include "tf_if_tbl.h"
+#include "tf_global_cfg.h"
+
+struct tf_rm_element_cfg tf_ident_p58[TF_IDENT_TYPE_MAX] = {
+ [TF_IDENT_TYPE_L2_CTXT_HIGH] = {
+ TF_RM_ELEM_CFG_HCAPI_BA, CFA_RESOURCE_TYPE_P58_L2_CTXT_REMAP_HIGH
+ },
+ [TF_IDENT_TYPE_L2_CTXT_LOW] = {
+ TF_RM_ELEM_CFG_HCAPI_BA, CFA_RESOURCE_TYPE_P58_L2_CTXT_REMAP_LOW
+ },
+ [TF_IDENT_TYPE_PROF_FUNC] = {
+ TF_RM_ELEM_CFG_HCAPI_BA, CFA_RESOURCE_TYPE_P58_PROF_FUNC
+ },
+ [TF_IDENT_TYPE_WC_PROF] = {
+ TF_RM_ELEM_CFG_HCAPI_BA, CFA_RESOURCE_TYPE_P58_WC_TCAM_PROF_ID
+ },
+ [TF_IDENT_TYPE_EM_PROF] = {
+ TF_RM_ELEM_CFG_HCAPI_BA, CFA_RESOURCE_TYPE_P58_EM_PROF_ID
+ },
+};
+
+struct tf_rm_element_cfg tf_tcam_p58[TF_TCAM_TBL_TYPE_MAX] = {
+ [TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_HIGH] = {
+ TF_RM_ELEM_CFG_HCAPI_BA, CFA_RESOURCE_TYPE_P58_L2_CTXT_TCAM_HIGH
+ },
+ [TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_LOW] = {
+ TF_RM_ELEM_CFG_HCAPI_BA, CFA_RESOURCE_TYPE_P58_L2_CTXT_TCAM_LOW
+ },
+ [TF_TCAM_TBL_TYPE_PROF_TCAM] = {
+ TF_RM_ELEM_CFG_HCAPI_BA, CFA_RESOURCE_TYPE_P58_PROF_TCAM
+ },
+ [TF_TCAM_TBL_TYPE_WC_TCAM] = {
+ TF_RM_ELEM_CFG_HCAPI_BA, CFA_RESOURCE_TYPE_P58_WC_TCAM
+ },
+ [TF_TCAM_TBL_TYPE_VEB_TCAM] = {
+ TF_RM_ELEM_CFG_HCAPI_BA, CFA_RESOURCE_TYPE_P58_VEB_TCAM
+ },
+};
+
+struct tf_rm_element_cfg tf_tbl_p58[TF_TBL_TYPE_MAX] = {
+ [TF_TBL_TYPE_METER_PROF] = {
+ TF_RM_ELEM_CFG_HCAPI_BA, CFA_RESOURCE_TYPE_P58_METER_PROF
+ },
+ [TF_TBL_TYPE_METER_INST] = {
+ TF_RM_ELEM_CFG_HCAPI_BA, CFA_RESOURCE_TYPE_P58_METER
+ },
+ [TF_TBL_TYPE_MIRROR_CONFIG] = {
+ TF_RM_ELEM_CFG_HCAPI_BA, CFA_RESOURCE_TYPE_P58_MIRROR
+ },
+};
+
+struct tf_rm_element_cfg tf_em_int_p58[TF_EM_TBL_TYPE_MAX] = {
+ [TF_EM_TBL_TYPE_EM_RECORD] = {
+ TF_RM_ELEM_CFG_HCAPI, CFA_RESOURCE_TYPE_P58_EM_REC
+ },
+};
+
+struct tf_if_tbl_cfg tf_if_tbl_p58[TF_IF_TBL_TYPE_MAX];
+
+struct tf_global_cfg_cfg tf_global_cfg_p58[TF_GLOBAL_CFG_TYPE_MAX] = {
+ [TF_TUNNEL_ENCAP] = {
+ TF_GLOBAL_CFG_CFG_HCAPI, TF_TUNNEL_ENCAP
+ },
+ [TF_ACTION_BLOCK] = {
+ TF_GLOBAL_CFG_CFG_HCAPI, TF_ACTION_BLOCK
+ },
+};
+#endif /* _TF_DEVICE_P58_H_ */
diff --git a/drivers/net/bnxt/tf_core/tf_em_common.c b/drivers/net/bnxt/tf_core/tf_em_common.c
index c4137af2bd..ddc6b3c4dd 100644
--- a/drivers/net/bnxt/tf_core/tf_em_common.c
+++ b/drivers/net/bnxt/tf_core/tf_em_common.c
@@ -1115,8 +1115,8 @@ int tf_em_ext_map_tbl_scope(struct tf *tfp,
goto cleaner;
}
- gcfg_parms.type =
- (enum tf_global_config_type)TF_GLOBAL_CFG_INTERNAL_PARIF_2_PF;
+ /* Note that TF_GLOBAL_CFG_INTERNAL_PARIF_2_PF is same as below enum */
+ gcfg_parms.type = TF_GLOBAL_CFG_TYPE_MAX;
gcfg_parms.offset = 0;
gcfg_parms.config = (uint8_t *)data;
gcfg_parms.config_mask = (uint8_t *)mask;
diff --git a/drivers/net/bnxt/tf_core/tf_msg.c b/drivers/net/bnxt/tf_core/tf_msg.c
index 46fc6288b2..f20a5113bf 100644
--- a/drivers/net/bnxt/tf_core/tf_msg.c
+++ b/drivers/net/bnxt/tf_core/tf_msg.c
@@ -19,9 +19,6 @@
#include "hwrm_tf.h"
#include "tf_em.h"
-/* Logging defines */
-#define TF_RM_MSG_DEBUG 0
-
/* Specific msg size defines as we cannot use defines in tf.yaml. This
* means we have to manually sync hwrm with these defines if the
* tf.yaml changes.
@@ -361,29 +358,13 @@ tf_msg_session_resc_qcaps(struct tf *tfp,
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 &
@@ -476,26 +457,12 @@ tf_msg_session_resc_alloc(struct tf *tfp,
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;
for (i = 0; i < size; i++) {
resv[i].type = tfp_le_to_cpu_32(resv_data[i].type);
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:
diff --git a/drivers/net/bnxt/tf_core/tf_rm.c b/drivers/net/bnxt/tf_core/tf_rm.c
index 887a3dccf8..f93a6d9018 100644
--- a/drivers/net/bnxt/tf_core/tf_rm.c
+++ b/drivers/net/bnxt/tf_core/tf_rm.c
@@ -6,6 +6,7 @@
#include <string.h>
#include <rte_common.h>
+#include <rte_debug.h>
#include <cfa_resource_types.h>
@@ -596,13 +597,6 @@ 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_shadow_tcam.c b/drivers/net/bnxt/tf_core/tf_shadow_tcam.c
index 38b1e7687b..523261f189 100644
--- a/drivers/net/bnxt/tf_core/tf_shadow_tcam.c
+++ b/drivers/net/bnxt/tf_core/tf_shadow_tcam.c
@@ -6,6 +6,7 @@
#include "tf_common.h"
#include "tf_util.h"
#include "tfp.h"
+#include "tf_tcam.h"
#include "tf_shadow_tcam.h"
#include "tf_hash.h"
@@ -634,8 +635,7 @@ tf_shadow_tcam_search(struct tf_shadow_tcam_search_parms *parms)
* requested allocation and return the info
*/
if (sparms->alloc)
- ctxt->shadow_ctxt.sh_res_tbl[shtbl_key].refcnt =
- ctxt->shadow_ctxt.sh_res_tbl[shtbl_key].refcnt + 1;
+ ctxt->shadow_ctxt.sh_res_tbl[shtbl_key].refcnt++;
sparms->hit = 1;
sparms->search_status = HIT;
--
2.21.1 (Apple Git-122.3)
next prev parent reply other threads:[~2021-06-13 0:07 UTC|newest]
Thread overview: 129+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-05-30 8:58 [dpdk-dev] [PATCH 00/58] enhancements to host based flow table management Venkat Duvvuru
2021-05-30 8:58 ` [dpdk-dev] [PATCH 01/58] net/bnxt: add CFA folder to HCAPI directory Venkat Duvvuru
2021-05-30 8:58 ` [dpdk-dev] [PATCH 02/58] net/bnxt: add base TRUFLOW support for Thor Venkat Duvvuru
2021-05-30 8:58 ` [dpdk-dev] [PATCH 03/58] net/bnxt: add mailbox selection via dev op Venkat Duvvuru
2021-05-30 8:58 ` [dpdk-dev] [PATCH 04/58] net/bnxt: check resource reservation in TRUFLOW Venkat Duvvuru
2021-05-30 8:58 ` [dpdk-dev] [PATCH 05/58] net/bnxt: update TRUFLOW resources Venkat Duvvuru
2021-05-30 8:58 ` [dpdk-dev] [PATCH 06/58] net/bnxt: add support for EM with FKB Venkat Duvvuru
2021-05-30 8:58 ` [dpdk-dev] [PATCH 07/58] net/bnxt: add L2 Context TCAM get support Venkat Duvvuru
2021-05-30 8:58 ` [dpdk-dev] [PATCH 08/58] net/bnxt: add action SRAM Translation Venkat Duvvuru
2021-05-30 8:58 ` [dpdk-dev] [PATCH 09/58] net/bnxt: add Thor WC TCAM support Venkat Duvvuru
2021-05-30 8:58 ` [dpdk-dev] [PATCH 10/58] net/bnxt: add 64B SRAM record management with RM Venkat Duvvuru
2021-05-30 8:58 ` [dpdk-dev] [PATCH 11/58] net/bnxt: add hashing changes for Thor Venkat Duvvuru
2021-05-30 8:58 ` [dpdk-dev] [PATCH 12/58] net/bnxt: modify TRUFLOW HWRM messages Venkat Duvvuru
2021-05-30 8:58 ` [dpdk-dev] [PATCH 13/58] net/bnxt: change RM database type Venkat Duvvuru
2021-05-30 8:58 ` [dpdk-dev] [PATCH 14/58] net/bnxt: add shared session support Venkat Duvvuru
2021-05-30 8:58 ` [dpdk-dev] [PATCH 15/58] net/bnxt: add dpool allocator for EM allocation Venkat Duvvuru
2021-05-30 8:58 ` [dpdk-dev] [PATCH 16/58] net/bnxt: update shared session functionality Venkat Duvvuru
2021-05-30 8:58 ` [dpdk-dev] [PATCH 17/58] net/bnxt: modify resource reservation strategy Venkat Duvvuru
2021-05-30 8:58 ` [dpdk-dev] [PATCH 18/58] net/bnxt: shared TCAM region support Venkat Duvvuru
2021-05-30 8:58 ` [dpdk-dev] [PATCH 19/58] net/bnxt: cleanup session open/close messages Venkat Duvvuru
2021-05-30 8:58 ` [dpdk-dev] [PATCH 20/58] net/bnxt: add WC TCAM hi/lo move support Venkat Duvvuru
2021-05-30 8:58 ` [dpdk-dev] [PATCH 21/58] net/bnxt: add API to get shared table increments Venkat Duvvuru
2021-05-30 8:58 ` [dpdk-dev] [PATCH 22/58] net/bnxt: modify host session failure cleanup Venkat Duvvuru
2021-05-30 8:58 ` [dpdk-dev] [PATCH 23/58] net/bnxt: cleanup of WC TCAM shared unbind Venkat Duvvuru
2021-05-30 8:58 ` [dpdk-dev] [PATCH 24/58] net/bnxt: add support for WC TCAM shared session Venkat Duvvuru
2021-05-30 8:58 ` [dpdk-dev] [PATCH 25/58] net/bnxt: add API to clear hi/lo WC region Venkat Duvvuru
2021-05-30 8:58 ` [dpdk-dev] [PATCH 26/58] net/bnxt: check FW capability to support TRUFLOW Venkat Duvvuru
2021-05-30 8:58 ` [dpdk-dev] [PATCH 27/58] net/bnxt: add support for generic table processing Venkat Duvvuru
2021-05-30 8:58 ` [dpdk-dev] [PATCH 28/58] net/bnxt: add support for mapper flow database opcodes Venkat Duvvuru
2021-05-30 8:59 ` [dpdk-dev] [PATCH 29/58] net/bnxt: add conditional execution and rejection Venkat Duvvuru
2021-05-30 8:59 ` [dpdk-dev] [PATCH 30/58] net/bnxt: modify TCAM opcode processing Venkat Duvvuru
2021-05-30 8:59 ` [dpdk-dev] [PATCH 31/58] net/bnxt: modify VXLAN decap for multichannel mode Venkat Duvvuru
2021-05-30 8:59 ` [dpdk-dev] [PATCH 32/58] net/bnxt: modify table processing Venkat Duvvuru
2021-05-30 8:59 ` [dpdk-dev] [PATCH 33/58] net/bnxt: modify ULP priority opcode processing Venkat Duvvuru
2021-05-30 8:59 ` [dpdk-dev] [PATCH 34/58] net/bnxt: add support for conflict resolution Venkat Duvvuru
2021-05-30 8:59 ` [dpdk-dev] [PATCH 35/58] net/bnxt: add support for conditional goto processing Venkat Duvvuru
2021-05-30 8:59 ` [dpdk-dev] [PATCH 36/58] net/bnxt: set shared handle for generic table Venkat Duvvuru
2021-05-30 8:59 ` [dpdk-dev] [PATCH 37/58] net/bnxt: modify ULP template Venkat Duvvuru
2021-05-30 8:59 ` [dpdk-dev] [PATCH 38/58] net/bnxt: add conditional opcode and L4 port fields Venkat Duvvuru
2021-05-30 8:59 ` [dpdk-dev] [PATCH 39/58] net/bnxt: refactor TF ULP Venkat Duvvuru
2021-05-30 8:59 ` [dpdk-dev] [PATCH 40/58] net/bnxt: add partial header field processing Venkat Duvvuru
2021-05-30 8:59 ` [dpdk-dev] [PATCH 41/58] net/bnxt: add support for wild card pattern match Venkat Duvvuru
2021-05-30 8:59 ` [dpdk-dev] [PATCH 42/58] net/bnxt: add support for GRE flows Venkat Duvvuru
2021-05-30 8:59 ` [dpdk-dev] [PATCH 43/58] net/bnxt: enable extended exact match support Venkat Duvvuru
2021-05-30 8:59 ` [dpdk-dev] [PATCH 44/58] net/bnxt: refactor ULP mapper and parser Venkat Duvvuru
2021-05-30 8:59 ` [dpdk-dev] [PATCH 45/58] net/bnxt: add support for generic hash table Venkat Duvvuru
2021-05-30 8:59 ` [dpdk-dev] [PATCH 46/58] net/bnxt: add support for Thor platform Venkat Duvvuru
2021-05-30 8:59 ` [dpdk-dev] [PATCH 47/58] net/bnxt: refactor flow parser in ULP Venkat Duvvuru
2021-05-30 8:59 ` [dpdk-dev] [PATCH 48/58] net/bnxt: add shared session support to ULP Venkat Duvvuru
2021-05-30 8:59 ` [dpdk-dev] [PATCH 49/58] net/bnxt: add field opcodes in ULP Venkat Duvvuru
2021-05-30 8:59 ` [dpdk-dev] [PATCH 50/58] net/bnxt: add support for application ID in ULP matcher Venkat Duvvuru
2021-05-30 8:59 ` [dpdk-dev] [PATCH 51/58] net/bnxt: process resource lists before session open Venkat Duvvuru
2021-05-30 8:59 ` [dpdk-dev] [PATCH 52/58] net/bnxt: add support for shared sessions in ULP Venkat Duvvuru
2021-05-30 8:59 ` [dpdk-dev] [PATCH 53/58] net/bnxt: add HA support " Venkat Duvvuru
2021-05-30 8:59 ` [dpdk-dev] [PATCH 54/58] net/bnxt: add support for icmp6 ULP parsing Venkat Duvvuru
2021-05-30 8:59 ` [dpdk-dev] [PATCH 55/58] net/bnxt: add support for ULP context list for timers Venkat Duvvuru
2021-05-30 8:59 ` [dpdk-dev] [PATCH 56/58] net/bnxt: cleanup ULP parser and mapper Venkat Duvvuru
2021-05-30 8:59 ` [dpdk-dev] [PATCH 57/58] net/bnxt: reorganize ULP template directory structure Venkat Duvvuru
2021-05-30 8:59 ` [dpdk-dev] [PATCH 58/58] net/bnxt: add Thor template support Venkat Duvvuru
2021-06-13 0:05 ` [dpdk-dev] [PATCH v2 00/58] enhancements to host based flow table management Ajit Khaparde
2021-06-13 0:05 ` [dpdk-dev] [PATCH v2 01/58] net/bnxt: add CFA folder to HCAPI directory Ajit Khaparde
2021-06-13 0:05 ` Ajit Khaparde [this message]
2021-06-13 0:05 ` [dpdk-dev] [PATCH v2 03/58] net/bnxt: add mailbox selection via dev op Ajit Khaparde
2021-06-13 0:05 ` [dpdk-dev] [PATCH v2 04/58] net/bnxt: check resource reservation in TRUFLOW Ajit Khaparde
2021-06-13 0:05 ` [dpdk-dev] [PATCH v2 05/58] net/bnxt: update TRUFLOW resources Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 06/58] net/bnxt: add support for EM with FKB Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 07/58] net/bnxt: support L2 Context TCAM ops Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 08/58] net/bnxt: add action SRAM translation Ajit Khaparde
2021-07-05 21:23 ` Thomas Monjalon
2021-07-06 22:37 ` [dpdk-dev] [PATCH v3] " Ajit Khaparde
2021-07-06 22:58 ` [dpdk-dev] [PATCH v2 08/58] " Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 09/58] net/bnxt: add Thor WC TCAM support Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 10/58] net/bnxt: add 64B SRAM record management with RM Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 11/58] net/bnxt: add hashing changes for Thor Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 12/58] net/bnxt: modify TRUFLOW HWRM messages Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 13/58] net/bnxt: change RM database type Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 14/58] net/bnxt: add shared session support Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 15/58] net/bnxt: add dpool allocator for EM allocation Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 16/58] net/bnxt: update shared session functionality Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 17/58] net/bnxt: modify resource reservation strategy Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 18/58] net/bnxt: shared TCAM region support Ajit Khaparde
2021-07-05 21:27 ` Thomas Monjalon
2021-07-06 22:39 ` [dpdk-dev] [PATCH v3] " Ajit Khaparde
2021-07-06 22:57 ` [dpdk-dev] [PATCH v2 18/58] " Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 19/58] net/bnxt: cleanup logs in session handling paths Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 20/58] net/bnxt: add WC TCAM management support Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 21/58] net/bnxt: add API to get shared table increments Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 22/58] net/bnxt: refactor host session failure cleanup Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 23/58] net/bnxt: cleanup WC TCAM shared pool Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 24/58] net/bnxt: add support for WC TCAM shared session Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 25/58] net/bnxt: add API to clear TCAM regions Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 26/58] net/bnxt: check FW capability to support TRUFLOW Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 27/58] net/bnxt: add support for generic table processing Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 28/58] net/bnxt: add support for mapper flow database opcodes Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 29/58] net/bnxt: add conditional processing of templates Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 30/58] net/bnxt: modify TCAM opcode processing Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 31/58] net/bnxt: modify VXLAN decap for multichannel mode Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 32/58] net/bnxt: modify table processing Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 33/58] net/bnxt: add ULP priority opcode processing Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 34/58] net/bnxt: add support to identify duplicate flows Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 35/58] net/bnxt: add conditional goto processing Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 36/58] net/bnxt: set shared handle for generic table Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 37/58] net/bnxt: modify ULP template Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 38/58] net/bnxt: add conditional opcode and L4 port fields Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 39/58] net/bnxt: refactor TRUFLOW processing Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 40/58] net/bnxt: add partial header field processing Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 41/58] net/bnxt: add support for wild card pattern match Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 42/58] net/bnxt: add support for GRE flows Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 43/58] net/bnxt: enable extended exact match support Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 44/58] net/bnxt: refactor ULP mapper Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 45/58] net/bnxt: add support for generic hash table Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 46/58] net/bnxt: add support for Thor platform Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 47/58] net/bnxt: refactor flow parser in ULP Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 48/58] net/bnxt: add shared session support to ULP Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 49/58] net/bnxt: add field opcodes in ULP Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 50/58] net/bnxt: add support for application ID in ULP matcher Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 51/58] net/bnxt: process resource lists before session open Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 52/58] net/bnxt: add templates for shared sessions Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 53/58] net/bnxt: add HA support in ULP Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 54/58] net/bnxt: add ICMPv6 parser to ULP Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 55/58] net/bnxt: add context list for timers Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 56/58] net/bnxt: cleanup ULP parser and mapper Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 57/58] net/bnxt: reorganize ULP template directory structure Ajit Khaparde
2021-06-13 0:06 ` [dpdk-dev] [PATCH v2 58/58] net/bnxt: add Thor template support Ajit Khaparde
2021-06-15 19:33 ` [dpdk-dev] [PATCH v2 00/58] enhancements to host based flow table management Ajit Khaparde
2021-07-07 8:43 ` Thomas Monjalon
2021-07-08 3:57 ` Ajit Khaparde
2021-07-08 12:51 ` Thomas Monjalon
2021-07-08 14:37 ` Ajit Khaparde
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210613000652.28191-3-ajit.khaparde@broadcom.com \
--to=ajit.khaparde@broadcom.com \
--cc=dev@dpdk.org \
--cc=farah.smith@broadcom.com \
--cc=peter.spreadborough@broadcom.com \
--cc=stuart.schacher@broadcom.com \
--cc=venkatkumar.duvvuru@broadcom.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).