DPDK patches and discussions
 help / color / mirror / Atom feed
From: Venkat Duvvuru <venkatkumar.duvvuru@broadcom.com>
To: dev@dpdk.org
Cc: Kishore Padmanabha <kishore.padmanabha@broadcom.com>,
	Michael Baucom <michael.baucom@broadcom.com>,
	Venkat Duvvuru <venkatkumar.duvvuru@broadcom.com>
Subject: [dpdk-dev] [PATCH 32/58] net/bnxt: modify table processing
Date: Sun, 30 May 2021 14:29:03 +0530	[thread overview]
Message-ID: <20210530085929.29695-33-venkatkumar.duvvuru@broadcom.com> (raw)
In-Reply-To: <20210530085929.29695-1-venkatkumar.duvvuru@broadcom.com>

From: Kishore Padmanabha <kishore.padmanabha@broadcom.com>

1. Added interface table specific opcode to process interface table
entry creation and reuse. This allows reuse of the interface table
entry for multiple flows. Changed the regfile apis to store
the data in big endian format.

2. The result blob creation being done in tcam, interface, index
tables are consolidate to a common method.

3. Added result blob processing for generic table write

4. Modified the index table opcode processing to support new opcodes.

5. The driver was setting key size that did not take into account
   the word alignment.

6. The hard coded values for critical resource is replaced with
   template defined values.

Signed-off-by: Kishore Padmanabha <kishore.padmanabha@broadcom.com>
Signed-off-by: Michael Baucom <michael.baucom@broadcom.com>
Signed-off-by: Venkat Duvvuru <venkatkumar.duvvuru@broadcom.com>
Reviewed-by: Michael Baucom <michael.baucom@broadcom.com>
---
 drivers/net/bnxt/tf_ulp/ulp_gen_tbl.c         |  18 +-
 drivers/net/bnxt/tf_ulp/ulp_gen_tbl.h         |   4 +-
 drivers/net/bnxt/tf_ulp/ulp_mapper.c          | 674 ++++++++++--------
 .../net/bnxt/tf_ulp/ulp_template_db_enum.h    |  22 +
 .../bnxt/tf_ulp/ulp_template_db_wh_plus_act.c | 108 +--
 .../tf_ulp/ulp_template_db_wh_plus_class.c    |  69 +-
 6 files changed, 512 insertions(+), 383 deletions(-)

diff --git a/drivers/net/bnxt/tf_ulp/ulp_gen_tbl.c b/drivers/net/bnxt/tf_ulp/ulp_gen_tbl.c
index 0edbe77a96..dd2b799b30 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_gen_tbl.c
+++ b/drivers/net/bnxt/tf_ulp/ulp_gen_tbl.c
@@ -5,6 +5,8 @@
 
 #include <rte_log.h>
 #include <rte_malloc.h>
+#include "tf_core.h"
+#include "tfp.h"
 #include "ulp_mapper.h"
 #include "ulp_flow_db.h"
 
