[v4,22/25] net/bnxt: add vfr flag to the mark manager

Message ID 20200627100050.19688-23-ajit.khaparde@broadcom.com (mailing list archive)
State Accepted, archived
Delegated to: Ajit Khaparde
Headers
Series bnxt patches |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Ajit Khaparde June 27, 2020, 10 a.m. UTC
  From: Kishore Padmanabha <kishore.padmanabha@broadcom.com>

Add support for the vfr flag to the mark manager.
The vf representor flag is added to class table so it can be set in
the template details.
Also added the vfr flag process in mark database.

Signed-off-by: Kishore Padmanabha <kishore.padmanabha@broadcom.com>
Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
Reviewed-by: Mike Baucom <michael.baucom@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt_rxr.c                   |  3 +-
 drivers/net/bnxt/tf_ulp/ulp_mapper.c          | 67 +++++++++++++++++--
 drivers/net/bnxt/tf_ulp/ulp_mark_mgr.c        |  7 ++
 drivers/net/bnxt/tf_ulp/ulp_mark_mgr.h        |  3 +
 drivers/net/bnxt/tf_ulp/ulp_template_db.c     |  5 ++
 drivers/net/bnxt/tf_ulp/ulp_template_db.h     |  9 ++-
 .../net/bnxt/tf_ulp/ulp_template_db_class.c   | 30 ++++-----
 .../net/bnxt/tf_ulp/ulp_template_db_enum.h    | 15 ++---
 drivers/net/bnxt/tf_ulp/ulp_template_struct.h |  3 +-
 9 files changed, 108 insertions(+), 34 deletions(-)
  

Patch