@@ -163,18 +165,20 @@ ulp_mapper_gen_tbl_idx_calculate(uint32_t res_sub_type, uint32_t dir)
 }
 
 /*
- * Set the data in the generic table entry
+ * Set the data in the generic table entry, Data is in Big endian format
  *
  * entry [in] - generic table entry
  * offset [in] - The offset in bits where the data has to be set
  * len [in] - The length of the data in bits to be set
  * data [in] - pointer to the data to be used for setting the value.
+ * data_size [in] - length of the data pointer in bytes.
  *
  * returns 0 on success
  */
 int32_t
 ulp_mapper_gen_tbl_entry_data_set(struct ulp_mapper_gen_tbl_entry *entry,
-				  uint32_t offset, uint32_t len, uint8_t *data)
+				  uint32_t offset, uint32_t len, uint8_t *data,
+				  uint32_t data_size)
 {
 	/* validate the null arguments */
 	if (!entry || !data) {
@@ -183,12 +187,17 @@ ulp_mapper_gen_tbl_entry_data_set(struct ulp_mapper_gen_tbl_entry *entry,
 	}
 
 	/* check the size of the buffer for validation */
-	if ((offset + len) > ULP_BYTE_2_BITS(entry->byte_data_size)) {
+	if ((offset + len) > ULP_BYTE_2_BITS(entry->byte_data_size) ||
+	    data_size < ULP_BITS_2_BYTE(len)) {
 		BNXT_TF_DBG(ERR, "invalid offset or length %x:%x:%x\n",
 			    offset, len, entry->byte_data_size);
 		return -EINVAL;
 	}
 
+	/* adjust the data pointer */
+	data = data + (data_size - ULP_BITS_2_BYTE(len));
+
+	/* Push the data into the byte data array */
 	if (entry->byte_order == BNXT_ULP_BYTE_ORDER_LE) {
 		if (ulp_bs_push_lsb(entry->byte_data, offset, len, data) !=
 		    len) {
@@ -208,7 +217,7 @@ ulp_mapper_gen_tbl_entry_data_set(struct ulp_mapper_gen_tbl_entry *entry,
 }
 
 /*
- * Get the data in the generic table entry
+ * Get the data in the generic table entry, Data is in Big endian format
  *
  * entry [in] - generic table entry
  * offset [in] - The offset in bits where the data has to get
@@ -298,6 +307,7 @@ ulp_mapper_gen_tbl_res_free(struct bnxt_ulp_context *ulp_ctx,
 			    tbl_idx, res->resource_hndl);
 		return -EINVAL;
 	}
+	fid = tfp_be_to_cpu_32(fid);
 
 	/* Destroy the flow associated with the shared flow id */
 	if (ulp_mapper_flow_destroy(ulp_ctx, BNXT_ULP_FDB_TYPE_REGULAR,
diff --git a/drivers/net/bnxt/tf_ulp/ulp_gen_tbl.h b/drivers/net/bnxt/tf_ulp/ulp_gen_tbl.h
index c8a1112af4..701a8d10e5 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_gen_tbl.h
+++ b/drivers/net/bnxt/tf_ulp/ulp_gen_tbl.h
@@ -104,12 +104,14 @@ ulp_mapper_gen_tbl_idx_calculate(uint32_t res_sub_type, uint32_t dir);
  * offset [in] - The offset in bits where the data has to be set
  * len [in] - The length of the data in bits to be set
  * data [in] - pointer to the data to be used for setting the value.
+ * data_size [in] - length of the data pointer in bytes.
  *
  * returns 0 on success
  */
 int32_t
 ulp_mapper_gen_tbl_entry_data_set(struct ulp_mapper_gen_tbl_entry *entry,
-				  uint32_t offset, uint32_t len, uint8_t *data);
+				  uint32_t offset, uint32_t len, uint8_t *data,
+				  uint32_t data_size);
 
 /*
  * Get the data in the generic table entry
diff --git a/drivers/net/bnxt/tf_ulp/ulp_mapper.c b/drivers/net/bnxt/tf_ulp/ulp_mapper.c
index c511f835ff..eb57ec8ba3 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_mapper.c
+++ b/drivers/net/bnxt/tf_ulp/ulp_mapper.c
@@ -530,7 +530,7 @@ ulp_mapper_fdb_opc_process(struct bnxt_ulp_mapper_parms *parms,
 	case BNXT_ULP_FDB_OPC_ALLOC_PUSH_REGFILE:
 		/* allocate a new fid */
 		rc = ulp_flow_db_fid_alloc(parms->ulp_ctx,
-					   BNXT_ULP_FDB_TYPE_REGULAR,
+					   parms->flow_type,
 					   tbl->resource_func, &fid);
 		if (rc) {
 			BNXT_TF_DBG(ERR,
@@ -540,7 +540,7 @@ ulp_mapper_fdb_opc_process(struct bnxt_ulp_mapper_parms *parms,
 		/* Store the allocated fid in regfile*/
 		val64 = fid;
 		rc = ulp_regfile_write(parms->regfile, tbl->flow_db_operand,
-				       val64);
+				       tfp_cpu_to_be_64(val64));
 		if (!rc) {
 			BNXT_TF_DBG(ERR, "Write regfile[%d] failed\n",
 				    tbl->flow_db_operand);
@@ -560,7 +560,7 @@ ulp_mapper_fdb_opc_process(struct bnxt_ulp_mapper_parms *parms,
 			return -EINVAL;
 		}
 		/* Use the extracted fid to update the flow resource */
-		push_fid = (uint32_t)val64;
+		push_fid = tfp_be_to_cpu_64((uint32_t)val64);
 		break;
 	default:
 		return rc; /* Nothing to be done */
@@ -584,6 +584,65 @@ ulp_mapper_fdb_opc_process(struct bnxt_ulp_mapper_parms *parms,
 	return rc;
 }
 
+/*
+ * Process the identifier list in the given table.
+ * Extract the ident from the table entry and
+ * write it to the reg file.
+ * returns 0 on success.
+ */
+static int32_t
+ulp_mapper_tbl_ident_scan_ext(struct bnxt_ulp_mapper_parms *parms,
+			      struct bnxt_ulp_mapper_tbl_info *tbl,
+			      uint8_t *byte_data,
+			      uint32_t byte_data_size,
+			      enum bnxt_ulp_byte_order byte_order)
+{
+	struct bnxt_ulp_mapper_ident_info *idents;
+	uint32_t i, num_idents = 0;
+	uint64_t val64;
+
+	/* validate the null arguments */
+	if (!byte_data) {
+		BNXT_TF_DBG(ERR, "invalid argument\n");
+		return -EINVAL;
+	}
+
+	/* Get the ident list and process each one */
+	idents = ulp_mapper_ident_fields_get(parms, tbl, &num_idents);
+
+	for (i = 0; i < num_idents; i++) {
+		/* check the size of the buffer for validation */
+		if ((idents[i].ident_bit_pos + idents[i].ident_bit_size) >
+		    ULP_BYTE_2_BITS(byte_data_size) ||
+		    idents[i].ident_bit_size > ULP_BYTE_2_BITS(sizeof(val64))) {
+			BNXT_TF_DBG(ERR, "invalid offset or length %x:%x:%x\n",
+				    idents[i].ident_bit_pos,
+				    idents[i].ident_bit_size,
+				    byte_data_size);
+			return -EINVAL;
+		}
+		if (byte_order == BNXT_ULP_BYTE_ORDER_LE)
+			ulp_bs_pull_lsb(byte_data, (uint8_t *)&val64,
+					sizeof(val64),
+					idents[i].ident_bit_pos,
+					idents[i].ident_bit_size);
+		else
+			ulp_bs_pull_msb(byte_data, (uint8_t *)&val64,
+					idents[i].ident_bit_pos,
+					idents[i].ident_bit_size);
+
+		/* Write it to the regfile, val64 is already in big-endian*/
+		if (!ulp_regfile_write(parms->regfile,
+				       idents[i].regfile_idx,
+				       val64)) {
+			BNXT_TF_DBG(ERR, "Regfile[%d] write failed.\n",
+				    idents[i].regfile_idx);
+			return -EINVAL;
+		}
+	}
+	return 0;
+}
+
 /*
  * Process the identifier instruction and either store it in the flow database
  * or return it in the val (if not NULL) on success.  If val is NULL, the
@@ -637,7 +696,7 @@ ulp_mapper_ident_process(struct bnxt_ulp_mapper_parms *parms,
 		fid_parms.resource_func	= ident->resource_func;
 		fid_parms.resource_type	= ident->ident_type;
 		fid_parms.resource_hndl	= iparms.id;
-		fid_parms.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_NO;
+		fid_parms.critical_resource = tbl->critical_resource;
 
 		rc = ulp_mapper_fdb_opc_process(parms, tbl, &fid_parms);
 		if (rc) {
@@ -729,7 +788,7 @@ ulp_mapper_ident_extract(struct bnxt_ulp_mapper_parms *parms,
 	fid_parms.resource_func = ident->resource_func;
 	fid_parms.resource_type = ident->ident_type;
 	fid_parms.resource_hndl = sparms.search_id;
-	fid_parms.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_NO;
+	fid_parms.critical_resource = tbl->critical_resource;
 	rc = ulp_mapper_fdb_opc_process(parms, tbl, &fid_parms);
 	if (rc) {
 		BNXT_TF_DBG(ERR, "Failed to link res to flow rc = %d\n",
@@ -1044,6 +1103,57 @@ ulp_mapper_result_field_process(struct bnxt_ulp_mapper_parms *parms,
 	return 0;
 }
 
+/*
+ * Result table process and fill the result blob.
+ * data [out] - the result blob data
+ */
+static int32_t
+ulp_mapper_tbl_result_build(struct bnxt_ulp_mapper_parms *parms,
+			    struct bnxt_ulp_mapper_tbl_info *tbl,
+			    struct ulp_blob *data,
+			    const char *name)
+{
+	struct bnxt_ulp_mapper_result_field_info *dflds;
+	uint32_t i, num_flds = 0, encap_flds = 0;
+	int32_t rc = 0;
+
+	/* Get the result field list */
+	dflds = ulp_mapper_result_fields_get(parms, tbl, &num_flds,
+					     &encap_flds);
+
+	/* validate the result field list counts */
+	if ((tbl->resource_func == BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE &&
+	     (!num_flds && !encap_flds)) || !dflds ||
+	    (tbl->resource_func != BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE &&
+		(!num_flds || encap_flds))) {
+		BNXT_TF_DBG(ERR, "Failed to get data fields %x:%x\n",
+			    num_flds, encap_flds);
+		return -EINVAL;
+	}
+
+	/* process the result fields, loop through them */
+	for (i = 0; i < (num_flds + encap_flds); i++) {
+		/* set the swap index if encap swap bit is enabled */
+		if (parms->device_params->encap_byte_swap && encap_flds &&
+		    i == num_flds)
+			ulp_blob_encap_swap_idx_set(data);
+
+		/* Process the result fields */
+		rc = ulp_mapper_result_field_process(parms, tbl->direction,
+						     &dflds[i], data, name);
+		if (rc) {
+			BNXT_TF_DBG(ERR, "data field failed\n");
+			return rc;
+		}
+	}
+
+	/* if encap bit swap is enabled perform the bit swap */
+	if (parms->device_params->encap_byte_swap && encap_flds)
+		ulp_blob_perform_encap_swap(data);
+
+	return rc;
+}
+
 /* Function to alloc action record and set the table. */
 static int32_t
 ulp_mapper_keymask_field_process(struct bnxt_ulp_mapper_parms *parms,
@@ -1209,7 +1319,7 @@ ulp_mapper_mark_gfid_process(struct bnxt_ulp_mapper_parms *parms,
 	}
 	fid_parms.direction = tbl->direction;
 	fid_parms.resource_func = BNXT_ULP_RESOURCE_FUNC_HW_FID;
-	fid_parms.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_NO;
+	fid_parms.critical_resource = tbl->critical_resource;
 	fid_parms.resource_type	= mark_flag;
 	fid_parms.resource_hndl	= gfid;
 	rc = ulp_mapper_fdb_opc_process(parms, tbl, &fid_parms);
@@ -1255,7 +1365,7 @@ ulp_mapper_mark_act_ptr_process(struct bnxt_ulp_mapper_parms *parms,
 	}
 	fid_parms.direction = tbl->direction;
 	fid_parms.resource_func = BNXT_ULP_RESOURCE_FUNC_HW_FID;
-	fid_parms.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_NO;
+	fid_parms.critical_resource = tbl->critical_resource;
 	fid_parms.resource_type	= mark_flag;
 	fid_parms.resource_hndl	= act_idx;
 	rc = ulp_mapper_fdb_opc_process(parms, tbl, &fid_parms);
@@ -1301,7 +1411,7 @@ ulp_mapper_mark_vfr_idx_process(struct bnxt_ulp_mapper_parms *parms,
 	}
 	fid_parms.direction = tbl->direction;
 	fid_parms.resource_func = BNXT_ULP_RESOURCE_FUNC_HW_FID;
-	fid_parms.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_NO;
+	fid_parms.critical_resource = tbl->critical_resource;
 	fid_parms.resource_type	= mark_flag;
 	fid_parms.resource_hndl	= act_idx;
 	rc = ulp_mapper_fdb_opc_process(parms, tbl, &fid_parms);
@@ -1310,43 +1420,6 @@ ulp_mapper_mark_vfr_idx_process(struct bnxt_ulp_mapper_parms *parms,
 	return rc;
 }
 
-/*
- * Tcam table - create the result blob.
- * data [out] - the result blob data
- */
-static int32_t
-ulp_mapper_tcam_tbl_result_create(struct bnxt_ulp_mapper_parms *parms,
-				  struct bnxt_ulp_mapper_tbl_info *tbl,
-				  struct ulp_blob *data)
-{
-	struct bnxt_ulp_mapper_result_field_info *dflds;
-	uint32_t num_dflds;
-	uint32_t encap_flds = 0;
-	uint32_t i;
-	int32_t rc = 0;
-
-	/* Create the result data blob */
-	dflds = ulp_mapper_result_fields_get(parms, tbl, &num_dflds,
-					     &encap_flds);
-	if (!dflds || !num_dflds || encap_flds) {
-		BNXT_TF_DBG(ERR, "Failed to get data fields.\n");
-		return -EINVAL;
-	}
-
-	for (i = 0; i < num_dflds; i++) {
-		rc = ulp_mapper_result_field_process(parms,
-						     tbl->direction,
-						     &dflds[i],
-						     data,
-						     "TCAM Result");
-		if (rc) {
-			BNXT_TF_DBG(ERR, "Failed to set data fields\n");
-			return -EINVAL;
-		}
-	}
-	return rc;
-}
-
 /* Tcam table scan the identifier list and allocate each identifier */
 static int32_t
 ulp_mapper_tcam_tbl_scan_ident_alloc(struct bnxt_ulp_mapper_parms *parms,
@@ -1418,8 +1491,8 @@ ulp_mapper_tcam_tbl_entry_write(struct bnxt_ulp_mapper_parms *parms,
 	sparms.idx		= idx;
 	/* Already verified the key/mask lengths */
 	sparms.key		= ulp_blob_data_get(key, &tmplen);
+	sparms.key_sz_in_bits	= tmplen;
 	sparms.mask		= ulp_blob_data_get(mask, &tmplen);
-	sparms.key_sz_in_bits	= tbl->key_bit_size;
 	sparms.result		= ulp_blob_data_get(data, &tmplen);
 
 	if (tbl->result_bit_size != tmplen) {
@@ -1625,8 +1698,8 @@ ulp_mapper_tcam_tbl_process(struct bnxt_ulp_mapper_parms *parms,
 		rc = ulp_mapper_tcam_tbl_scan_ident_alloc(parms, tbl);
 		/* Create the result blob */
 		if (!rc)
-			rc = ulp_mapper_tcam_tbl_result_create(parms, tbl,
-							       &data);
+			rc = ulp_mapper_tbl_result_build(parms, tbl, &data,
+							 "TCAM Result");
 		/* write the tcam entry */
 		if (!rc)
 			rc = ulp_mapper_tcam_tbl_entry_write(parms, tbl, &key,
@@ -1669,9 +1742,8 @@ ulp_mapper_em_tbl_process(struct bnxt_ulp_mapper_parms *parms,
 			  struct bnxt_ulp_mapper_tbl_info *tbl)
 {
 	struct bnxt_ulp_mapper_key_field_info	*kflds;
-	struct bnxt_ulp_mapper_result_field_info *dflds;
 	struct ulp_blob key, data;
-	uint32_t i, num_kflds, num_dflds;
+	uint32_t i, num_kflds;
 	uint16_t tmplen;
 	struct tf *tfp = bnxt_ulp_cntxt_tfp_get(parms->ulp_ctx);
 	struct ulp_flow_db_res_params	fid_parms = { 0 };
@@ -1680,7 +1752,6 @@ ulp_mapper_em_tbl_process(struct bnxt_ulp_mapper_parms *parms,
 	enum bnxt_ulp_flow_mem_type mtype;
 	int32_t	trc;
 	int32_t rc = 0;
-	uint32_t encap_flds = 0;
 
 	rc = bnxt_ulp_cntxt_mem_type_get(parms->ulp_ctx, &mtype);
 	if (rc) {
@@ -1721,27 +1792,10 @@ ulp_mapper_em_tbl_process(struct bnxt_ulp_mapper_parms *parms,
 	 */
 
 	/* Create the result data blob */
-	dflds = ulp_mapper_result_fields_get(parms, tbl,
-					     &num_dflds, &encap_flds);
-	if (!dflds || !num_dflds || encap_flds) {
-		BNXT_TF_DBG(ERR, "Failed to get data fields.\n");
-		return -EINVAL;
-	}
-
-	for (i = 0; i < num_dflds; i++) {
-		struct bnxt_ulp_mapper_result_field_info *fld;
-
-		fld = &dflds[i];
-
-		rc = ulp_mapper_result_field_process(parms,
-						     tbl->direction,
-						     fld,
-						     &data,
-						     "EM Result");
-		if (rc) {
-			BNXT_TF_DBG(ERR, "Failed to set data fields.\n");
-			return rc;
-		}
+	rc = ulp_mapper_tbl_result_build(parms, tbl, &data, "EM Result");
+	if (rc) {
+		BNXT_TF_DBG(ERR, "Failed to build the result blob\n");
+		return rc;
 	}
 	/* do the transpose for the internal EM keys */
 	if (tbl->resource_func == BNXT_ULP_RESOURCE_FUNC_INT_EM_TABLE)
@@ -1818,28 +1872,23 @@ static int32_t
 ulp_mapper_index_tbl_process(struct bnxt_ulp_mapper_parms *parms,
 			     struct bnxt_ulp_mapper_tbl_info *tbl)
 {
-	struct bnxt_ulp_mapper_result_field_info *flds;
-	struct ulp_flow_db_res_params	fid_parms;
+	struct ulp_flow_db_res_params fid_parms;
 	struct ulp_blob	data;
-	uint64_t idx = 0;
+	uint64_t regval = 0;
 	uint16_t tmplen;
-	uint32_t i, num_flds, index, hit;
+	uint32_t index, hit;
 	int32_t rc = 0, trc = 0;
-	struct tf_alloc_tbl_entry_parms	aparms = { 0 };
+	struct tf_alloc_tbl_entry_parms aparms = { 0 };
 	struct tf_search_tbl_entry_parms srchparms = { 0 };
-	struct tf_set_tbl_entry_parms	sparms = { 0 };
-	struct tf_free_tbl_entry_parms	free_parms = { 0 };
+	struct tf_set_tbl_entry_parms sparms = { 0 };
+	struct tf_get_tbl_entry_parms gparms = { 0 };
+	struct tf_free_tbl_entry_parms free_parms = { 0 };
 	uint32_t tbl_scope_id;
 	struct tf *tfp = bnxt_ulp_cntxt_tfp_get(parms->ulp_ctx);
 	uint16_t bit_size;
-	uint32_t encap_flds = 0;
-
-	/* Get the scope id first */
-	rc = bnxt_ulp_cntxt_tbl_scope_id_get(parms->ulp_ctx, &tbl_scope_id);
-	if (rc) {
-		BNXT_TF_DBG(ERR, "Failed to get table scope rc=%d\n", rc);
-		return rc;
-	}
+	bool alloc = false;
+	bool write = false;
+	bool search = false;
 
 	/* use the max size if encap is enabled */
 	if (tbl->encap_num_fields)
@@ -1850,82 +1899,150 @@ ulp_mapper_index_tbl_process(struct bnxt_ulp_mapper_parms *parms,
 	/* Initialize the blob data */
 	if (!ulp_blob_init(&data, bit_size,
 			   parms->device_params->byte_order)) {
-		BNXT_TF_DBG(ERR, "Failed initial index table blob\n");
+		BNXT_TF_DBG(ERR, "Failed to initialize index table blob\n");
 		return -EINVAL;
 	}
 
-	/* Get the result fields list */
-	flds = ulp_mapper_result_fields_get(parms, tbl, &num_flds, &encap_flds);
-
-	if (!flds || (!num_flds && !encap_flds)) {
-		BNXT_TF_DBG(ERR, "template undefined for the index table\n");
-		return -EINVAL;
+	/* Get the scope id first */
+	rc = bnxt_ulp_cntxt_tbl_scope_id_get(parms->ulp_ctx, &tbl_scope_id);
+	if (rc) {
+		BNXT_TF_DBG(ERR, "Failed to get table scope rc=%d\n", rc);
+		return rc;
 	}
 
-	/* process the result fields, loop through them */
-	for (i = 0; i < (num_flds + encap_flds); i++) {
-		/* set the swap index if encap swap bit is enabled */
-		if (parms->device_params->encap_byte_swap && encap_flds &&
-		    i == num_flds)
-			ulp_blob_encap_swap_idx_set(&data);
-
-		/* Process the result fields */
-		rc = ulp_mapper_result_field_process(parms,
-						     tbl->direction,
-						     &flds[i],
-						     &data,
-						     "Indexed Result");
-		if (rc) {
-			BNXT_TF_DBG(ERR, "data field failed\n");
-			return rc;
+	switch (tbl->tbl_opcode) {
+	case BNXT_ULP_INDEX_TBL_OPC_ALLOC_REGFILE:
+		alloc = true;
+		break;
+	case BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE:
+		/*
+		 * Build the entry, alloc an index, write the table, and store
+		 * the data in the regfile.
+		 */
+		alloc = true;
+		write = true;
+		break;
+	case BNXT_ULP_INDEX_TBL_OPC_SRCH_ALLOC_WR_REGFILE:
+		if (tbl->resource_type == TF_TBL_TYPE_EXT) {
+			/* Not currently supporting with EXT */
+			BNXT_TF_DBG(ERR,
+				    "Ext Table Search Opcode not supported.\n");
+			return -EINVAL;
 		}
-	}
-
-	/* if encap bit swap is enabled perform the bit swap */
-	if (parms->device_params->encap_byte_swap && encap_flds) {
-		ulp_blob_perform_encap_swap(&data);
-	}
+		/*
+		 * Search for the entry in the tf core.  If it is hit, save the
+		 * index in the regfile.  If it is a miss, Build the entry,
+		 * alloc an index, write the table, and store the data in the
+		 * regfile (same as ALLOC_WR).
+		 */
+		search = true;
+		break;
+	case BNXT_ULP_INDEX_TBL_OPC_WR_REGFILE:
+		/*
+		 * get the index to write to from the regfile and then write
+		 * the table entry.
+		 */
+		if (!ulp_regfile_read(parms->regfile,
+				      tbl->tbl_operand,
+				      &regval)) {
+			BNXT_TF_DBG(ERR,
+				    "Failed to get tbl idx from regfile[%d].\n",
+				    tbl->tbl_operand);
+			return -EINVAL;
+		}
+		index = tfp_be_to_cpu_64(regval);
+		/* For external, we need to reverse shift */
+		if (tbl->resource_type == TF_TBL_TYPE_EXT)
+			index = TF_ACT_REC_PTR_2_OFFSET(index);
 
-	/*
-	 * Check for index opcode, if it is Global then
-	 * no need to allocate the table, just set the table
-	 * and exit since it is not maintained in the flow db.
-	 */
-	if (tbl->index_opcode == BNXT_ULP_INDEX_OPCODE_GLOBAL) {
-		/* get the index from index operand */
-		if (tbl->index_operand < BNXT_ULP_GLB_REGFILE_INDEX_LAST &&
-		    ulp_mapper_glb_resource_read(parms->mapper_data,
+		write = true;
+		break;
+	case BNXT_ULP_INDEX_TBL_OPC_WR_GLB_REGFILE:
+		/*
+		 * get the index to write to from the global regfile and then
+		 * write the table.
+		 */
+		if (ulp_mapper_glb_resource_read(parms->mapper_data,
 						 tbl->direction,
-						 tbl->index_operand,
-						 &idx)) {
-			BNXT_TF_DBG(ERR, "Glbl regfile[%d] read failed.\n",
+						 tbl->tbl_operand,
+						 &regval)) {
+			BNXT_TF_DBG(ERR,
+				    "Failed to get tbl idx from Global "
+				    "regfile[%d].\n",
 				    tbl->index_operand);
 			return -EINVAL;
 		}
-		/* set the Tf index table */
-		sparms.dir		= tbl->direction;
-		sparms.type		= tbl->resource_type;
-		sparms.data		= ulp_blob_data_get(&data, &tmplen);
-		sparms.data_sz_in_bytes = ULP_BITS_2_BYTE(tmplen);
-		sparms.idx		= tfp_be_to_cpu_64(idx);
-		sparms.tbl_scope_id	= tbl_scope_id;
+		index = tfp_be_to_cpu_64(regval);
+		/* For external, we need to reverse shift */
+		if (tbl->resource_type == TF_TBL_TYPE_EXT)
+			index = TF_ACT_REC_PTR_2_OFFSET(index);
+		write = true;
+		break;
+	case BNXT_ULP_INDEX_TBL_OPC_RD_REGFILE:
+		/*
+		 * The read is different from the rest and can be handled here
+		 * instead of trying to use common code.  Simply read the table
+		 * with the index from the regfile, scan and store the
+		 * identifiers, and return.
+		 */
+		if (tbl->resource_type == TF_TBL_TYPE_EXT) {
+			/* Not currently supporting with EXT */
+			BNXT_TF_DBG(ERR,
+				    "Ext Table Read Opcode not supported.\n");
+			return -EINVAL;
+		}
+		if (!ulp_regfile_read(parms->regfile,
+				      tbl->tbl_operand, &regval)) {
+			BNXT_TF_DBG(ERR,
+				    "Failed to get tbl idx from regfile[%d]\n",
+				    tbl->tbl_operand);
+			return -EINVAL;
+		}
+		index = tfp_be_to_cpu_64(regval);
+		gparms.dir = tbl->direction;
+		gparms.type = tbl->resource_type;
+		gparms.data = ulp_blob_data_get(&data, &tmplen);
+		gparms.data_sz_in_bytes = ULP_BITS_2_BYTE(tbl->result_bit_size);
+		gparms.idx = index;
+		rc = tf_get_tbl_entry(tfp, &gparms);
+		if (rc) {
+			BNXT_TF_DBG(ERR, "Failed to read the tbl entry %d:%d\n",
+				    tbl->resource_type, index);
+			return rc;
+		}
+		/*
+		 * Scan the fields in the entry and push them into the regfile.
+		 */
+		rc = ulp_mapper_tbl_ident_scan_ext(parms, tbl,
+						   gparms.data,
+						   gparms.data_sz_in_bytes,
+						   data.byte_order);
+		if (rc) {
+			BNXT_TF_DBG(ERR, "Failed to read fields on tbl read "
+				    "rc=%d\n", rc);
+			return rc;
+		}
+		return 0;
+	default:
+		BNXT_TF_DBG(ERR, "Invalid index table opcode %d\n",
+			    tbl->tbl_opcode);
+		return -EINVAL;
+	}
 
-		rc = tf_set_tbl_entry(tfp, &sparms);
+	if (write || search) {
+		/* Get the result fields list */
+		rc = ulp_mapper_tbl_result_build(parms,
+						 tbl,
+						 &data,
+						 "Indexed Result");
 		if (rc) {
-			BNXT_TF_DBG(ERR,
-				    "Glbl Index table[%s][%s][%x] failed rc=%d\n",
-				    tf_tbl_type_2_str(sparms.type),
-				    tf_dir_2_str(sparms.dir),
-				    sparms.idx, rc);
+			BNXT_TF_DBG(ERR, "Failed to build the result blob\n");
 			return rc;
 		}
-		return 0; /* success */
 	}
 
-	index = 0;
-	hit = 0;
-	/* Perform the tf table allocation by filling the alloc params */
-	if (tbl->srch_b4_alloc) {
+	if (search) {
+		/* Use the result blob to perform a search */
 		memset(&srchparms, 0, sizeof(srchparms));
 		srchparms.dir = tbl->direction;
 		srchparms.type = tbl->resource_type;
@@ -1948,12 +2065,15 @@ ulp_mapper_index_tbl_process(struct bnxt_ulp_mapper_parms *parms,
 		}
 		index = srchparms.idx;
 		hit = srchparms.hit;
-	} else {
+		if (hit)
+			write = false;
+		else
+			write = true;
+	}
+
+	if (alloc) {
 		aparms.dir		= tbl->direction;
 		aparms.type		= tbl->resource_type;
-		aparms.search_enable	= tbl->srch_b4_alloc;
-		aparms.result		= ulp_blob_data_get(&data, &tmplen);
-		aparms.result_sz_in_bytes = ULP_BITS_2_BYTE(tmplen);
 		aparms.tbl_scope_id	= tbl_scope_id;
 
 		/* All failures after the alloc succeeds require a free */
@@ -1967,39 +2087,43 @@ ulp_mapper_index_tbl_process(struct bnxt_ulp_mapper_parms *parms,
 		index = aparms.idx;
 	}
 
-	/*
-	 * calculate the idx for the result record, for external EM the offset
-	 * needs to be shifted accordingly. If external non-inline table types
-	 * are used then need to revisit this logic.
-	 */
-	if (tbl->resource_type == TF_TBL_TYPE_EXT)
-		idx = TF_ACT_REC_OFFSET_2_PTR(index);
-	else
-		idx = index;
+	if (search || alloc) {
+		/*
+		 * Store the index in the regfile since we either allocated it
+		 * or it was a hit.
+		 *
+		 * Calculate the idx for the result record, for external EM the
+		 * offset needs to be shifted accordingly.
+		 * If external non-inline table types are used then need to
+		 * revisit this logic.
+		 */
+		if (tbl->resource_type == TF_TBL_TYPE_EXT)
+			regval = TF_ACT_REC_OFFSET_2_PTR(index);
+		else
+			regval = index;
 
-	/* Always storing values in Regfile in BE */
-	idx = tfp_cpu_to_be_64(idx);
-	if (tbl->index_opcode == BNXT_ULP_INDEX_OPCODE_ALLOCATE) {
-		rc = ulp_regfile_write(parms->regfile, tbl->index_operand, idx);
+		rc = ulp_regfile_write(parms->regfile,
+				       tbl->tbl_operand,
+				       tfp_cpu_to_be_64(regval));
 		if (!rc) {
-			BNXT_TF_DBG(ERR, "Write regfile[%d] failed\n",
-				    tbl->index_operand);
+			BNXT_TF_DBG(ERR, "Failed to write regfile[%d] rc=%d\n",
+				    tbl->tbl_operand, rc);
 			goto error;
 		}
 	}
 
-	/* Perform the tf table set by filling the set params */
-	if (!tbl->srch_b4_alloc || !hit) {
-		sparms.dir		= tbl->direction;
-		sparms.type		= tbl->resource_type;
-		sparms.data		= ulp_blob_data_get(&data, &tmplen);
+	if (write) {
+		sparms.dir = tbl->direction;
+		sparms.type = tbl->resource_type;
+		sparms.data = ulp_blob_data_get(&data, &tmplen);
 		sparms.data_sz_in_bytes = ULP_BITS_2_BYTE(tmplen);
-		sparms.idx		= index;
-		sparms.tbl_scope_id	= tbl_scope_id;
-
+		sparms.idx = index;
+		sparms.tbl_scope_id = tbl_scope_id;
 		rc = tf_set_tbl_entry(tfp, &sparms);
 		if (rc) {
-			BNXT_TF_DBG(ERR, "Set table[%s][%s][%x] failed rc=%d\n",
+			BNXT_TF_DBG(ERR,
+				    "Index table[%s][%s][%x] write failed "
+				    "rc=%d\n",
 				    tf_tbl_type_2_str(sparms.type),
 				    tf_dir_2_str(sparms.dir),
 				    sparms.idx, rc);
@@ -2014,7 +2138,7 @@ ulp_mapper_index_tbl_process(struct bnxt_ulp_mapper_parms *parms,
 	fid_parms.resource_type	= tbl->resource_type;
 	fid_parms.resource_sub_type = tbl->resource_sub_type;
 	fid_parms.resource_hndl	= index;
-	fid_parms.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_NO;
+	fid_parms.critical_resource = tbl->critical_resource;
 
 	rc = ulp_mapper_fdb_opc_process(parms, tbl, &fid_parms);
 	if (rc) {
@@ -2051,15 +2175,15 @@ static int32_t
 ulp_mapper_if_tbl_process(struct bnxt_ulp_mapper_parms *parms,
 			  struct bnxt_ulp_mapper_tbl_info *tbl)
 {
-	struct bnxt_ulp_mapper_result_field_info *flds;
-	struct ulp_blob	data;
+	struct ulp_blob	data, res_blob;
 	uint64_t idx;
 	uint16_t tmplen;
-	uint32_t i, num_flds;
 	int32_t rc = 0;
 	struct tf_set_if_tbl_entry_parms iftbl_params = { 0 };
+	struct tf_get_if_tbl_entry_parms get_parms = { 0 };
 	struct tf *tfp = bnxt_ulp_cntxt_tfp_get(parms->ulp_ctx);
-	uint32_t encap_flds;
+	enum bnxt_ulp_if_tbl_opc if_opc = tbl->tbl_opcode;
+	uint32_t res_size;
 
 	/* Initialize the blob data */
 	if (!ulp_blob_init(&data, tbl->result_bit_size,
@@ -2068,34 +2192,64 @@ ulp_mapper_if_tbl_process(struct bnxt_ulp_mapper_parms *parms,
 		return -EINVAL;
 	}
 
-	/* Get the result fields list */
-	flds = ulp_mapper_result_fields_get(parms, tbl, &num_flds, &encap_flds);
-
-	if (!flds || !num_flds || encap_flds) {
-		BNXT_TF_DBG(ERR, "template undefined for the IF table\n");
-		return -EINVAL;
+	/* create the result blob */
+	rc = ulp_mapper_tbl_result_build(parms, tbl, &data, "IFtable Result");
+	if (rc) {
+		BNXT_TF_DBG(ERR, "Failed to build the result blob\n");
+		return rc;
 	}
 
-	/* process the result fields, loop through them */
-	for (i = 0; i < num_flds; i++) {
-		/* Process the result fields */
-		rc = ulp_mapper_result_field_process(parms,
-						     tbl->direction,
-						     &flds[i],
-						     &data,
-						     "IFtable Result");
+	/* Get the index details */
+	switch (if_opc) {
+	case BNXT_ULP_IF_TBL_OPC_WR_COMP_FIELD:
+		idx = ULP_COMP_FLD_IDX_RD(parms, tbl->tbl_operand);
+		break;
+	case BNXT_ULP_IF_TBL_OPC_WR_REGFILE:
+		if (!ulp_regfile_read(parms->regfile, tbl->tbl_operand, &idx)) {
+			BNXT_TF_DBG(ERR, "regfile[%d] read oob\n",
+				    tbl->tbl_operand);
+			return -EINVAL;
+		}
+		idx = tfp_be_to_cpu_64(idx);
+		break;
+	case BNXT_ULP_IF_TBL_OPC_WR_CONST:
+		idx = tbl->tbl_operand;
+		break;
+	case BNXT_ULP_IF_TBL_OPC_RD_COMP_FIELD:
+		/* Initialize the result blob */
+		if (!ulp_blob_init(&res_blob, tbl->result_bit_size,
+				   parms->device_params->byte_order)) {
+			BNXT_TF_DBG(ERR, "Failed initial result blob\n");
+			return -EINVAL;
+		}
+
+		/* read the interface table */
+		idx = ULP_COMP_FLD_IDX_RD(parms, tbl->tbl_operand);
+		res_size = ULP_BITS_2_BYTE(tbl->result_bit_size);
+		get_parms.dir = tbl->direction;
+		get_parms.type = tbl->resource_type;
+		get_parms.idx = idx;
+		get_parms.data = ulp_blob_data_get(&res_blob, &tmplen);
+		get_parms.data_sz_in_bytes = res_size;
+
+		rc = tf_get_if_tbl_entry(tfp, &get_parms);
 		if (rc) {
-			BNXT_TF_DBG(ERR, "data field failed\n");
+			BNXT_TF_DBG(ERR, "Get table[%d][%s][%x] failed rc=%d\n",
+				    get_parms.type,
+				    tf_dir_2_str(get_parms.dir),
+				    get_parms.idx, rc);
 			return rc;
 		}
-	}
-
-	/* Get the index details from computed field */
-	if (tbl->index_opcode == BNXT_ULP_INDEX_OPCODE_COMP_FIELD) {
-		idx = ULP_COMP_FLD_IDX_RD(parms, tbl->index_operand);
-	} else if (tbl->index_opcode == BNXT_ULP_INDEX_OPCODE_CONSTANT) {
-		idx = tbl->index_operand;
-	} else {
+		rc = ulp_mapper_tbl_ident_scan_ext(parms, tbl,
+						   res_blob.data,
+						   res_size,
+						   res_blob.byte_order);
+		if (rc)
+			BNXT_TF_DBG(ERR, "Scan and extract failed rc=%d\n", rc);
+		return rc;
+	case BNXT_ULP_IF_TBL_OPC_NOT_USED:
+		return rc; /* skip it */
+	default:
 		BNXT_TF_DBG(ERR, "Invalid tbl index opcode\n");
 		return -EINVAL;
 	}
@@ -2123,98 +2277,20 @@ ulp_mapper_if_tbl_process(struct bnxt_ulp_mapper_parms *parms,
 	return rc;
 }
 
-/*
- * Process the identifier list in the generic table.
- * Extract the ident from the generic table entry and
- * write it to the reg file.
- */
-static int32_t
-ulp_mapper_gen_tbl_ident_scan(struct bnxt_ulp_mapper_parms *parms,
-			      struct bnxt_ulp_mapper_tbl_info *tbl,
-			      struct ulp_mapper_gen_tbl_entry *gen_tbl_ent)
-{
-	struct bnxt_ulp_mapper_ident_info *idents;
-	uint32_t i, idx, num_idents = 0;
-	int32_t rc = 0;
-
-	/* Get the ident list */
-	idents = ulp_mapper_ident_fields_get(parms, tbl, &num_idents);
-
-	for (i = 0; i < num_idents; i++) {
-		/* Extract the index from the result byte data array */
-		rc = ulp_mapper_gen_tbl_entry_data_get(gen_tbl_ent,
-						       idents[i].ident_bit_pos,
-						       idents[i].ident_bit_size,
-						       (uint8_t *)&idx,
-						       sizeof(idx));
-
-		/* validate the extraction */
-		if (rc) {
-			BNXT_TF_DBG(ERR, "failed to read %s:%x:%x\n",
-				    idents[i].description,
-				    idents[i].ident_bit_pos,
-				    idents[i].ident_bit_size);
-			return -EINVAL;
-		}
-
-		/* Write it to the regfile */
-		if (!ulp_regfile_write(parms->regfile,
-				       idents[i].regfile_idx, idx)) {
-			BNXT_TF_DBG(ERR, "Regfile[%d] write failed.\n",
-				    idents[i].regfile_idx);
-			return -EINVAL;
-		}
-	}
-	return 0;
-}
-
-/*
- * Process the identifier list in the generic table.
- * Write the ident to the generic table entry
- */
-static int32_t
-ulp_mapper_gen_tbl_ident_write(struct bnxt_ulp_mapper_parms *parms,
-			       struct bnxt_ulp_mapper_tbl_info *tbl,
-			       struct ulp_mapper_gen_tbl_entry *gen_tbl_ent)
-{
-	struct bnxt_ulp_mapper_ident_info *idents;
-	uint32_t i, num_idents = 0;
-	uint64_t idx;
-
-	/* Get the ident list */
-	idents = ulp_mapper_ident_fields_get(parms, tbl, &num_idents);
-
-	for (i = 0; i < num_idents; i++) {
-		/* read from the regfile */
-		if (!ulp_regfile_read(parms->regfile, idents[i].regfile_idx,
-				      &idx)) {
-			BNXT_TF_DBG(ERR, "Regfile[%d] write failed.\n",
-				    idents[i].regfile_idx);
-			return -EINVAL;
-		}
-
-		/* Update the gen tbl entry with the new data */
-		ulp_mapper_gen_tbl_entry_data_set(gen_tbl_ent,
-						  idents[i].ident_bit_pos,
-						  idents[i].ident_bit_size,
-						  (uint8_t *)&idx);
-	}
-	return 0;
-}
-
 static int32_t
 ulp_mapper_gen_tbl_process(struct bnxt_ulp_mapper_parms *parms,
 			   struct bnxt_ulp_mapper_tbl_info *tbl)
 {
 	struct bnxt_ulp_mapper_key_field_info *kflds;
 	struct ulp_flow_db_res_params fid_parms;
-	struct ulp_mapper_gen_tbl_entry gen_tbl_ent;
+	struct ulp_mapper_gen_tbl_entry gen_tbl_ent, *g;
 	uint16_t tmplen;
-	struct ulp_blob key;
+	struct ulp_blob key, data;
 	uint8_t *cache_key;
 	int32_t tbl_idx;
 	uint32_t i, ckey, num_kflds = 0;
 	uint32_t gen_tbl_hit = 0, fdb_write = 0;
+	uint8_t *byte_data;
 	int32_t rc = 0;
 
 	/* Get the key fields list and build the key. */
@@ -2265,9 +2341,12 @@ ulp_mapper_gen_tbl_process(struct bnxt_ulp_mapper_parms *parms,
 	case BNXT_ULP_GENERIC_TBL_OPC_READ:
 		/* check the reference count */
 		if (ULP_GEN_TBL_REF_CNT(&gen_tbl_ent)) {
+			g = &gen_tbl_ent;
 			/* Scan ident list and create the result blob*/
-			rc = ulp_mapper_gen_tbl_ident_scan(parms, tbl,
-							   &gen_tbl_ent);
+			rc = ulp_mapper_tbl_ident_scan_ext(parms, tbl,
+							   g->byte_data,
+							   g->byte_data_size,
+							   g->byte_order);
 			if (rc) {
 				BNXT_TF_DBG(ERR,
 					    "Failed to scan ident list\n");
@@ -2290,11 +2369,26 @@ ulp_mapper_gen_tbl_process(struct bnxt_ulp_mapper_parms *parms,
 			return -EINVAL; /* success */
 		}
 
-		/* Create the result blob from the ident list */
-		rc = ulp_mapper_gen_tbl_ident_write(parms, tbl, &gen_tbl_ent);
+		/* Initialize the blob data */
+		if (!ulp_blob_init(&data, tbl->result_bit_size,
+				   BNXT_ULP_BYTE_ORDER_BE)) {
+			BNXT_TF_DBG(ERR, "Failed initial index table blob\n");
+			return -EINVAL;
+		}
+
+		/* Get the result fields list */
+		rc = ulp_mapper_tbl_result_build(parms, tbl, &data,
+						 "Gen tbl Result");
 		if (rc) {
-			BNXT_TF_DBG(ERR,
-				    "Failed to write  ident list\n");
+			BNXT_TF_DBG(ERR, "Failed to build the result blob\n");
+			return rc;
+		}
+		byte_data = ulp_blob_data_get(&data, &tmplen);
+		rc = ulp_mapper_gen_tbl_entry_data_set(&gen_tbl_ent, 0,
+						       tmplen, byte_data,
+						       ULP_BITS_2_BYTE(tmplen));
+		if (rc) {
+			BNXT_TF_DBG(ERR, "Failed to write generic table\n");
 			return -EINVAL;
 		}
 
@@ -2310,7 +2404,7 @@ ulp_mapper_gen_tbl_process(struct bnxt_ulp_mapper_parms *parms,
 	/* Set the generic entry hit */
 	rc = ulp_regfile_write(parms->regfile,
 			       BNXT_ULP_REGFILE_INDEX_GENERIC_TBL_HIT,
-			       gen_tbl_hit);
+			       tfp_cpu_to_be_64(gen_tbl_hit));
 	if (!rc) {
 		BNXT_TF_DBG(ERR, "Write regfile[%d] failed\n",
 			    tbl->index_operand);
diff --git a/drivers/net/bnxt/tf_ulp/ulp_template_db_enum.h b/drivers/net/bnxt/tf_ulp/ulp_template_db_enum.h
index ddc396b3f9..b9a81d881b 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_template_db_enum.h
+++ b/drivers/net/bnxt/tf_ulp/ulp_template_db_enum.h
@@ -3,6 +3,8 @@
  * All rights reserved.
  */
 
+/* date: Thu Oct 15 17:28:37 2020 */
+
 #ifndef ULP_TEMPLATE_DB_H_
 #define ULP_TEMPLATE_DB_H_
 
@@ -230,6 +232,26 @@ enum bnxt_ulp_hdr_type {
 	BNXT_ULP_HDR_TYPE_LAST = 3
 };
 
+enum bnxt_ulp_if_tbl_opc {
+	BNXT_ULP_IF_TBL_OPC_NOT_USED = 0,
+	BNXT_ULP_IF_TBL_OPC_WR_COMP_FIELD = 1,
+	BNXT_ULP_IF_TBL_OPC_WR_REGFILE = 2,
+	BNXT_ULP_IF_TBL_OPC_WR_CONST = 3,
+	BNXT_ULP_IF_TBL_OPC_RD_COMP_FIELD = 4,
+	BNXT_ULP_IF_TBL_OPC_LAST = 5
+};
+
+enum bnxt_ulp_index_tbl_opc {
+	BNXT_ULP_INDEX_TBL_OPC_NOT_USED = 0,
+	BNXT_ULP_INDEX_TBL_OPC_ALLOC_REGFILE = 1,
+	BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE = 2,
+	BNXT_ULP_INDEX_TBL_OPC_SRCH_ALLOC_WR_REGFILE = 3,
+	BNXT_ULP_INDEX_TBL_OPC_WR_GLB_REGFILE = 4,
+	BNXT_ULP_INDEX_TBL_OPC_WR_REGFILE = 5,
+	BNXT_ULP_INDEX_TBL_OPC_RD_REGFILE = 6,
+	BNXT_ULP_INDEX_TBL_OPC_LAST = 7
+};
+
 enum bnxt_ulp_index_opcode {
 	BNXT_ULP_INDEX_OPCODE_NOT_USED = 0,
 	BNXT_ULP_INDEX_OPCODE_ALLOCATE = 1,
diff --git a/drivers/net/bnxt/tf_ulp/ulp_template_db_wh_plus_act.c b/drivers/net/bnxt/tf_ulp/ulp_template_db_wh_plus_act.c
index be6149b9ce..73f57409a9 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_template_db_wh_plus_act.c
+++ b/drivers/net/bnxt/tf_ulp/ulp_template_db_wh_plus_act.c
@@ -56,8 +56,8 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_act_tbl_list[] = {
 	.result_num_fields = 1,
 	.encap_num_fields = 0,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_ALLOCATE,
-	.index_operand = BNXT_ULP_REGFILE_INDEX_FLOW_CNTR_PTR_0
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_REGFILE_INDEX_FLOW_CNTR_PTR_0
 	},
 	{
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
@@ -73,7 +73,7 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_act_tbl_list[] = {
 	.result_num_fields = 1,
 	.encap_num_fields = 0,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_ALLOCATE,
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
 	.index_operand = BNXT_ULP_REGFILE_INDEX_MODIFY_IPV4_SRC_PTR_0
 	},
 	{
@@ -90,8 +90,8 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_act_tbl_list[] = {
 	.result_num_fields = 1,
 	.encap_num_fields = 0,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_ALLOCATE,
-	.index_operand = BNXT_ULP_REGFILE_INDEX_MODIFY_IPV4_DST_PTR_0
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_REGFILE_INDEX_MODIFY_IPV4_DST_PTR_0
 	},
 	{
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
@@ -105,8 +105,8 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_act_tbl_list[] = {
 	.result_num_fields = 0,
 	.encap_num_fields = 12,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_GLOBAL,
-	.index_operand = BNXT_ULP_GLB_REGFILE_INDEX_ENCAP_MAC_PTR
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_WR_GLB_REGFILE,
+	.tbl_operand = BNXT_ULP_GLB_REGFILE_INDEX_ENCAP_MAC_PTR
 	},
 	{
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
@@ -121,8 +121,8 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_act_tbl_list[] = {
 	.result_num_fields = 26,
 	.encap_num_fields = 0,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_ALLOCATE,
-	.index_operand = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR
 	},
 	{
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
@@ -137,8 +137,8 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_act_tbl_list[] = {
 	.result_num_fields = 26,
 	.encap_num_fields = 0,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_ALLOCATE,
-	.index_operand = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR
 	},
 	{
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
@@ -154,8 +154,8 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_act_tbl_list[] = {
 	.result_num_fields = 1,
 	.encap_num_fields = 0,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_ALLOCATE,
-	.index_operand = BNXT_ULP_REGFILE_INDEX_FLOW_CNTR_PTR_0
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_REGFILE_INDEX_FLOW_CNTR_PTR_0
 	},
 	{
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
@@ -170,8 +170,8 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_act_tbl_list[] = {
 	.result_num_fields = 26,
 	.encap_num_fields = 0,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_ALLOCATE,
-	.index_operand = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR
 	},
 	{
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
@@ -186,8 +186,8 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_act_tbl_list[] = {
 	.result_num_fields = 26,
 	.encap_num_fields = 0,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_ALLOCATE,
-	.index_operand = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR
 	},
 	{
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
@@ -203,8 +203,8 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_act_tbl_list[] = {
 	.result_num_fields = 1,
 	.encap_num_fields = 0,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_ALLOCATE,
-	.index_operand = BNXT_ULP_REGFILE_INDEX_FLOW_CNTR_PTR_0
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_REGFILE_INDEX_FLOW_CNTR_PTR_0
 	},
 	{
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
@@ -219,8 +219,8 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_act_tbl_list[] = {
 	.result_num_fields = 26,
 	.encap_num_fields = 0,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_ALLOCATE,
-	.index_operand = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR
 	},
 	{
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
@@ -235,8 +235,8 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_act_tbl_list[] = {
 	.result_num_fields = 26,
 	.encap_num_fields = 0,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_ALLOCATE,
-	.index_operand = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR
 	},
 	{
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
@@ -252,8 +252,8 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_act_tbl_list[] = {
 	.result_num_fields = 1,
 	.encap_num_fields = 0,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_ALLOCATE,
-	.index_operand = BNXT_ULP_REGFILE_INDEX_FLOW_CNTR_PTR_0
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_REGFILE_INDEX_FLOW_CNTR_PTR_0
 	},
 	{
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
@@ -269,7 +269,7 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_act_tbl_list[] = {
 	.result_num_fields = 0,
 	.encap_num_fields = 3,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_ALLOCATE,
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
 	.index_operand = BNXT_ULP_REGFILE_INDEX_MAIN_SP_PTR
 	},
 	{
@@ -286,8 +286,8 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_act_tbl_list[] = {
 	.result_num_fields = 0,
 	.encap_num_fields = 3,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_ALLOCATE,
-	.index_operand = BNXT_ULP_REGFILE_INDEX_MAIN_SP_PTR
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_REGFILE_INDEX_MAIN_SP_PTR
 	},
 	{
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
@@ -301,8 +301,8 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_act_tbl_list[] = {
 	.result_num_fields = 0,
 	.encap_num_fields = 12,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_ALLOCATE,
-	.index_operand = BNXT_ULP_REGFILE_INDEX_ENCAP_PTR_0
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_REGFILE_INDEX_ENCAP_PTR_0
 	},
 	{
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
@@ -317,8 +317,8 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_act_tbl_list[] = {
 	.result_num_fields = 26,
 	.encap_num_fields = 12,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_ALLOCATE,
-	.index_operand = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR
 	},
 	{
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
@@ -333,8 +333,8 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_act_tbl_list[] = {
 	.result_num_fields = 26,
 	.encap_num_fields = 0,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_ALLOCATE,
-	.index_operand = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR
 	},
 	{
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
@@ -350,8 +350,8 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_act_tbl_list[] = {
 	.result_num_fields = 1,
 	.encap_num_fields = 0,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_ALLOCATE,
-	.index_operand = BNXT_ULP_REGFILE_INDEX_FLOW_CNTR_PTR_0
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_REGFILE_INDEX_FLOW_CNTR_PTR_0
 	},
 	{
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
@@ -367,8 +367,8 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_act_tbl_list[] = {
 	.result_num_fields = 1,
 	.encap_num_fields = 0,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_ALLOCATE,
-	.index_operand = BNXT_ULP_REGFILE_INDEX_MODIFY_IPV4_SRC_PTR_0
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_REGFILE_INDEX_MODIFY_IPV4_SRC_PTR_0
 	},
 	{
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
@@ -384,7 +384,7 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_act_tbl_list[] = {
 	.result_num_fields = 1,
 	.encap_num_fields = 0,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_ALLOCATE,
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
 	.index_operand = BNXT_ULP_REGFILE_INDEX_MODIFY_IPV4_DST_PTR_0
 	},
 	{
@@ -400,8 +400,8 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_act_tbl_list[] = {
 	.result_num_fields = 0,
 	.encap_num_fields = 12,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_GLOBAL,
-	.index_operand = BNXT_ULP_GLB_REGFILE_INDEX_ENCAP_MAC_PTR
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_WR_GLB_REGFILE,
+	.tbl_operand = BNXT_ULP_GLB_REGFILE_INDEX_ENCAP_MAC_PTR
 	},
 	{
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
@@ -416,8 +416,8 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_act_tbl_list[] = {
 	.result_num_fields = 26,
 	.encap_num_fields = 0,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_ALLOCATE,
-	.index_operand = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR
 	},
 	{
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
@@ -432,8 +432,8 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_act_tbl_list[] = {
 	.result_num_fields = 26,
 	.encap_num_fields = 11,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_ALLOCATE,
-	.index_operand = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR
 	},
 	{
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
@@ -449,8 +449,8 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_act_tbl_list[] = {
 	.result_num_fields = 1,
 	.encap_num_fields = 0,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_ALLOCATE,
-	.index_operand = BNXT_ULP_REGFILE_INDEX_FLOW_CNTR_PTR_0
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_REGFILE_INDEX_FLOW_CNTR_PTR_0
 	},
 	{
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
@@ -467,7 +467,7 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_act_tbl_list[] = {
 	.result_num_fields = 0,
 	.encap_num_fields = 12,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_ALLOCATE,
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
 	.index_operand = BNXT_ULP_REGFILE_INDEX_ENCAP_PTR_0
 	},
 	{
@@ -483,8 +483,8 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_act_tbl_list[] = {
 	.result_num_fields = 26,
 	.encap_num_fields = 0,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_ALLOCATE,
-	.index_operand = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR
 	},
 	{
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
@@ -501,8 +501,8 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_act_tbl_list[] = {
 	.result_num_fields = 26,
 	.encap_num_fields = 0,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_ALLOCATE,
-	.index_operand = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR
 	},
 	{
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
@@ -519,8 +519,8 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_act_tbl_list[] = {
 	.result_num_fields = 26,
 	.encap_num_fields = 11,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_ALLOCATE,
-	.index_operand = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR
 	}
 };
 
diff --git a/drivers/net/bnxt/tf_ulp/ulp_template_db_wh_plus_class.c b/drivers/net/bnxt/tf_ulp/ulp_template_db_wh_plus_class.c
index a505337bb2..0cd9518e2a 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_template_db_wh_plus_class.c
+++ b/drivers/net/bnxt/tf_ulp/ulp_template_db_wh_plus_class.c
@@ -202,8 +202,8 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_class_tbl_list[] = {
 	.result_num_fields = 26,
 	.encap_num_fields = 0,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_ALLOCATE,
-	.index_operand = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR
 	},
 	{ /* class_tid: 1, wh_plus, table: l2_cntxt_cache_0 */
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_INVALID,
@@ -250,8 +250,8 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_class_tbl_list[] = {
 	.result_bit_size = 32,
 	.result_num_fields = 1,
 	.encap_num_fields = 0,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_COMP_FIELD,
-	.index_operand = BNXT_ULP_CF_IDX_PHY_PORT_PARIF
+	.tbl_opcode = BNXT_ULP_IF_TBL_OPC_WR_COMP_FIELD,
+	.tbl_operand = BNXT_ULP_CF_IDX_PHY_PORT_PARIF,
 	},
 	{ /* class_tid: 1, wh_plus, table: parif_def_arec_ptr_0 */
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_IF_TABLE,
@@ -261,8 +261,8 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_class_tbl_list[] = {
 	.result_bit_size = 32,
 	.result_num_fields = 1,
 	.encap_num_fields = 0,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_COMP_FIELD,
-	.index_operand = BNXT_ULP_CF_IDX_PHY_PORT_PARIF
+	.tbl_opcode = BNXT_ULP_IF_TBL_OPC_WR_COMP_FIELD,
+	.tbl_operand = BNXT_ULP_CF_IDX_PHY_PORT_PARIF
 	},
 	{ /* class_tid: 1, wh_plus, table: parif_def_err_arec_ptr_0 */
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_IF_TABLE,
@@ -272,8 +272,8 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_class_tbl_list[] = {
 	.result_bit_size = 32,
 	.result_num_fields = 1,
 	.encap_num_fields = 0,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_COMP_FIELD,
-	.index_operand = BNXT_ULP_CF_IDX_PHY_PORT_PARIF
+	.tbl_opcode = BNXT_ULP_IF_TBL_OPC_WR_COMP_FIELD,
+	.tbl_operand = BNXT_ULP_CF_IDX_PHY_PORT_PARIF
 	},
 	{ /* class_tid: 2, wh_plus, table: int_full_act_record_0 */
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
@@ -287,8 +287,8 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_class_tbl_list[] = {
 	.result_num_fields = 26,
 	.encap_num_fields = 0,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_ALLOCATE,
-	.index_operand = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR
 	},
 	{ /* class_tid: 2, wh_plus, table: l2_cntxt_tcam_vfr_0 */
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,
@@ -361,8 +361,8 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_class_tbl_list[] = {
 	.result_bit_size = 32,
 	.result_num_fields = 1,
 	.encap_num_fields = 0,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_COMP_FIELD,
-	.index_operand = BNXT_ULP_CF_IDX_DRV_FUNC_PARIF
+	.tbl_opcode = BNXT_ULP_IF_TBL_OPC_WR_COMP_FIELD,
+	.tbl_operand = BNXT_ULP_CF_IDX_DRV_FUNC_PARIF
 	},
 	{ /* class_tid: 2, wh_plus, table: parif_def_arec_ptr_0 */
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_IF_TABLE,
@@ -372,8 +372,8 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_class_tbl_list[] = {
 	.result_bit_size = 32,
 	.result_num_fields = 1,
 	.encap_num_fields = 0,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_COMP_FIELD,
-	.index_operand = BNXT_ULP_CF_IDX_DRV_FUNC_PARIF
+	.tbl_opcode = BNXT_ULP_IF_TBL_OPC_WR_COMP_FIELD,
+	.tbl_operand = BNXT_ULP_CF_IDX_DRV_FUNC_PARIF
 	},
 	{ /* class_tid: 2, wh_plus, table: parif_def_err_arec_ptr_0 */
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_IF_TABLE,
@@ -383,8 +383,8 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_class_tbl_list[] = {
 	.result_bit_size = 32,
 	.result_num_fields = 1,
 	.encap_num_fields = 0,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_COMP_FIELD,
-	.index_operand = BNXT_ULP_CF_IDX_DRV_FUNC_PARIF
+	.tbl_opcode = BNXT_ULP_IF_TBL_OPC_WR_COMP_FIELD,
+	.tbl_operand = BNXT_ULP_CF_IDX_DRV_FUNC_PARIF
 	},
 	{ /* class_tid: 3, wh_plus, table: egr_int_vtag_encap_record_0 */
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
@@ -398,8 +398,8 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_class_tbl_list[] = {
 	.result_num_fields = 0,
 	.encap_num_fields = 12,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_ALLOCATE,
-	.index_operand = BNXT_ULP_REGFILE_INDEX_ENCAP_PTR_0
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_REGFILE_INDEX_ENCAP_PTR_0
 	},
 	{ /* class_tid: 3, wh_plus, table: egr_int_full_act_record_0 */
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
@@ -413,8 +413,8 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_class_tbl_list[] = {
 	.result_num_fields = 26,
 	.encap_num_fields = 0,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_ALLOCATE,
-	.index_operand = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR
 	},
 	{ /* class_tid: 3, wh_plus, table: egr_l2_cntxt_cache_0 */
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_INVALID,
@@ -465,8 +465,8 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_class_tbl_list[] = {
 	.result_num_fields = 26,
 	.encap_num_fields = 0,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_ALLOCATE,
-	.index_operand = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR
 	},
 	{ /* class_tid: 3, wh_plus, table: ing_l2_cntxt_dtagged_0 */
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,
@@ -551,8 +551,8 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_class_tbl_list[] = {
 	.result_bit_size = 32,
 	.result_num_fields = 1,
 	.encap_num_fields = 0,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_CONSTANT,
-	.index_operand = BNXT_ULP_SYM_VF_FUNC_PARIF
+	.tbl_opcode = BNXT_ULP_IF_TBL_OPC_WR_CONST,
+	.tbl_operand = BNXT_ULP_SYM_VF_FUNC_PARIF
 	},
 	{ /* class_tid: 4, wh_plus, table: egr_parif_def_arec_ptr_0 */
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_IF_TABLE,
@@ -562,8 +562,8 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_class_tbl_list[] = {
 	.result_bit_size = 32,
 	.result_num_fields = 1,
 	.encap_num_fields = 0,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_CONSTANT,
-	.index_operand = BNXT_ULP_SYM_VF_FUNC_PARIF
+	.tbl_opcode = BNXT_ULP_IF_TBL_OPC_WR_CONST,
+	.tbl_operand = BNXT_ULP_SYM_VF_FUNC_PARIF
 	},
 	{ /* class_tid: 4, wh_plus, table: egr_parif_def_err_arec_ptr_0 */
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_IF_TABLE,
@@ -573,8 +573,8 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_class_tbl_list[] = {
 	.result_bit_size = 32,
 	.result_num_fields = 1,
 	.encap_num_fields = 0,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_CONSTANT,
-	.index_operand = BNXT_ULP_SYM_VF_FUNC_PARIF
+	.tbl_opcode = BNXT_ULP_IF_TBL_OPC_WR_CONST,
+	.tbl_operand = BNXT_ULP_SYM_VF_FUNC_PARIF
 	},
 	{ /* class_tid: 4, wh_plus, table: ing_int_full_act_record_0 */
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
@@ -588,8 +588,8 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_class_tbl_list[] = {
 	.result_num_fields = 26,
 	.encap_num_fields = 0,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_SET_VFR_FLAG,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_ALLOCATE,
-	.index_operand = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR
 	},
 	{ /* class_tid: 4, wh_plus, table: ing_l2_cntxt_tcam_0 */
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,
@@ -623,8 +623,9 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_class_tbl_list[] = {
 	.result_num_fields = 26,
 	.encap_num_fields = 0,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_GLOBAL,
-	.index_operand = BNXT_ULP_GLB_REGFILE_INDEX_GLB_LB_AREC_PTR
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_WR_GLB_REGFILE,
+	.tbl_operand = BNXT_ULP_GLB_REGFILE_INDEX_GLB_LB_AREC_PTR,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP
 	},
 	{ /* class_tid: 6, wh_plus, table: l2_cntxt_tcam_0 */
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,
@@ -1824,8 +1825,8 @@ struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_class_tbl_list[] = {
 	.result_num_fields = 1,
 	.encap_num_fields = 0,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
-	.index_opcode = BNXT_ULP_INDEX_OPCODE_ALLOCATE,
-	.index_operand = BNXT_ULP_REGFILE_INDEX_FLOW_CNTR_PTR_0
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_REGFILE_INDEX_FLOW_CNTR_PTR_0
 	},
 	{ /* class_tid: 18, wh_plus, table: l2_cntxt_tcam_0 */
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,
-- 
2.17.1


  parent reply	other threads:[~2021-05-30  9:04 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 ` Venkat Duvvuru [this message]
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   ` [dpdk-dev] [PATCH v2 02/58] net/bnxt: add base TRUFLOW support for Thor Ajit Khaparde
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=20210530085929.29695-33-venkatkumar.duvvuru@broadcom.com \
    --to=venkatkumar.duvvuru@broadcom.com \
    --cc=dev@dpdk.org \
    --cc=kishore.padmanabha@broadcom.com \
    --cc=michael.baucom@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).