diff --git a/drivers/net/bnxt/bnxt_rxr.c b/drivers/net/bnxt/bnxt_rxr.c
index 9a5ac39fa..11807f409 100644
--- a/drivers/net/bnxt/bnxt_rxr.c
+++ b/drivers/net/bnxt/bnxt_rxr.c
@@ -414,6 +414,7 @@  bnxt_ulp_set_mark_in_mbuf(struct bnxt *bp, struct rx_pkt_cmpl_hi *rxcmp1,
 	uint32_t flags2;
 	uint32_t gfid_support = 0;
 	int rc;
+	uint32_t vfr_flag;
 
 
 	if (BNXT_GFID_ENABLED(bp))
@@ -483,7 +484,7 @@  bnxt_ulp_set_mark_in_mbuf(struct bnxt *bp, struct rx_pkt_cmpl_hi *rxcmp1,
 	}
 
 	rc = ulp_mark_db_mark_get(bp->ulp_ctx, gfid,
-				  cfa_code, &mark_id);
+				  cfa_code, &vfr_flag, &mark_id);
 	if (!rc) {
 		/* Got the mark, write it to the mbuf and return */
 		mbuf->hash.fdir.hi = mark_id;
diff --git a/drivers/net/bnxt/tf_ulp/ulp_mapper.c b/drivers/net/bnxt/tf_ulp/ulp_mapper.c
index 15c5f5177..d60b1f14f 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_mapper.c
+++ b/drivers/net/bnxt/tf_ulp/ulp_mapper.c
@@ -904,13 +904,15 @@  ulp_mapper_mark_gfid_process(struct bnxt_ulp_mapper_parms *parms,
 			     struct bnxt_ulp_mapper_tbl_info *tbl,
 			     uint64_t flow_id)
 {
+	enum bnxt_ulp_mark_db_opcode mark_op = tbl->mark_db_opcode;
 	struct ulp_flow_db_res_params fid_parms;
 	uint32_t mark, gfid, mark_flag;
 	int32_t rc = 0;
 
-	if (!(tbl->mark_enable &&
+	if (mark_op == BNXT_ULP_MARK_DB_OPCODE_NOP ||
+	    !(mark_op == BNXT_ULP_MARK_DB_OPCODE_SET_IF_MARK_ACTION &&
 	      ULP_BITMAP_ISSET(parms->act_bitmap->bits,
-			      BNXT_ULP_ACTION_BIT_MARK)))
+			       BNXT_ULP_ACTION_BIT_MARK)))
 		return rc; /* no need to perform gfid process */
 
 	/* Get the mark id details from action property */
@@ -944,14 +946,16 @@  static int32_t
 ulp_mapper_mark_act_ptr_process(struct bnxt_ulp_mapper_parms *parms,
 				struct bnxt_ulp_mapper_tbl_info *tbl)
 {
+	enum bnxt_ulp_mark_db_opcode mark_op = tbl->mark_db_opcode;
 	struct ulp_flow_db_res_params fid_parms;
 	uint32_t act_idx, mark, mark_flag;
 	uint64_t val64;
 	int32_t rc = 0;
 
-	if (!(tbl->mark_enable &&
+	if (mark_op == BNXT_ULP_MARK_DB_OPCODE_NOP ||
+	    !(mark_op == BNXT_ULP_MARK_DB_OPCODE_SET_IF_MARK_ACTION &&
 	      ULP_BITMAP_ISSET(parms->act_bitmap->bits,
-				BNXT_ULP_ACTION_BIT_MARK)))
+			       BNXT_ULP_ACTION_BIT_MARK)))
 		return rc; /* no need to perform mark action process */
 
 	/* Get the mark id details from action property */
@@ -987,6 +991,55 @@  ulp_mapper_mark_act_ptr_process(struct bnxt_ulp_mapper_parms *parms,
 	return rc;
 }
 
+static int32_t
+ulp_mapper_mark_vfr_idx_process(struct bnxt_ulp_mapper_parms *parms,
+				struct bnxt_ulp_mapper_tbl_info *tbl)
+{
+	struct ulp_flow_db_res_params fid_parms;
+	uint32_t act_idx, mark, mark_flag;
+	uint64_t val64;
+	enum bnxt_ulp_mark_db_opcode mark_op = tbl->mark_db_opcode;
+	int32_t rc = 0;
+
+	if (mark_op == BNXT_ULP_MARK_DB_OPCODE_NOP ||
+	    mark_op == BNXT_ULP_MARK_DB_OPCODE_SET_IF_MARK_ACTION)
+		return rc; /* no need to perform mark action process */
+
+	/* Get the mark id details from the computed field of dev port id */
+	mark = ULP_COMP_FLD_IDX_RD(parms, BNXT_ULP_CF_IDX_DEV_PORT_ID);
+
+	 /* Get the main action pointer */
+	if (!ulp_regfile_read(parms->regfile,
+			      BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR,
+			      &val64)) {
+		BNXT_TF_DBG(ERR, "read action ptr main failed\n");
+		return -EINVAL;
+	}
+	act_idx = tfp_be_to_cpu_64(val64);
+
+	/* Set the mark flag to local fid and vfr flag */
+	mark_flag  = BNXT_ULP_MARK_LOCAL_HW_FID | BNXT_ULP_MARK_VFR_ID;
+
+	rc = ulp_mark_db_mark_add(parms->ulp_ctx, mark_flag,
+				  act_idx, mark);
+	if (rc) {
+		BNXT_TF_DBG(ERR, "Failed to add mark to flow\n");
+		return rc;
+	}
+	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.resource_type	= mark_flag;
+	fid_parms.resource_hndl	= act_idx;
+	rc = ulp_flow_db_resource_add(parms->ulp_ctx,
+				      parms->tbl_idx,
+				      parms->fid,
+				      &fid_parms);
+	if (rc)
+		BNXT_TF_DBG(ERR, "Fail to link res to flow rc = %d\n", rc);
+	return rc;
+}
+
 static int32_t
 ulp_mapper_tcam_tbl_process(struct bnxt_ulp_mapper_parms *parms,
 			    struct bnxt_ulp_mapper_tbl_info *tbl)
@@ -1520,6 +1573,12 @@  ulp_mapper_index_tbl_process(struct bnxt_ulp_mapper_parms *parms,
 		goto error;
 	}
 
+	/* Perform the VF rep action */
+	rc = ulp_mapper_mark_vfr_idx_process(parms, tbl);
+	if (rc) {
+		BNXT_TF_DBG(ERR, "Failed to add vfr mark rc = %d\n", rc);
+		goto error;
+	}
 	return rc;
 error:
 	/*
diff --git a/drivers/net/bnxt/tf_ulp/ulp_mark_mgr.c b/drivers/net/bnxt/tf_ulp/ulp_mark_mgr.c
index 04d441da7..0c477680c 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_mark_mgr.c
+++ b/drivers/net/bnxt/tf_ulp/ulp_mark_mgr.c
@@ -18,6 +18,8 @@ 
 						BNXT_ULP_MARK_VALID)
 #define ULP_MARK_DB_ENTRY_IS_INVALID(mark_info) (!((mark_info)->flags &\
 						   BNXT_ULP_MARK_VALID))
+#define ULP_MARK_DB_ENTRY_IS_VFR_ID(mark_info) ((mark_info)->flags &\
+						BNXT_ULP_MARK_VFR_ID)
 #define ULP_MARK_DB_ENTRY_IS_GLOBAL_HW_FID(mark_info) ((mark_info)->flags &\
 						BNXT_ULP_MARK_GLOBAL_HW_FID)
 
@@ -153,6 +155,8 @@  ulp_mark_db_deinit(struct bnxt_ulp_context *ctxt)
  *
  * fid [in] The flow id that is returned by HW in BD
  *
+ * vfr_flag [out].it indicatesif mark is vfr_id or mark id
+ *
  * mark [out] The mark that is associated with the FID
  *
  */
@@ -160,6 +164,7 @@  int32_t
 ulp_mark_db_mark_get(struct bnxt_ulp_context *ctxt,
 		     bool is_gfid,
 		     uint32_t fid,
+		     uint32_t *vfr_flag,
 		     uint32_t *mark)
 {
 	struct bnxt_ulp_mark_tbl *mtbl;
@@ -184,6 +189,7 @@  ulp_mark_db_mark_get(struct bnxt_ulp_context *ctxt,
 		BNXT_TF_DBG(DEBUG, "Get GFID[0x%0x] = 0x%0x\n",
 			    idx, mtbl->gfid_tbl[idx].mark_id);
 
+		*vfr_flag = ULP_MARK_DB_ENTRY_IS_VFR_ID(&mtbl->gfid_tbl[idx]);
 		*mark = mtbl->gfid_tbl[idx].mark_id;
 	} else {
 		if (idx >= mtbl->lfid_num_entries ||
@@ -193,6 +199,7 @@  ulp_mark_db_mark_get(struct bnxt_ulp_context *ctxt,
 		BNXT_TF_DBG(DEBUG, "Get LFID[0x%0x] = 0x%0x\n",
 			    idx, mtbl->lfid_tbl[idx].mark_id);
 
+		*vfr_flag = ULP_MARK_DB_ENTRY_IS_VFR_ID(&mtbl->lfid_tbl[idx]);
 		*mark = mtbl->lfid_tbl[idx].mark_id;
 	}
 
diff --git a/drivers/net/bnxt/tf_ulp/ulp_mark_mgr.h b/drivers/net/bnxt/tf_ulp/ulp_mark_mgr.h
index b55832a28..9696730cc 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_mark_mgr.h
+++ b/drivers/net/bnxt/tf_ulp/ulp_mark_mgr.h
@@ -68,6 +68,8 @@  ulp_mark_db_deinit(struct bnxt_ulp_context *ctxt);
  *
  * fid [in] The flow id that is returned by HW in BD
  *
+ * vfr_flag [out].it indicatesif mark is vfr_id or mark id
+ *
  * mark [out] The mark that is associated with the FID
  *
  */
@@ -75,6 +77,7 @@  int32_t
 ulp_mark_db_mark_get(struct bnxt_ulp_context *ctxt,
 		     bool is_gfid,
 		     uint32_t fid,
+		     uint32_t *vfr_flag,
 		     uint32_t *mark);
 
 /*
diff --git a/drivers/net/bnxt/tf_ulp/ulp_template_db.c b/drivers/net/bnxt/tf_ulp/ulp_template_db.c
index aeed56105..97ca6f1e4 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_template_db.c
+++ b/drivers/net/bnxt/tf_ulp/ulp_template_db.c
@@ -668,6 +668,8 @@  struct bnxt_ulp_mapper_tbl_info ulp_class_tbl_list[] = {
 	.mark_enable = BNXT_ULP_MARK_ENABLE_NO,
 	.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_NO,
 	.regfile_idx = BNXT_ULP_REGFILE_INDEX_NOT_USED
+	.vfr_flag = BNXT_ULP_VFR_FLAG_NO,
+	.regfile_wr_idx = BNXT_ULP_REGFILE_INDEX_NOT_USED
 	},
 	{
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,
@@ -690,6 +692,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_class_tbl_list[] = {
 	.mark_enable = BNXT_ULP_MARK_ENABLE_NO,
 	.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_NO,
 	.regfile_idx = BNXT_ULP_REGFILE_INDEX_NOT_USED
+	.vfr_flag = BNXT_ULP_VFR_FLAG_NO,
 	},
 	{
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_CACHE_TABLE,
@@ -712,6 +715,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_class_tbl_list[] = {
 	.mark_enable = BNXT_ULP_MARK_ENABLE_NO,
 	.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_NO,
 	.regfile_idx = BNXT_ULP_REGFILE_INDEX_NOT_USED
+	.vfr_flag = BNXT_ULP_VFR_FLAG_NO,
 	},
 	{
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,
@@ -734,6 +738,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_class_tbl_list[] = {
 	.mark_enable = BNXT_ULP_MARK_ENABLE_NO,
 	.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_NO,
 	.regfile_idx = BNXT_ULP_REGFILE_INDEX_NOT_USED
+	.vfr_flag = BNXT_ULP_VFR_FLAG_NO,
 	},
 	{
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_EM_TABLE,
diff --git a/drivers/net/bnxt/tf_ulp/ulp_template_db.h b/drivers/net/bnxt/tf_ulp/ulp_template_db.h
index 881586a1e..24b71b334 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_template_db.h
+++ b/drivers/net/bnxt/tf_ulp/ulp_template_db.h
@@ -117,8 +117,7 @@  enum bnxt_ulp_cf_idx {
 	BNXT_ULP_CF_IDX_PHY_PORT_SPIF = 25,
 	BNXT_ULP_CF_IDX_PHY_PORT_PARIF = 26,
 	BNXT_ULP_CF_IDX_PHY_PORT_VPORT = 27,
-	BNXT_ULP_CF_IDX_VFR_FLAG = 28,
-	BNXT_ULP_CF_IDX_LAST = 29
+	BNXT_ULP_CF_IDX_LAST = 28
 };
 
 enum bnxt_ulp_critical_resource {
@@ -258,6 +257,12 @@  enum bnxt_ulp_encap_vtag_encoding {
 	BNXT_ULP_ENCAP_VTAG_ENCODING_STAG_REMAP_DIFFSERV = 3
 };
 
+enum bnxt_ulp_vfr_flag {
+	BNXT_ULP_VFR_FLAG_NO = 0,
+	BNXT_ULP_VFR_FLAG_YES = 1,
+	BNXT_ULP_VFR_FLAG_LAST = 2
+};
+
 enum bnxt_ulp_fdb_resource_flags {
 	BNXT_ULP_FDB_RESOURCE_FLAGS_DIR_EGR = 0x01,
 	BNXT_ULP_FDB_RESOURCE_FLAGS_DIR_INGR = 0x00
diff --git a/drivers/net/bnxt/tf_ulp/ulp_template_db_class.c b/drivers/net/bnxt/tf_ulp/ulp_template_db_class.c
index 802e6aad8..aac4d79fd 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_template_db_class.c
+++ b/drivers/net/bnxt/tf_ulp/ulp_template_db_class.c
@@ -112,7 +112,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_class_tbl_list[] = {
 	.encap_num_fields = 0,
 	.ident_start_idx = 0,
 	.ident_nums = 1,
-	.mark_enable = BNXT_ULP_MARK_ENABLE_NO,
+	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
 	.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_NO,
 	.regfile_idx = BNXT_ULP_REGFILE_INDEX_NOT_USED
 	},
@@ -134,7 +134,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_class_tbl_list[] = {
 	.encap_num_fields = 0,
 	.ident_start_idx = 1,
 	.ident_nums = 0,
-	.mark_enable = BNXT_ULP_MARK_ENABLE_NO,
+	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
 	.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_NO,
 	.regfile_idx = BNXT_ULP_REGFILE_INDEX_NOT_USED
 	},
@@ -156,7 +156,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_class_tbl_list[] = {
 	.encap_num_fields = 0,
 	.ident_start_idx = 1,
 	.ident_nums = 1,
-	.mark_enable = BNXT_ULP_MARK_ENABLE_NO,
+	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
 	.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_NO,
 	.regfile_idx = BNXT_ULP_REGFILE_INDEX_NOT_USED
 	},
@@ -178,7 +178,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_class_tbl_list[] = {
 	.encap_num_fields = 0,
 	.ident_start_idx = 2,
 	.ident_nums = 0,
-	.mark_enable = BNXT_ULP_MARK_ENABLE_NO,
+	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
 	.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_NO,
 	.regfile_idx = BNXT_ULP_REGFILE_INDEX_NOT_USED
 	},
@@ -200,7 +200,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_class_tbl_list[] = {
 	.encap_num_fields = 0,
 	.ident_start_idx = 2,
 	.ident_nums = 0,
-	.mark_enable = BNXT_ULP_MARK_ENABLE_YES,
+	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_SET_IF_MARK_ACTION,
 	.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_YES,
 	.regfile_idx = BNXT_ULP_REGFILE_INDEX_NOT_USED
 	},
@@ -222,7 +222,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_class_tbl_list[] = {
 	.encap_num_fields = 0,
 	.ident_start_idx = 2,
 	.ident_nums = 1,
-	.mark_enable = BNXT_ULP_MARK_ENABLE_NO,
+	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
 	.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_NO,
 	.regfile_idx = BNXT_ULP_REGFILE_INDEX_NOT_USED
 	},
@@ -244,7 +244,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_class_tbl_list[] = {
 	.encap_num_fields = 0,
 	.ident_start_idx = 3,
 	.ident_nums = 0,
-	.mark_enable = BNXT_ULP_MARK_ENABLE_NO,
+	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
 	.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_NO,
 	.regfile_idx = BNXT_ULP_REGFILE_INDEX_NOT_USED
 	},
@@ -266,7 +266,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_class_tbl_list[] = {
 	.encap_num_fields = 0,
 	.ident_start_idx = 3,
 	.ident_nums = 1,
-	.mark_enable = BNXT_ULP_MARK_ENABLE_NO,
+	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
 	.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_NO,
 	.regfile_idx = BNXT_ULP_REGFILE_INDEX_NOT_USED
 	},
@@ -288,7 +288,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_class_tbl_list[] = {
 	.encap_num_fields = 0,
 	.ident_start_idx = 4,
 	.ident_nums = 0,
-	.mark_enable = BNXT_ULP_MARK_ENABLE_NO,
+	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
 	.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_NO,
 	.regfile_idx = BNXT_ULP_REGFILE_INDEX_NOT_USED
 	},
@@ -310,7 +310,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_class_tbl_list[] = {
 	.encap_num_fields = 0,
 	.ident_start_idx = 4,
 	.ident_nums = 0,
-	.mark_enable = BNXT_ULP_MARK_ENABLE_YES,
+	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_SET_IF_MARK_ACTION,
 	.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_YES,
 	.regfile_idx = BNXT_ULP_REGFILE_INDEX_NOT_USED
 	},
@@ -332,7 +332,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_class_tbl_list[] = {
 	.encap_num_fields = 0,
 	.ident_start_idx = 4,
 	.ident_nums = 1,
-	.mark_enable = BNXT_ULP_MARK_ENABLE_NO,
+	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_SET_IF_MARK_ACTION,
 	.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_NO,
 	.regfile_idx = BNXT_ULP_REGFILE_INDEX_NOT_USED
 	},
@@ -354,7 +354,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_class_tbl_list[] = {
 	.encap_num_fields = 0,
 	.ident_start_idx = 5,
 	.ident_nums = 0,
-	.mark_enable = BNXT_ULP_MARK_ENABLE_NO,
+	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
 	.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_NO,
 	.regfile_idx = BNXT_ULP_REGFILE_INDEX_NOT_USED
 	},
@@ -376,7 +376,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_class_tbl_list[] = {
 	.encap_num_fields = 0,
 	.ident_start_idx = 5,
 	.ident_nums = 1,
-	.mark_enable = BNXT_ULP_MARK_ENABLE_NO,
+	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
 	.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_NO,
 	.regfile_idx = BNXT_ULP_REGFILE_INDEX_NOT_USED
 	},
@@ -398,7 +398,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_class_tbl_list[] = {
 	.encap_num_fields = 0,
 	.ident_start_idx = 6,
 	.ident_nums = 0,
-	.mark_enable = BNXT_ULP_MARK_ENABLE_NO,
+	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP,
 	.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_NO,
 	.regfile_idx = BNXT_ULP_REGFILE_INDEX_NOT_USED
 	},
@@ -420,7 +420,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_class_tbl_list[] = {
 	.encap_num_fields = 0,
 	.ident_start_idx = 6,
 	.ident_nums = 0,
-	.mark_enable = BNXT_ULP_MARK_ENABLE_YES,
+	.mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_SET_IF_MARK_ACTION,
 	.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_YES,
 	.regfile_idx = BNXT_ULP_REGFILE_INDEX_NOT_USED
 	}
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 7f280fdf2..537624577 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_template_db_enum.h
+++ b/drivers/net/bnxt/tf_ulp/ulp_template_db_enum.h
@@ -151,10 +151,11 @@  enum bnxt_ulp_hdr_type {
 	BNXT_ULP_HDR_TYPE_LAST = 3
 };
 
-enum bnxt_ulp_mark_enable {
-	BNXT_ULP_MARK_ENABLE_NO = 0,
-	BNXT_ULP_MARK_ENABLE_YES = 1,
-	BNXT_ULP_MARK_ENABLE_LAST = 2
+enum bnxt_ulp_mark_db_opcode {
+	BNXT_ULP_MARK_DB_OPCODE_NOP = 0,
+	BNXT_ULP_MARK_DB_OPCODE_SET_IF_MARK_ACTION = 1,
+	BNXT_ULP_MARK_DB_OPCODE_SET_VFR_FLAG = 2,
+	BNXT_ULP_MARK_DB_OPCODE_LAST = 3
 };
 
 enum bnxt_ulp_mapper_opc {
@@ -214,12 +215,6 @@  enum bnxt_ulp_search_before_alloc {
 	BNXT_ULP_SEARCH_BEFORE_ALLOC_LAST = 2
 };
 
-enum bnxt_ulp_vfr_flag {
-	BNXT_ULP_VFR_FLAG_NO = 0,
-	BNXT_ULP_VFR_FLAG_YES = 1,
-	BNXT_ULP_VFR_FLAG_LAST = 2
-};
-
 enum bnxt_ulp_fdb_resource_flags {
 	BNXT_ULP_FDB_RESOURCE_FLAGS_DIR_EGR = 0x01,
 	BNXT_ULP_FDB_RESOURCE_FLAGS_DIR_INGR = 0x00
diff --git a/drivers/net/bnxt/tf_ulp/ulp_template_struct.h b/drivers/net/bnxt/tf_ulp/ulp_template_struct.h
index 81f2aa7c4..5d11a7ec4 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_template_struct.h
+++ b/drivers/net/bnxt/tf_ulp/ulp_template_struct.h
@@ -181,9 +181,8 @@  struct bnxt_ulp_mapper_tbl_info {
 	uint32_t	ident_start_idx;
 	uint16_t	ident_nums;
 
-	uint8_t		mark_enable;
-	enum bnxt_ulp_regfile_index	regfile_wr_idx;
 	enum bnxt_ulp_regfile_index	regfile_idx;
+	enum bnxt_ulp_mark_db_opcode	mark_db_opcode;
 };
 
 struct bnxt_ulp_mapper_class_key_field_info {