[25/47] net/bnxt: tf_ulp: update template files

Message ID 20240830140049.1715230-26-sriharsha.basavapatna@broadcom.com (mailing list archive)
State Superseded
Delegated to: Ajit Khaparde
Headers
Series TruFlow update for Thor2 |

Checks

Context Check Description
ci/checkpatch success coding style OK

Commit Message

Sriharsha Basavapatna Aug. 30, 2024, 2 p.m. UTC
From: Kishore Padmanabha <kishore.padmanabha@broadcom.com>

This patch updates template files for the following list
of changes, that are being added in the next patch.

- enable recipe id generation
- fix segfault in the wildcard recipe process

Signed-off-by: Kishore Padmanabha <kishore.padmanabha@broadcom.com>
Signed-off-by: Sriharsha Basavapatna <sriharsha.basavapatna@broadcom.com>
---
 .../generic_templates/ulp_template_db_enum.h  | 115 +++---
 .../generic_templates/ulp_template_db_tbl.c   |   8 +-
 .../ulp_template_db_thor2_class.c             | 352 +++++++++++------
 .../ulp_template_db_thor_class.c              | 372 ++++++++++++------
 4 files changed, 547 insertions(+), 300 deletions(-)
  

Patch

diff --git a/drivers/net/bnxt/tf_ulp/generic_templates/ulp_template_db_enum.h b/drivers/net/bnxt/tf_ulp/generic_templates/ulp_template_db_enum.h
index 240acbc564..ddd65a62b1 100644
--- a/drivers/net/bnxt/tf_ulp/generic_templates/ulp_template_db_enum.h
+++ b/drivers/net/bnxt/tf_ulp/generic_templates/ulp_template_db_enum.h
@@ -6,7 +6,7 @@ 
 #ifndef ULP_TEMPLATE_DB_H_
 #define ULP_TEMPLATE_DB_H_
 
-#define BNXT_ULP_REGFILE_MAX_SZ 81
+#define BNXT_ULP_REGFILE_MAX_SZ 82
 #define BNXT_ULP_MAX_NUM_DEVICES 5
 #define BNXT_ULP_LOG2_MAX_NUM_DEV 2.32192809488736
 #define BNXT_ULP_GEN_TBL_MAX_SZ 50
@@ -31,19 +31,19 @@ 
 #define ULP_WH_PLUS_CLASS_COND_LIST_SIZE 50
 #define ULP_WH_PLUS_CLASS_COND_OPER_LIST_SIZE 0
 #define ULP_THOR_CLASS_TMPL_LIST_SIZE 5
-#define ULP_THOR_CLASS_TBL_LIST_SIZE 122
+#define ULP_THOR_CLASS_TBL_LIST_SIZE 126
 #define ULP_THOR_CLASS_KEY_INFO_LIST_SIZE 605
 #define ULP_THOR_CLASS_KEY_EXT_LIST_SIZE 615
-#define ULP_THOR_CLASS_IDENT_LIST_SIZE 39
-#define ULP_THOR_CLASS_RESULT_FIELD_LIST_SIZE 1248
+#define ULP_THOR_CLASS_IDENT_LIST_SIZE 43
+#define ULP_THOR_CLASS_RESULT_FIELD_LIST_SIZE 1252
 #define ULP_THOR_CLASS_COND_LIST_SIZE 3077
 #define ULP_THOR_CLASS_COND_OPER_LIST_SIZE 7
 #define ULP_THOR2_CLASS_TMPL_LIST_SIZE 5
-#define ULP_THOR2_CLASS_TBL_LIST_SIZE 121
+#define ULP_THOR2_CLASS_TBL_LIST_SIZE 125
 #define ULP_THOR2_CLASS_KEY_INFO_LIST_SIZE 665
 #define ULP_THOR2_CLASS_KEY_EXT_LIST_SIZE 628
-#define ULP_THOR2_CLASS_IDENT_LIST_SIZE 49
-#define ULP_THOR2_CLASS_RESULT_FIELD_LIST_SIZE 1512
+#define ULP_THOR2_CLASS_IDENT_LIST_SIZE 53
+#define ULP_THOR2_CLASS_RESULT_FIELD_LIST_SIZE 1516
 #define ULP_THOR2_CLASS_COND_LIST_SIZE 3298
 #define ULP_THOR2_CLASS_COND_OPER_LIST_SIZE 7
 #define ULP_WH_PLUS_ACT_TMPL_LIST_SIZE 11
@@ -699,8 +699,10 @@  enum bnxt_ulp_key_recipe_opc {
 
 enum bnxt_ulp_key_recipe_tbl_opc {
 	BNXT_ULP_KEY_RECIPE_TBL_OPC_NOT_USED = 0,
-	BNXT_ULP_KEY_RECIPE_TBL_OPC_WR_REGFILE = 1,
-	BNXT_ULP_KEY_RECIPE_TBL_OPC_LAST = 2
+	BNXT_ULP_KEY_RECIPE_TBL_OPC_ALLOC_REGFILE = 1,
+	BNXT_ULP_KEY_RECIPE_TBL_OPC_ALLOC_WR_REGFILE = 2,
+	BNXT_ULP_KEY_RECIPE_TBL_OPC_WR_REGFILE = 3,
+	BNXT_ULP_KEY_RECIPE_TBL_OPC_LAST = 4
 };
 
 enum bnxt_ulp_mark_db_opc {
@@ -795,53 +797,54 @@  enum bnxt_ulp_rf_idx {
 	BNXT_ULP_RF_IDX_HDR_SIG_ID = 32,
 	BNXT_ULP_RF_IDX_FLOW_SIG_ID = 33,
 	BNXT_ULP_RF_IDX_RID = 34,
-	BNXT_ULP_RF_IDX_RID_1 = 35,
-	BNXT_ULP_RF_IDX_WC_KEY_ID_0 = 36,
-	BNXT_ULP_RF_IDX_EM_KEY_ID_0 = 37,
-	BNXT_ULP_RF_IDX_DRV_FUNC_MAC = 38,
-	BNXT_ULP_RF_IDX_DRV_FUNC_PARENT_MAC = 39,
-	BNXT_ULP_RF_IDX_DEFAULT_AREC_PTR = 40,
-	BNXT_ULP_RF_IDX_CC = 41,
-	BNXT_ULP_RF_IDX_CF_FLOW_SIG_ID = 42,
-	BNXT_ULP_RF_IDX_PHY_PORT = 43,
-	BNXT_ULP_RF_IDX_METADATA_PROF = 44,
-	BNXT_ULP_RF_IDX_MODIFY_PTR = 45,
-	BNXT_ULP_RF_IDX_SOCK_DIR_SVIF = 46,
-	BNXT_ULP_RF_IDX_SOCK_DIR_PARIF = 47,
-	BNXT_ULP_RF_IDX_SOCK_DIR_ACT_PTR = 48,
-	BNXT_ULP_RF_IDX_SOCK_DIR_PARENT_MAC = 49,
-	BNXT_ULP_RF_IDX_RSS_VNIC = 50,
-	BNXT_ULP_RF_IDX_PORT_IS_PF = 51,
-	BNXT_ULP_RF_IDX_METER_PROFILE_PTR_0 = 52,
-	BNXT_ULP_RF_IDX_METER_PTR_0 = 53,
-	BNXT_ULP_RF_IDX_REF_CNT = 54,
-	BNXT_ULP_RF_IDX_RF_0 = 55,
-	BNXT_ULP_RF_IDX_RF_1 = 56,
-	BNXT_ULP_RF_IDX_RF_2 = 57,
-	BNXT_ULP_RF_IDX_RF_3 = 58,
-	BNXT_ULP_RF_IDX_RF_4 = 59,
-	BNXT_ULP_RF_IDX_RF_5 = 60,
-	BNXT_ULP_RF_IDX_RF_6 = 61,
-	BNXT_ULP_RF_IDX_RF_7 = 62,
-	BNXT_ULP_RF_IDX_CMM_ACT_HNDL = 63,
-	BNXT_ULP_RF_IDX_CMM_STAT_HNDL = 64,
-	BNXT_ULP_RF_IDX_CMM_MOD_HNDL = 65,
-	BNXT_ULP_RF_IDX_CMM_ENC_HNDL = 66,
-	BNXT_ULP_RF_IDX_CMM_SRP_HNDL = 67,
-	BNXT_ULP_RF_IDX_VF_FUNC_METADATA = 68,
-	BNXT_ULP_RF_IDX_CHAIN_ID_METADATA = 69,
-	BNXT_ULP_RF_IDX_RECYCLE_CNT = 70,
-	BNXT_ULP_RF_IDX_DEST_VNIC = 71,
-	BNXT_ULP_RF_IDX_DEST_VPORT = 72,
-	BNXT_ULP_RF_IDX_DEST_METADATA = 73,
-	BNXT_ULP_RF_IDX_PROF_TCAM_PRI = 74,
-	BNXT_ULP_RF_IDX_EM_INSERT_FAIL = 75,
-	BNXT_ULP_RF_IDX_PROF_TCAM_PRIORITY = 76,
-	BNXT_ULP_RF_IDX_TERM_FLOW = 77,
-	BNXT_ULP_RF_IDX_O_DMAC = 78,
-	BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_F1 = 79,
-	BNXT_ULP_RF_IDX_CMM_STAT_HNDL_F1 = 80,
-	BNXT_ULP_RF_IDX_LAST = 81
+	BNXT_ULP_RF_IDX_WC_KEY_ID_0 = 35,
+	BNXT_ULP_RF_IDX_EM_KEY_ID_0 = 36,
+	BNXT_ULP_RF_IDX_DRV_FUNC_MAC = 37,
+	BNXT_ULP_RF_IDX_DRV_FUNC_PARENT_MAC = 38,
+	BNXT_ULP_RF_IDX_DEFAULT_AREC_PTR = 39,
+	BNXT_ULP_RF_IDX_CC = 40,
+	BNXT_ULP_RF_IDX_CF_FLOW_SIG_ID = 41,
+	BNXT_ULP_RF_IDX_PHY_PORT = 42,
+	BNXT_ULP_RF_IDX_METADATA_PROF = 43,
+	BNXT_ULP_RF_IDX_MODIFY_PTR = 44,
+	BNXT_ULP_RF_IDX_SOCK_DIR_SVIF = 45,
+	BNXT_ULP_RF_IDX_SOCK_DIR_PARIF = 46,
+	BNXT_ULP_RF_IDX_SOCK_DIR_ACT_PTR = 47,
+	BNXT_ULP_RF_IDX_SOCK_DIR_PARENT_MAC = 48,
+	BNXT_ULP_RF_IDX_RSS_VNIC = 49,
+	BNXT_ULP_RF_IDX_PORT_IS_PF = 50,
+	BNXT_ULP_RF_IDX_METER_PROFILE_PTR_0 = 51,
+	BNXT_ULP_RF_IDX_METER_PTR_0 = 52,
+	BNXT_ULP_RF_IDX_REF_CNT = 53,
+	BNXT_ULP_RF_IDX_RF_0 = 54,
+	BNXT_ULP_RF_IDX_RF_1 = 55,
+	BNXT_ULP_RF_IDX_RF_2 = 56,
+	BNXT_ULP_RF_IDX_RF_3 = 57,
+	BNXT_ULP_RF_IDX_RF_4 = 58,
+	BNXT_ULP_RF_IDX_RF_5 = 59,
+	BNXT_ULP_RF_IDX_RF_6 = 60,
+	BNXT_ULP_RF_IDX_RF_7 = 61,
+	BNXT_ULP_RF_IDX_CMM_ACT_HNDL = 62,
+	BNXT_ULP_RF_IDX_CMM_STAT_HNDL = 63,
+	BNXT_ULP_RF_IDX_CMM_MOD_HNDL = 64,
+	BNXT_ULP_RF_IDX_CMM_ENC_HNDL = 65,
+	BNXT_ULP_RF_IDX_CMM_SRP_HNDL = 66,
+	BNXT_ULP_RF_IDX_VF_FUNC_METADATA = 67,
+	BNXT_ULP_RF_IDX_CHAIN_ID_METADATA = 68,
+	BNXT_ULP_RF_IDX_RECYCLE_CNT = 69,
+	BNXT_ULP_RF_IDX_DEST_VNIC = 70,
+	BNXT_ULP_RF_IDX_DEST_VPORT = 71,
+	BNXT_ULP_RF_IDX_DEST_METADATA = 72,
+	BNXT_ULP_RF_IDX_PROF_TCAM_PRI = 73,
+	BNXT_ULP_RF_IDX_EM_INSERT_FAIL = 74,
+	BNXT_ULP_RF_IDX_PROF_TCAM_PRIORITY = 75,
+	BNXT_ULP_RF_IDX_TERM_FLOW = 76,
+	BNXT_ULP_RF_IDX_O_DMAC = 77,
+	BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_F1 = 78,
+	BNXT_ULP_RF_IDX_CMM_STAT_HNDL_F1 = 79,
+	BNXT_ULP_RF_IDX_WC_RECIPE_ID = 80,
+	BNXT_ULP_RF_IDX_EM_RECIPE_ID = 81,
+	BNXT_ULP_RF_IDX_LAST = 82
 };
 
 enum bnxt_ulp_tcam_tbl_opc {
diff --git a/drivers/net/bnxt/tf_ulp/generic_templates/ulp_template_db_tbl.c b/drivers/net/bnxt/tf_ulp/generic_templates/ulp_template_db_tbl.c
index 70f31946ab..4f8cc5a4b3 100644
--- a/drivers/net/bnxt/tf_ulp/generic_templates/ulp_template_db_tbl.c
+++ b/drivers/net/bnxt/tf_ulp/generic_templates/ulp_template_db_tbl.c
@@ -1121,7 +1121,7 @@  const struct bnxt_ulp_generic_tbl_params ulp_thor_generic_tbl_params[] = {
 	.name = "INGRESS GENERIC_TABLE_PROTO_HEADER",
 	.gen_tbl_type = BNXT_ULP_GEN_TBL_TYPE_HASH_LIST,
 	.result_num_entries = 256,
-	.result_num_bytes = 10,
+	.result_num_bytes = 14,
 	.key_num_bytes = 10,
 	.partial_key_num_bytes = 0,
 	.num_buckets = 4,
@@ -1133,7 +1133,7 @@  const struct bnxt_ulp_generic_tbl_params ulp_thor_generic_tbl_params[] = {
 	.name = "EGRESS GENERIC_TABLE_PROTO_HEADER",
 	.gen_tbl_type = BNXT_ULP_GEN_TBL_TYPE_HASH_LIST,
 	.result_num_entries = 256,
-	.result_num_bytes = 10,
+	.result_num_bytes = 14,
 	.key_num_bytes = 10,
 	.partial_key_num_bytes = 0,
 	.num_buckets = 4,
@@ -1724,7 +1724,7 @@  const struct bnxt_ulp_generic_tbl_params ulp_thor2_generic_tbl_params[] = {
 	.name = "INGRESS GENERIC_TABLE_PROTO_HEADER",
 	.gen_tbl_type = BNXT_ULP_GEN_TBL_TYPE_HASH_LIST,
 	.result_num_entries = 256,
-	.result_num_bytes = 10,
+	.result_num_bytes = 14,
 	.key_num_bytes = 10,
 	.partial_key_num_bytes = 0,
 	.num_buckets = 4,
@@ -1736,7 +1736,7 @@  const struct bnxt_ulp_generic_tbl_params ulp_thor2_generic_tbl_params[] = {
 	.name = "EGRESS GENERIC_TABLE_PROTO_HEADER",
 	.gen_tbl_type = BNXT_ULP_GEN_TBL_TYPE_HASH_LIST,
 	.result_num_entries = 256,
-	.result_num_bytes = 10,
+	.result_num_bytes = 14,
 	.key_num_bytes = 10,
 	.partial_key_num_bytes = 0,
 	.num_buckets = 4,
diff --git a/drivers/net/bnxt/tf_ulp/generic_templates/ulp_template_db_thor2_class.c b/drivers/net/bnxt/tf_ulp/generic_templates/ulp_template_db_thor2_class.c
index 5cfdd0804b..99c56fea0c 100644
--- a/drivers/net/bnxt/tf_ulp/generic_templates/ulp_template_db_thor2_class.c
+++ b/drivers/net/bnxt/tf_ulp/generic_templates/ulp_template_db_thor2_class.c
@@ -13,7 +13,7 @@  struct bnxt_ulp_mapper_tmpl_info ulp_thor2_class_tmpl_list[] = {
 	/* class_tid: 1, ingress */
 	[1] = {
 	.device_name = BNXT_ULP_DEVICE_ID_THOR2,
-	.num_tbls = 41,
+	.num_tbls = 43,
 	.start_tbl_idx = 0,
 	.reject_info = {
 		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_FALSE,
@@ -23,8 +23,8 @@  struct bnxt_ulp_mapper_tmpl_info ulp_thor2_class_tmpl_list[] = {
 	/* class_tid: 2, egress */
 	[2] = {
 	.device_name = BNXT_ULP_DEVICE_ID_THOR2,
-	.num_tbls = 26,
-	.start_tbl_idx = 41,
+	.num_tbls = 28,
+	.start_tbl_idx = 43,
 	.reject_info = {
 		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_FALSE,
 		.cond_start_idx = 1655,
@@ -34,7 +34,7 @@  struct bnxt_ulp_mapper_tmpl_info ulp_thor2_class_tmpl_list[] = {
 	[3] = {
 	.device_name = BNXT_ULP_DEVICE_ID_THOR2,
 	.num_tbls = 35,
-	.start_tbl_idx = 67,
+	.start_tbl_idx = 71,
 	.reject_info = {
 		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_FALSE,
 		.cond_start_idx = 3292,
@@ -44,7 +44,7 @@  struct bnxt_ulp_mapper_tmpl_info ulp_thor2_class_tmpl_list[] = {
 	[4] = {
 	.device_name = BNXT_ULP_DEVICE_ID_THOR2,
 	.num_tbls = 19,
-	.start_tbl_idx = 102,
+	.start_tbl_idx = 106,
 	.reject_info = {
 		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_FALSE,
 		.cond_start_idx = 3296,
@@ -442,20 +442,19 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.key_bit_size = 74,
 	.key_num_fields = 3,
 	.ident_start_idx = 11,
-	.ident_nums = 5
+	.ident_nums = 7
 	},
 	{ /* class_tid: 1, , table: control.proto_header_cache_miss */
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_CTRL_TABLE,
 	.direction = TF_DIR_RX,
 	.execute_info = {
 		.cond_true_goto  = 1,
-		.cond_false_goto = 11,
+		.cond_false_goto = 13,
 		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
 		.cond_start_idx = 42,
 		.cond_nums = 1 },
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
-	.fdb_opcode = BNXT_ULP_FDB_OPC_ALLOC_RID_REGFILE,
-	.fdb_operand = BNXT_ULP_RF_IDX_RID
+	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP
 	},
 	{ /* class_tid: 1, , table: hdr_overlap_cache.overlap_check */
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_GENERIC_TABLE,
@@ -479,7 +478,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.partial_key_start_idx = 53,
 	.partial_key_num_fields = 1,
 	.partial_key_bit_size = 64,
-	.ident_start_idx = 16,
+	.ident_start_idx = 18,
 	.ident_nums = 2
 	},
 	{ /* class_tid: 1, , table: control.overlap_miss */
@@ -493,7 +492,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 		.cond_nums = 1 },
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_ALLOC_RID_REGFILE,
-	.fdb_operand = BNXT_ULP_RF_IDX_RID_1
+	.fdb_operand = BNXT_ULP_RF_IDX_RID
 	},
 	{ /* class_tid: 1, , table: profile_tcam.allocate_wc_profile */
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,
@@ -509,10 +508,10 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.tbl_operand = BNXT_ULP_RF_IDX_PROFILE_TCAM_INDEX_0,
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_RID_REGFILE,
-	.fdb_operand = BNXT_ULP_RF_IDX_RID_1,
+	.fdb_operand = BNXT_ULP_RF_IDX_RID,
 	.pri_opcode  = BNXT_ULP_PRI_OPC_APP_PRI_OR_CONST,
 	.pri_operand = ULP_THOR2_SYM_PROF_TCAM_PRI_APP,
-	.ident_start_idx = 18,
+	.ident_start_idx = 20,
 	.ident_nums = 1
 	},
 	{ /* class_tid: 1, , table: fkb_select.wc_gen_template */
@@ -529,7 +528,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.tbl_operand = BNXT_ULP_RF_IDX_WC_KEY_ID_0,
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_RID_REGFILE,
-	.fdb_operand = BNXT_ULP_RF_IDX_RID_1,
+	.fdb_operand = BNXT_ULP_RF_IDX_RID,
 	.result_start_idx = 31,
 	.result_bit_size = 256,
 	.result_num_fields = 172
@@ -560,6 +559,19 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.result_bit_size = 48,
 	.result_num_fields = 3
 	},
+	{ /* class_tid: 1, , table: control.proto_header_rid_alloc */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_CTRL_TABLE,
+	.direction = TF_DIR_RX,
+	.execute_info = {
+		.cond_true_goto  = 1,
+		.cond_false_goto = 1,
+		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_TRUE,
+		.cond_start_idx = 320,
+		.cond_nums = 0 },
+	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_ALLOC_RID_REGFILE,
+	.fdb_operand = BNXT_ULP_RF_IDX_RID
+	},
 	{ /* class_tid: 1, , table: fkb_select.em_gen_template_alloc */
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
 	.resource_type = CFA_RSUBTYPE_IDX_TBL_EM_FKB,
@@ -579,6 +591,26 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.result_bit_size = 256,
 	.result_num_fields = 172
 	},
+	{ /* class_tid: 1, , table: em_key_recipe.alloc_only */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_KEY_RECIPE_TABLE,
+	.resource_sub_type =
+		BNXT_ULP_RESOURCE_SUB_TYPE_KEY_RECIPE_TABLE_EM,
+	.direction = TF_DIR_RX,
+	.execute_info = {
+		.cond_true_goto  = 1,
+		.cond_false_goto = 1,
+		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_TRUE,
+		.cond_start_idx = 321,
+		.cond_nums = 0 },
+	.tbl_opcode = BNXT_ULP_KEY_RECIPE_TBL_OPC_ALLOC_REGFILE,
+	.tbl_operand = BNXT_ULP_RF_IDX_EM_RECIPE_ID,
+	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_RID_REGFILE,
+	.fdb_operand = BNXT_ULP_RF_IDX_RID,
+	.result_start_idx = 378,
+	.result_bit_size = 0,
+	.result_num_fields = 0
+	},
 	{ /* class_tid: 1, , table: control.profile_tcam_priority */
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_CTRL_TABLE,
 	.direction = TF_DIR_RX,
@@ -622,7 +654,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.result_start_idx = 378,
 	.result_bit_size = 64,
 	.result_num_fields = 10,
-	.ident_start_idx = 19,
+	.ident_start_idx = 21,
 	.ident_nums = 1
 	},
 	{ /* class_tid: 1, , table: wm_key_recipe.0 */
@@ -636,8 +668,8 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_TRUE,
 		.cond_start_idx = 568,
 		.cond_nums = 0 },
-	.tbl_opcode = BNXT_ULP_KEY_RECIPE_TBL_OPC_WR_REGFILE,
-	.tbl_operand = BNXT_ULP_RF_IDX_PROFILE_TCAM_INDEX_0,
+	.tbl_opcode = BNXT_ULP_KEY_RECIPE_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_RF_IDX_WC_RECIPE_ID,
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_RID_REGFILE,
 	.fdb_operand = BNXT_ULP_RF_IDX_RID,
@@ -669,8 +701,8 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.key_bit_size = 74,
 	.key_num_fields = 3,
 	.result_start_idx = 388,
-	.result_bit_size = 74,
-	.result_num_fields = 6
+	.result_bit_size = 106,
+	.result_num_fields = 8
 	},
 	{ /* class_tid: 1, , table: em_flow_conflict_cache.rd */
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_GENERIC_TABLE,
@@ -691,7 +723,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.blob_key_bit_size = 74,
 	.key_bit_size = 74,
 	.key_num_fields = 3,
-	.ident_start_idx = 20,
+	.ident_start_idx = 22,
 	.ident_nums = 1
 	},
 	{ /* class_tid: 1, , table: control.em_flow_conflict_cache_miss */
@@ -721,7 +753,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.tbl_operand = BNXT_ULP_RF_IDX_EM_KEY_ID_0,
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
-	.result_start_idx = 394,
+	.result_start_idx = 396,
 	.result_bit_size = 256,
 	.result_num_fields = 172
 	},
@@ -737,15 +769,14 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 		.cond_start_idx = 1246,
 		.cond_nums = 0 },
 	.tbl_opcode = BNXT_ULP_KEY_RECIPE_TBL_OPC_WR_REGFILE,
-	.tbl_operand = BNXT_ULP_RF_IDX_EM_KEY_ID_0,
+	.tbl_operand = BNXT_ULP_RF_IDX_EM_RECIPE_ID,
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
-	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_RID_REGFILE,
-	.fdb_operand = BNXT_ULP_RF_IDX_RID,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
 	.key_start_idx = 162,
 	.blob_key_bit_size = 0,
 	.key_bit_size = 0,
 	.key_num_fields = 33,
-	.result_start_idx = 566,
+	.result_start_idx = 568,
 	.result_bit_size = 0,
 	.result_num_fields = 0
 	},
@@ -768,7 +799,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.blob_key_bit_size = 74,
 	.key_bit_size = 74,
 	.key_num_fields = 3,
-	.result_start_idx = 566,
+	.result_start_idx = 568,
 	.result_bit_size = 96,
 	.result_num_fields = 2
 	},
@@ -804,10 +835,10 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.tbl_opcode = BNXT_ULP_EM_TBL_OPC_WR_REGFILE,
 	.tbl_operand = BNXT_ULP_RF_IDX_EM_INSERT_FAIL,
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_DYN_KEY,
-	.key_recipe_operand = BNXT_ULP_RF_IDX_EM_KEY_ID_0,
+	.key_recipe_operand = BNXT_ULP_RF_IDX_EM_RECIPE_ID,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
 	.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_YES,
-	.result_start_idx = 568,
+	.result_start_idx = 570,
 	.result_bit_size = 0,
 	.result_num_fields = 17
 	},
@@ -836,13 +867,13 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.tbl_opcode = BNXT_ULP_TCAM_TBL_OPC_ALLOC_WR_REGFILE,
 	.tbl_operand = BNXT_ULP_RF_IDX_WC_TCAM_INDEX_0,
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_DYN_KEY,
-	.key_recipe_operand = BNXT_ULP_RF_IDX_PROFILE_TCAM_INDEX_0,
+	.key_recipe_operand = BNXT_ULP_RF_IDX_WC_RECIPE_ID,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
 	.pri_opcode  = BNXT_ULP_PRI_OPC_CONST,
 	.pri_operand = 0,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
 	.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_YES,
-	.result_start_idx = 585,
+	.result_start_idx = 587,
 	.result_bit_size = 128,
 	.result_num_fields = 15
 	},
@@ -865,7 +896,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.blob_key_bit_size = 10,
 	.key_bit_size = 10,
 	.key_num_fields = 1,
-	.ident_start_idx = 21,
+	.ident_start_idx = 23,
 	.ident_nums = 1
 	},
 	{ /* class_tid: 2, , table: l2_cntxt_tcam_cache.def_rd */
@@ -888,7 +919,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.blob_key_bit_size = 11,
 	.key_bit_size = 11,
 	.key_num_fields = 1,
-	.ident_start_idx = 22,
+	.ident_start_idx = 24,
 	.ident_nums = 2
 	},
 	{ /* class_tid: 2, , table: control.l2_only_check */
@@ -954,21 +985,20 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.blob_key_bit_size = 74,
 	.key_bit_size = 74,
 	.key_num_fields = 3,
-	.ident_start_idx = 24,
-	.ident_nums = 5
+	.ident_start_idx = 26,
+	.ident_nums = 7
 	},
 	{ /* class_tid: 2, , table: control.proto_header_cache_miss */
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_CTRL_TABLE,
 	.direction = TF_DIR_TX,
 	.execute_info = {
 		.cond_true_goto  = 1,
-		.cond_false_goto = 11,
+		.cond_false_goto = 13,
 		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
 		.cond_start_idx = 1681,
 		.cond_nums = 1 },
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
-	.fdb_opcode = BNXT_ULP_FDB_OPC_ALLOC_RID_REGFILE,
-	.fdb_operand = BNXT_ULP_RF_IDX_RID
+	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP
 	},
 	{ /* class_tid: 2, , table: hdr_overlap_cache.overlap_check */
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_GENERIC_TABLE,
@@ -992,7 +1022,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.partial_key_start_idx = 205,
 	.partial_key_num_fields = 1,
 	.partial_key_bit_size = 64,
-	.ident_start_idx = 29,
+	.ident_start_idx = 33,
 	.ident_nums = 2
 	},
 	{ /* class_tid: 2, , table: control.overlap_miss */
@@ -1006,7 +1036,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 		.cond_nums = 1 },
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_ALLOC_RID_REGFILE,
-	.fdb_operand = BNXT_ULP_RF_IDX_RID_1
+	.fdb_operand = BNXT_ULP_RF_IDX_RID
 	},
 	{ /* class_tid: 2, , table: profile_tcam.allocate_wc_profile */
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,
@@ -1022,10 +1052,10 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.tbl_operand = BNXT_ULP_RF_IDX_PROFILE_TCAM_INDEX_0,
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_RID_REGFILE,
-	.fdb_operand = BNXT_ULP_RF_IDX_RID_1,
+	.fdb_operand = BNXT_ULP_RF_IDX_RID,
 	.pri_opcode  = BNXT_ULP_PRI_OPC_CONST,
 	.pri_operand = 0,
-	.ident_start_idx = 31,
+	.ident_start_idx = 35,
 	.ident_nums = 1
 	},
 	{ /* class_tid: 2, , table: fkb_select.wc_gen_template */
@@ -1042,8 +1072,8 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.tbl_operand = BNXT_ULP_RF_IDX_WC_KEY_ID_0,
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_RID_REGFILE,
-	.fdb_operand = BNXT_ULP_RF_IDX_RID_1,
-	.result_start_idx = 600,
+	.fdb_operand = BNXT_ULP_RF_IDX_RID,
+	.result_start_idx = 602,
 	.result_bit_size = 256,
 	.result_num_fields = 172
 	},
@@ -1069,10 +1099,23 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.partial_key_start_idx = 208,
 	.partial_key_num_fields = 1,
 	.partial_key_bit_size = 64,
-	.result_start_idx = 772,
+	.result_start_idx = 774,
 	.result_bit_size = 48,
 	.result_num_fields = 3
 	},
+	{ /* class_tid: 2, , table: control.proto_header_rid_alloc */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_CTRL_TABLE,
+	.direction = TF_DIR_TX,
+	.execute_info = {
+		.cond_true_goto  = 1,
+		.cond_false_goto = 1,
+		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_TRUE,
+		.cond_start_idx = 1961,
+		.cond_nums = 0 },
+	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_ALLOC_RID_REGFILE,
+	.fdb_operand = BNXT_ULP_RF_IDX_RID
+	},
 	{ /* class_tid: 2, , table: fkb_select.em_gen_template_alloc */
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
 	.resource_type = CFA_RSUBTYPE_IDX_TBL_EM_FKB,
@@ -1088,10 +1131,30 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_RID_REGFILE,
 	.fdb_operand = BNXT_ULP_RF_IDX_RID,
-	.result_start_idx = 775,
+	.result_start_idx = 777,
 	.result_bit_size = 256,
 	.result_num_fields = 172
 	},
+	{ /* class_tid: 2, , table: em_key_recipe.alloc_only */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_KEY_RECIPE_TABLE,
+	.resource_sub_type =
+		BNXT_ULP_RESOURCE_SUB_TYPE_KEY_RECIPE_TABLE_EM,
+	.direction = TF_DIR_TX,
+	.execute_info = {
+		.cond_true_goto  = 1,
+		.cond_false_goto = 1,
+		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_TRUE,
+		.cond_start_idx = 1962,
+		.cond_nums = 0 },
+	.tbl_opcode = BNXT_ULP_KEY_RECIPE_TBL_OPC_ALLOC_REGFILE,
+	.tbl_operand = BNXT_ULP_RF_IDX_EM_RECIPE_ID,
+	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_RID_REGFILE,
+	.fdb_operand = BNXT_ULP_RF_IDX_RID,
+	.result_start_idx = 949,
+	.result_bit_size = 0,
+	.result_num_fields = 0
+	},
 	{ /* class_tid: 2, , table: control.profile_tcam_priority */
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_CTRL_TABLE,
 	.direction = TF_DIR_TX,
@@ -1133,10 +1196,10 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.blob_key_bit_size = 256,
 	.key_bit_size = 256,
 	.key_num_fields = 66,
-	.result_start_idx = 947,
+	.result_start_idx = 949,
 	.result_bit_size = 64,
 	.result_num_fields = 10,
-	.ident_start_idx = 32,
+	.ident_start_idx = 36,
 	.ident_nums = 1
 	},
 	{ /* class_tid: 2, , table: wm_key_recipe.0 */
@@ -1150,8 +1213,8 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_TRUE,
 		.cond_start_idx = 2201,
 		.cond_nums = 0 },
-	.tbl_opcode = BNXT_ULP_KEY_RECIPE_TBL_OPC_WR_REGFILE,
-	.tbl_operand = BNXT_ULP_RF_IDX_PROFILE_TCAM_INDEX_0,
+	.tbl_opcode = BNXT_ULP_KEY_RECIPE_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_RF_IDX_WC_RECIPE_ID,
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_RID_REGFILE,
 	.fdb_operand = BNXT_ULP_RF_IDX_RID,
@@ -1159,7 +1222,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.blob_key_bit_size = 0,
 	.key_bit_size = 0,
 	.key_num_fields = 33,
-	.result_start_idx = 957,
+	.result_start_idx = 959,
 	.result_bit_size = 0,
 	.result_num_fields = 0
 	},
@@ -1182,9 +1245,9 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.blob_key_bit_size = 74,
 	.key_bit_size = 74,
 	.key_num_fields = 3,
-	.result_start_idx = 957,
-	.result_bit_size = 74,
-	.result_num_fields = 6
+	.result_start_idx = 959,
+	.result_bit_size = 106,
+	.result_num_fields = 8
 	},
 	{ /* class_tid: 2, , table: em_flow_conflict_cache.rd */
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_GENERIC_TABLE,
@@ -1205,7 +1268,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.blob_key_bit_size = 74,
 	.key_bit_size = 74,
 	.key_num_fields = 3,
-	.ident_start_idx = 33,
+	.ident_start_idx = 37,
 	.ident_nums = 1
 	},
 	{ /* class_tid: 2, , table: control.em_flow_conflict_cache_miss */
@@ -1235,7 +1298,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.tbl_operand = BNXT_ULP_RF_IDX_EM_KEY_ID_0,
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
-	.result_start_idx = 963,
+	.result_start_idx = 967,
 	.result_bit_size = 256,
 	.result_num_fields = 172
 	},
@@ -1251,15 +1314,14 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 		.cond_start_idx = 2883,
 		.cond_nums = 0 },
 	.tbl_opcode = BNXT_ULP_KEY_RECIPE_TBL_OPC_WR_REGFILE,
-	.tbl_operand = BNXT_ULP_RF_IDX_EM_KEY_ID_0,
+	.tbl_operand = BNXT_ULP_RF_IDX_EM_RECIPE_ID,
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
-	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_RID_REGFILE,
-	.fdb_operand = BNXT_ULP_RF_IDX_RID,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
 	.key_start_idx = 314,
 	.blob_key_bit_size = 0,
 	.key_bit_size = 0,
 	.key_num_fields = 33,
-	.result_start_idx = 1135,
+	.result_start_idx = 1139,
 	.result_bit_size = 0,
 	.result_num_fields = 0
 	},
@@ -1282,7 +1344,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.blob_key_bit_size = 74,
 	.key_bit_size = 74,
 	.key_num_fields = 3,
-	.result_start_idx = 1135,
+	.result_start_idx = 1139,
 	.result_bit_size = 96,
 	.result_num_fields = 2
 	},
@@ -1318,10 +1380,10 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.tbl_opcode = BNXT_ULP_EM_TBL_OPC_WR_REGFILE,
 	.tbl_operand = BNXT_ULP_RF_IDX_EM_INSERT_FAIL,
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_DYN_KEY,
-	.key_recipe_operand = BNXT_ULP_RF_IDX_EM_KEY_ID_0,
+	.key_recipe_operand = BNXT_ULP_RF_IDX_EM_RECIPE_ID,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
 	.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_YES,
-	.result_start_idx = 1137,
+	.result_start_idx = 1141,
 	.result_bit_size = 0,
 	.result_num_fields = 17
 	},
@@ -1350,13 +1412,13 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.tbl_opcode = BNXT_ULP_TCAM_TBL_OPC_ALLOC_WR_REGFILE,
 	.tbl_operand = BNXT_ULP_RF_IDX_WC_TCAM_INDEX_0,
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_DYN_KEY,
-	.key_recipe_operand = BNXT_ULP_RF_IDX_PROFILE_TCAM_INDEX_0,
+	.key_recipe_operand = BNXT_ULP_RF_IDX_WC_RECIPE_ID,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
 	.pri_opcode  = BNXT_ULP_PRI_OPC_CONST,
 	.pri_operand = 0,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
 	.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_YES,
-	.result_start_idx = 1154,
+	.result_start_idx = 1158,
 	.result_bit_size = 128,
 	.result_num_fields = 15
 	},
@@ -1377,7 +1439,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
-	.result_start_idx = 1169,
+	.result_start_idx = 1173,
 	.result_bit_size = 32,
 	.result_num_fields = 1
 	},
@@ -1398,7 +1460,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
-	.result_start_idx = 1170,
+	.result_start_idx = 1174,
 	.result_bit_size = 32,
 	.result_num_fields = 1
 	},
@@ -1419,7 +1481,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
-	.result_start_idx = 1171,
+	.result_start_idx = 1175,
 	.result_bit_size = 32,
 	.result_num_fields = 1
 	},
@@ -1440,7 +1502,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
-	.result_start_idx = 1172,
+	.result_start_idx = 1176,
 	.result_bit_size = 32,
 	.result_num_fields = 1
 	},
@@ -1461,7 +1523,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
-	.result_start_idx = 1173,
+	.result_start_idx = 1177,
 	.result_bit_size = 32,
 	.result_num_fields = 1
 	},
@@ -1482,7 +1544,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
-	.result_start_idx = 1174,
+	.result_start_idx = 1178,
 	.result_bit_size = 32,
 	.result_num_fields = 1
 	},
@@ -1505,7 +1567,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.blob_key_bit_size = 6,
 	.key_bit_size = 6,
 	.key_num_fields = 2,
-	.ident_start_idx = 34,
+	.ident_start_idx = 38,
 	.ident_nums = 2
 	},
 	{ /* class_tid: 3, , table: control.ts_ing_rd_check */
@@ -1539,7 +1601,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_RID_REGFILE,
 	.fdb_operand = BNXT_ULP_RF_IDX_RID,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
-	.result_start_idx = 1175,
+	.result_start_idx = 1179,
 	.result_bit_size = 192,
 	.result_num_fields = 18
 	},
@@ -1561,7 +1623,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_RID_REGFILE,
 	.fdb_operand = BNXT_ULP_RF_IDX_RID,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
-	.result_start_idx = 1193,
+	.result_start_idx = 1197,
 	.result_bit_size = 192,
 	.result_num_fields = 18
 	},
@@ -1606,10 +1668,10 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.blob_key_bit_size = 256,
 	.key_bit_size = 256,
 	.key_num_fields = 66,
-	.result_start_idx = 1211,
+	.result_start_idx = 1215,
 	.result_bit_size = 65,
 	.result_num_fields = 7,
-	.ident_start_idx = 36,
+	.ident_start_idx = 40,
 	.ident_nums = 1
 	},
 	{ /* class_tid: 3, , table: table_scope_cache.tsid_ing_wr */
@@ -1631,7 +1693,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.blob_key_bit_size = 6,
 	.key_bit_size = 6,
 	.key_num_fields = 2,
-	.result_start_idx = 1218,
+	.result_start_idx = 1222,
 	.result_bit_size = 88,
 	.result_num_fields = 5
 	},
@@ -1654,7 +1716,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.blob_key_bit_size = 10,
 	.key_bit_size = 10,
 	.key_num_fields = 1,
-	.result_start_idx = 1223,
+	.result_start_idx = 1227,
 	.result_bit_size = 169,
 	.result_num_fields = 6
 	},
@@ -1677,7 +1739,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.blob_key_bit_size = 11,
 	.key_bit_size = 11,
 	.key_num_fields = 1,
-	.ident_start_idx = 37,
+	.ident_start_idx = 41,
 	.ident_nums = 1
 	},
 	{ /* class_tid: 3, , table: control.ing_rd_check */
@@ -1714,10 +1776,10 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.blob_key_bit_size = 256,
 	.key_bit_size = 256,
 	.key_num_fields = 24,
-	.result_start_idx = 1229,
+	.result_start_idx = 1233,
 	.result_bit_size = 127,
 	.result_num_fields = 17,
-	.ident_start_idx = 38,
+	.ident_start_idx = 42,
 	.ident_nums = 1
 	},
 	{ /* class_tid: 3, , table: l2_cntxt_tcam_cache.ing_wr */
@@ -1739,7 +1801,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.blob_key_bit_size = 11,
 	.key_bit_size = 11,
 	.key_num_fields = 1,
-	.result_start_idx = 1246,
+	.result_start_idx = 1250,
 	.result_bit_size = 94,
 	.result_num_fields = 5
 	},
@@ -1760,7 +1822,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
-	.result_start_idx = 1251,
+	.result_start_idx = 1255,
 	.result_bit_size = 192,
 	.result_num_fields = 18,
 	.encap_num_fields = 0
@@ -1782,7 +1844,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
-	.result_start_idx = 1269,
+	.result_start_idx = 1273,
 	.result_bit_size = 192,
 	.result_num_fields = 18,
 	.encap_num_fields = 0
@@ -1813,7 +1875,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.blob_key_bit_size = 10,
 	.key_bit_size = 10,
 	.key_num_fields = 1,
-	.result_start_idx = 1287,
+	.result_start_idx = 1291,
 	.result_bit_size = 169,
 	.result_num_fields = 6
 	},
@@ -1831,7 +1893,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.tbl_operand = BNXT_ULP_CF_IDX_DRV_FUNC_SVIF,
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
-	.result_start_idx = 1293,
+	.result_start_idx = 1297,
 	.result_bit_size = 128,
 	.result_num_fields = 14
 	},
@@ -1854,7 +1916,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.blob_key_bit_size = 11,
 	.key_bit_size = 11,
 	.key_num_fields = 1,
-	.ident_start_idx = 39,
+	.ident_start_idx = 43,
 	.ident_nums = 0
 	},
 	{ /* class_tid: 3, , table: control.non_vfr_egr_rd_check */
@@ -1891,10 +1953,10 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.blob_key_bit_size = 256,
 	.key_bit_size = 256,
 	.key_num_fields = 24,
-	.result_start_idx = 1307,
+	.result_start_idx = 1311,
 	.result_bit_size = 127,
 	.result_num_fields = 17,
-	.ident_start_idx = 39,
+	.ident_start_idx = 43,
 	.ident_nums = 2
 	},
 	{ /* class_tid: 3, , table: profile_tcam_bypass.non_vfr_egr_catch_all */
@@ -1919,10 +1981,10 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.blob_key_bit_size = 256,
 	.key_bit_size = 256,
 	.key_num_fields = 66,
-	.result_start_idx = 1324,
+	.result_start_idx = 1328,
 	.result_bit_size = 65,
 	.result_num_fields = 7,
-	.ident_start_idx = 41,
+	.ident_start_idx = 45,
 	.ident_nums = 0
 	},
 	{ /* class_tid: 3, , table: l2_cntxt_tcam_cache.non_vfr_egr_wr */
@@ -1944,7 +2006,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.blob_key_bit_size = 11,
 	.key_bit_size = 11,
 	.key_num_fields = 1,
-	.result_start_idx = 1331,
+	.result_start_idx = 1335,
 	.result_bit_size = 94,
 	.result_num_fields = 5
 	},
@@ -1967,7 +2029,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.blob_key_bit_size = 6,
 	.key_bit_size = 6,
 	.key_num_fields = 2,
-	.ident_start_idx = 41,
+	.ident_start_idx = 45,
 	.ident_nums = 1
 	},
 	{ /* class_tid: 3, , table: control.tsid_vfr_rd_check */
@@ -2000,7 +2062,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_RID_REGFILE,
 	.fdb_operand = BNXT_ULP_RF_IDX_RID,
-	.result_start_idx = 1336,
+	.result_start_idx = 1340,
 	.result_bit_size = 0,
 	.result_num_fields = 0,
 	.encap_num_fields = 20
@@ -2042,7 +2104,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_RID_REGFILE,
 	.fdb_operand = BNXT_ULP_RF_IDX_RID,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
-	.result_start_idx = 1356,
+	.result_start_idx = 1360,
 	.result_bit_size = 192,
 	.result_num_fields = 18
 	},
@@ -2086,10 +2148,10 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.blob_key_bit_size = 256,
 	.key_bit_size = 256,
 	.key_num_fields = 24,
-	.result_start_idx = 1374,
+	.result_start_idx = 1378,
 	.result_bit_size = 127,
 	.result_num_fields = 17,
-	.ident_start_idx = 42,
+	.ident_start_idx = 46,
 	.ident_nums = 1
 	},
 	{ /* class_tid: 3, , table: table_scope_cache.tsid_vfr_wr */
@@ -2111,7 +2173,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.blob_key_bit_size = 6,
 	.key_bit_size = 6,
 	.key_num_fields = 2,
-	.result_start_idx = 1391,
+	.result_start_idx = 1395,
 	.result_bit_size = 88,
 	.result_num_fields = 5
 	},
@@ -2134,7 +2196,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.blob_key_bit_size = 6,
 	.key_bit_size = 6,
 	.key_num_fields = 2,
-	.ident_start_idx = 43,
+	.ident_start_idx = 47,
 	.ident_nums = 3
 	},
 	{ /* class_tid: 4, , table: control.tsid_vfr_egr_check */
@@ -2174,7 +2236,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 		.func_src2 = BNXT_ULP_FUNC_SRC_CONST,
 		.func_opr2 = ULP_THOR2_SYM_VF_2_VF_META_VAL,
 		.func_dst_opr = BNXT_ULP_RF_IDX_RF_0 },
-	.result_start_idx = 1396,
+	.result_start_idx = 1400,
 	.result_bit_size = 0,
 	.result_num_fields = 0,
 	.encap_num_fields = 20
@@ -2216,7 +2278,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_RID_REGFILE,
 	.fdb_operand = BNXT_ULP_RF_IDX_RID,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
-	.result_start_idx = 1416,
+	.result_start_idx = 1420,
 	.result_bit_size = 192,
 	.result_num_fields = 18
 	},
@@ -2261,10 +2323,10 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.blob_key_bit_size = 256,
 	.key_bit_size = 256,
 	.key_num_fields = 66,
-	.result_start_idx = 1434,
+	.result_start_idx = 1438,
 	.result_bit_size = 65,
 	.result_num_fields = 7,
-	.ident_start_idx = 46,
+	.ident_start_idx = 50,
 	.ident_nums = 1
 	},
 	{ /* class_tid: 4, , table: table_scope_cache.tsid_vfr_egr_wr */
@@ -2286,7 +2348,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.blob_key_bit_size = 6,
 	.key_bit_size = 6,
 	.key_num_fields = 2,
-	.result_start_idx = 1441,
+	.result_start_idx = 1445,
 	.result_bit_size = 88,
 	.result_num_fields = 5
 	},
@@ -2310,7 +2372,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.blob_key_bit_size = 11,
 	.key_bit_size = 11,
 	.key_num_fields = 1,
-	.ident_start_idx = 47,
+	.ident_start_idx = 51,
 	.ident_nums = 1
 	},
 	{ /* class_tid: 4, , table: control.endpoint_def_egr_rd_check */
@@ -2347,10 +2409,10 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.blob_key_bit_size = 256,
 	.key_bit_size = 256,
 	.key_num_fields = 24,
-	.result_start_idx = 1446,
+	.result_start_idx = 1450,
 	.result_bit_size = 127,
 	.result_num_fields = 17,
-	.ident_start_idx = 48,
+	.ident_start_idx = 52,
 	.ident_nums = 1
 	},
 	{ /* class_tid: 4, , table: l2_cntxt_tcam_cache.endpoint_def_egr_wr */
@@ -2373,7 +2435,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.blob_key_bit_size = 11,
 	.key_bit_size = 11,
 	.key_num_fields = 1,
-	.result_start_idx = 1463,
+	.result_start_idx = 1467,
 	.result_bit_size = 94,
 	.result_num_fields = 5
 	},
@@ -2396,7 +2458,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.blob_key_bit_size = 10,
 	.key_bit_size = 10,
 	.key_num_fields = 1,
-	.result_start_idx = 1468,
+	.result_start_idx = 1472,
 	.result_bit_size = 169,
 	.result_num_fields = 6
 	},
@@ -2423,7 +2485,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 		.func_src2 = BNXT_ULP_FUNC_SRC_CONST,
 		.func_opr2 = ULP_THOR2_SYM_VF_2_VF_META_VAL,
 		.func_dst_opr = BNXT_ULP_RF_IDX_RF_0 },
-	.result_start_idx = 1474,
+	.result_start_idx = 1478,
 	.result_bit_size = 0,
 	.result_num_fields = 0,
 	.encap_num_fields = 20
@@ -2464,7 +2526,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor2_class_tbl_list[] = {
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
-	.result_start_idx = 1494,
+	.result_start_idx = 1498,
 	.result_bit_size = 192,
 	.result_num_fields = 18
 	},
@@ -7012,7 +7074,7 @@  struct bnxt_ulp_mapper_cond_info ulp_thor2_class_cond_list[] = {
 	},
 	/* field_cond: class_tid: 1, fkb_select.em_gen_template:1012*/
 	{
-	.cond_opcode = BNXT_ULP_COND_OPC_CF_BIT_NOT_SET,
+	.cond_opcode = BNXT_ULP_COND_OPC_CF_BIT_IS_SET,
 	.cond_operand = BNXT_ULP_CF_BIT_L2_ONLY
 	},
 	{
@@ -42521,8 +42583,8 @@  struct bnxt_ulp_mapper_field_info ulp_thor2_class_result_field_list[] = {
 	.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
 	.field_src1 = BNXT_ULP_FIELD_SRC_RF,
 	.field_opr1 = {
-	(BNXT_ULP_RF_IDX_RID_1 >> 8) & 0xff,
-	BNXT_ULP_RF_IDX_RID_1 & 0xff}
+	(BNXT_ULP_RF_IDX_RID >> 8) & 0xff,
+	BNXT_ULP_RF_IDX_RID & 0xff}
 	},
 	{
 	.description = "wc_profile_id",
@@ -43718,6 +43780,24 @@  struct bnxt_ulp_mapper_field_info ulp_thor2_class_result_field_list[] = {
 	(BNXT_ULP_RF_IDX_WC_KEY_ID_0 >> 8) & 0xff,
 	BNXT_ULP_RF_IDX_WC_KEY_ID_0 & 0xff}
 	},
+	{
+	.description = "em_recipe_id",
+	.field_bit_size = 16,
+	.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+	.field_src1 = BNXT_ULP_FIELD_SRC_RF,
+	.field_opr1 = {
+	(BNXT_ULP_RF_IDX_EM_RECIPE_ID >> 8) & 0xff,
+	BNXT_ULP_RF_IDX_EM_RECIPE_ID & 0xff}
+	},
+	{
+	.description = "wc_recipe_id",
+	.field_bit_size = 16,
+	.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+	.field_src1 = BNXT_ULP_FIELD_SRC_RF,
+	.field_opr1 = {
+	(BNXT_ULP_RF_IDX_WC_RECIPE_ID >> 8) & 0xff,
+	BNXT_ULP_RF_IDX_WC_RECIPE_ID & 0xff}
+	},
 	/* class_tid: 1, , table: fkb_select.em_gen_template */
 	{
 	.description = "l2_cntxt_id.en",
@@ -46921,8 +47001,8 @@  struct bnxt_ulp_mapper_field_info ulp_thor2_class_result_field_list[] = {
 	.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
 	.field_src1 = BNXT_ULP_FIELD_SRC_RF,
 	.field_opr1 = {
-	(BNXT_ULP_RF_IDX_RID_1 >> 8) & 0xff,
-	BNXT_ULP_RF_IDX_RID_1 & 0xff}
+	(BNXT_ULP_RF_IDX_RID >> 8) & 0xff,
+	BNXT_ULP_RF_IDX_RID & 0xff}
 	},
 	{
 	.description = "wc_profile_id",
@@ -48117,6 +48197,24 @@  struct bnxt_ulp_mapper_field_info ulp_thor2_class_result_field_list[] = {
 	(BNXT_ULP_RF_IDX_WC_KEY_ID_0 >> 8) & 0xff,
 	BNXT_ULP_RF_IDX_WC_KEY_ID_0 & 0xff}
 	},
+	{
+	.description = "em_recipe_id",
+	.field_bit_size = 16,
+	.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+	.field_src1 = BNXT_ULP_FIELD_SRC_RF,
+	.field_opr1 = {
+	(BNXT_ULP_RF_IDX_EM_RECIPE_ID >> 8) & 0xff,
+	BNXT_ULP_RF_IDX_EM_RECIPE_ID & 0xff}
+	},
+	{
+	.description = "wc_recipe_id",
+	.field_bit_size = 16,
+	.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+	.field_src1 = BNXT_ULP_FIELD_SRC_RF,
+	.field_opr1 = {
+	(BNXT_ULP_RF_IDX_WC_RECIPE_ID >> 8) & 0xff,
+	BNXT_ULP_RF_IDX_WC_RECIPE_ID & 0xff}
+	},
 	/* class_tid: 2, , table: fkb_select.em_gen_template */
 	{
 	.description = "l2_cntxt_id.en",
@@ -52303,6 +52401,12 @@  struct bnxt_ulp_mapper_ident_info ulp_thor2_class_ident_list[] = {
 	.ident_bit_pos = 42
 	},
 	{
+	.description = "em_recipe_id",
+	.regfile_idx = BNXT_ULP_RF_IDX_EM_RECIPE_ID,
+	.ident_bit_size = 16,
+	.ident_bit_pos = 74
+	},
+	{
 	.description = "profile_tcam_index",
 	.regfile_idx = BNXT_ULP_RF_IDX_PROFILE_TCAM_INDEX_0,
 	.ident_bit_size = 10,
@@ -52320,6 +52424,12 @@  struct bnxt_ulp_mapper_ident_info ulp_thor2_class_ident_list[] = {
 	.ident_bit_size = 8,
 	.ident_bit_pos = 58
 	},
+	{
+	.description = "wc_recipe_id",
+	.regfile_idx = BNXT_ULP_RF_IDX_WC_RECIPE_ID,
+	.ident_bit_size = 16,
+	.ident_bit_pos = 90
+	},
 	/* class_tid: 1, , table: hdr_overlap_cache.overlap_check */
 	{
 	.description = "wc_key_id",
@@ -52392,6 +52502,12 @@  struct bnxt_ulp_mapper_ident_info ulp_thor2_class_ident_list[] = {
 	.ident_bit_pos = 42
 	},
 	{
+	.description = "em_recipe_id",
+	.regfile_idx = BNXT_ULP_RF_IDX_EM_RECIPE_ID,
+	.ident_bit_size = 16,
+	.ident_bit_pos = 74
+	},
+	{
 	.description = "profile_tcam_index",
 	.regfile_idx = BNXT_ULP_RF_IDX_PROFILE_TCAM_INDEX_0,
 	.ident_bit_size = 10,
@@ -52409,6 +52525,12 @@  struct bnxt_ulp_mapper_ident_info ulp_thor2_class_ident_list[] = {
 	.ident_bit_size = 8,
 	.ident_bit_pos = 58
 	},
+	{
+	.description = "wc_recipe_id",
+	.regfile_idx = BNXT_ULP_RF_IDX_WC_RECIPE_ID,
+	.ident_bit_size = 16,
+	.ident_bit_pos = 90
+	},
 	/* class_tid: 2, , table: hdr_overlap_cache.overlap_check */
 	{
 	.description = "wc_key_id",
diff --git a/drivers/net/bnxt/tf_ulp/generic_templates/ulp_template_db_thor_class.c b/drivers/net/bnxt/tf_ulp/generic_templates/ulp_template_db_thor_class.c
index 4d8f54dac1..f2fb25d7b6 100644
--- a/drivers/net/bnxt/tf_ulp/generic_templates/ulp_template_db_thor_class.c
+++ b/drivers/net/bnxt/tf_ulp/generic_templates/ulp_template_db_thor_class.c
@@ -13,7 +13,7 @@  struct bnxt_ulp_mapper_tmpl_info ulp_thor_class_tmpl_list[] = {
 	/* class_tid: 1, ingress */
 	[1] = {
 	.device_name = BNXT_ULP_DEVICE_ID_THOR,
-	.num_tbls = 39,
+	.num_tbls = 41,
 	.start_tbl_idx = 0,
 	.reject_info = {
 		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_FALSE,
@@ -23,8 +23,8 @@  struct bnxt_ulp_mapper_tmpl_info ulp_thor_class_tmpl_list[] = {
 	/* class_tid: 2, egress */
 	[2] = {
 	.device_name = BNXT_ULP_DEVICE_ID_THOR,
-	.num_tbls = 25,
-	.start_tbl_idx = 39,
+	.num_tbls = 27,
+	.start_tbl_idx = 41,
 	.reject_info = {
 		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_FALSE,
 		.cond_start_idx = 1545,
@@ -34,7 +34,7 @@  struct bnxt_ulp_mapper_tmpl_info ulp_thor_class_tmpl_list[] = {
 	[3] = {
 	.device_name = BNXT_ULP_DEVICE_ID_THOR,
 	.num_tbls = 23,
-	.start_tbl_idx = 64,
+	.start_tbl_idx = 68,
 	.reject_info = {
 		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_FALSE,
 		.cond_start_idx = 3069,
@@ -44,7 +44,7 @@  struct bnxt_ulp_mapper_tmpl_info ulp_thor_class_tmpl_list[] = {
 	[4] = {
 	.device_name = BNXT_ULP_DEVICE_ID_THOR,
 	.num_tbls = 35,
-	.start_tbl_idx = 87,
+	.start_tbl_idx = 91,
 	.reject_info = {
 		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_FALSE,
 		.cond_start_idx = 3073,
@@ -398,20 +398,19 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.key_bit_size = 73,
 	.key_num_fields = 3,
 	.ident_start_idx = 10,
-	.ident_nums = 5
+	.ident_nums = 7
 	},
 	{ /* class_tid: 1, , table: control.proto_header_cache_miss */
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_CTRL_TABLE,
 	.direction = TF_DIR_RX,
 	.execute_info = {
 		.cond_true_goto  = 1,
-		.cond_false_goto = 11,
+		.cond_false_goto = 13,
 		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
 		.cond_start_idx = 42,
 		.cond_nums = 1 },
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
-	.fdb_opcode = BNXT_ULP_FDB_OPC_ALLOC_RID_REGFILE,
-	.fdb_operand = BNXT_ULP_RF_IDX_RID
+	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP
 	},
 	{ /* class_tid: 1, , table: hdr_overlap_cache.overlap_check */
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_GENERIC_TABLE,
@@ -435,7 +434,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.partial_key_start_idx = 48,
 	.partial_key_num_fields = 1,
 	.partial_key_bit_size = 64,
-	.ident_start_idx = 15,
+	.ident_start_idx = 17,
 	.ident_nums = 2
 	},
 	{ /* class_tid: 1, , table: control.overlap_miss */
@@ -449,7 +448,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 		.cond_nums = 1 },
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_ALLOC_RID_REGFILE,
-	.fdb_operand = BNXT_ULP_RF_IDX_RID_1
+	.fdb_operand = BNXT_ULP_RF_IDX_RID
 	},
 	{ /* class_tid: 1, , table: profile_tcam.allocate_wc_profile */
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,
@@ -465,10 +464,10 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.tbl_operand = BNXT_ULP_RF_IDX_PROFILE_TCAM_INDEX_0,
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_RID_REGFILE,
-	.fdb_operand = BNXT_ULP_RF_IDX_RID_1,
+	.fdb_operand = BNXT_ULP_RF_IDX_RID,
 	.pri_opcode  = BNXT_ULP_PRI_OPC_CONST,
 	.pri_operand = 0,
-	.ident_start_idx = 17,
+	.ident_start_idx = 19,
 	.ident_nums = 1
 	},
 	{ /* class_tid: 1, , table: fkb_select.wc_gen_template */
@@ -485,7 +484,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.tbl_operand = BNXT_ULP_RF_IDX_WC_KEY_ID_0,
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_RID_REGFILE,
-	.fdb_operand = BNXT_ULP_RF_IDX_RID_1,
+	.fdb_operand = BNXT_ULP_RF_IDX_RID,
 	.result_start_idx = 14,
 	.result_bit_size = 106,
 	.result_num_fields = 106
@@ -516,6 +515,19 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.result_bit_size = 48,
 	.result_num_fields = 3
 	},
+	{ /* class_tid: 1, , table: control.proto_header_rid_alloc */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_CTRL_TABLE,
+	.direction = TF_DIR_RX,
+	.execute_info = {
+		.cond_true_goto  = 1,
+		.cond_false_goto = 1,
+		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_TRUE,
+		.cond_start_idx = 253,
+		.cond_nums = 0 },
+	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_ALLOC_RID_REGFILE,
+	.fdb_operand = BNXT_ULP_RF_IDX_RID
+	},
 	{ /* class_tid: 1, , table: fkb_select.em_gen_template_alloc */
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
 	.resource_type = TF_TBL_TYPE_EM_FKB,
@@ -535,6 +547,26 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.result_bit_size = 106,
 	.result_num_fields = 106
 	},
+	{ /* class_tid: 1, , table: em_key_recipe.alloc_only */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_KEY_RECIPE_TABLE,
+	.resource_sub_type =
+		BNXT_ULP_RESOURCE_SUB_TYPE_KEY_RECIPE_TABLE_EM,
+	.direction = TF_DIR_RX,
+	.execute_info = {
+		.cond_true_goto  = 1,
+		.cond_false_goto = 1,
+		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_TRUE,
+		.cond_start_idx = 254,
+		.cond_nums = 0 },
+	.tbl_opcode = BNXT_ULP_KEY_RECIPE_TBL_OPC_ALLOC_REGFILE,
+	.tbl_operand = BNXT_ULP_RF_IDX_EM_RECIPE_ID,
+	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_RID_REGFILE,
+	.fdb_operand = BNXT_ULP_RF_IDX_RID,
+	.result_start_idx = 229,
+	.result_bit_size = 0,
+	.result_num_fields = 0
+	},
 	{ /* class_tid: 1, , table: control.profile_tcam_priority */
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_CTRL_TABLE,
 	.direction = TF_DIR_RX,
@@ -579,7 +611,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.result_start_idx = 229,
 	.result_bit_size = 33,
 	.result_num_fields = 8,
-	.ident_start_idx = 18,
+	.ident_start_idx = 20,
 	.ident_nums = 1
 	},
 	{ /* class_tid: 1, , table: wm_key_recipe.0 */
@@ -593,8 +625,8 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_TRUE,
 		.cond_start_idx = 513,
 		.cond_nums = 0 },
-	.tbl_opcode = BNXT_ULP_KEY_RECIPE_TBL_OPC_WR_REGFILE,
-	.tbl_operand = BNXT_ULP_RF_IDX_PROFILE_TCAM_INDEX_0,
+	.tbl_opcode = BNXT_ULP_KEY_RECIPE_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_RF_IDX_WC_RECIPE_ID,
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_RID_REGFILE,
 	.fdb_operand = BNXT_ULP_RF_IDX_RID,
@@ -626,8 +658,8 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.key_bit_size = 73,
 	.key_num_fields = 3,
 	.result_start_idx = 237,
-	.result_bit_size = 74,
-	.result_num_fields = 6
+	.result_bit_size = 106,
+	.result_num_fields = 8
 	},
 	{ /* class_tid: 1, , table: em_flow_conflict_cache.rd */
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_GENERIC_TABLE,
@@ -648,7 +680,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.blob_key_bit_size = 73,
 	.key_bit_size = 73,
 	.key_num_fields = 3,
-	.ident_start_idx = 19,
+	.ident_start_idx = 21,
 	.ident_nums = 1
 	},
 	{ /* class_tid: 1, , table: control.em_flow_conflict_cache_miss */
@@ -678,7 +710,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.tbl_operand = BNXT_ULP_RF_IDX_EM_KEY_ID_0,
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
-	.result_start_idx = 243,
+	.result_start_idx = 245,
 	.result_bit_size = 106,
 	.result_num_fields = 106
 	},
@@ -694,15 +726,14 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 		.cond_start_idx = 1136,
 		.cond_nums = 0 },
 	.tbl_opcode = BNXT_ULP_KEY_RECIPE_TBL_OPC_WR_REGFILE,
-	.tbl_operand = BNXT_ULP_RF_IDX_EM_KEY_ID_0,
+	.tbl_operand = BNXT_ULP_RF_IDX_EM_RECIPE_ID,
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
-	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_RID_REGFILE,
-	.fdb_operand = BNXT_ULP_RF_IDX_RID,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
 	.key_start_idx = 134,
 	.blob_key_bit_size = 0,
 	.key_bit_size = 0,
 	.key_num_fields = 33,
-	.result_start_idx = 349,
+	.result_start_idx = 351,
 	.result_bit_size = 0,
 	.result_num_fields = 0
 	},
@@ -725,7 +756,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.blob_key_bit_size = 73,
 	.key_bit_size = 73,
 	.key_num_fields = 3,
-	.result_start_idx = 349,
+	.result_start_idx = 351,
 	.result_bit_size = 96,
 	.result_num_fields = 2
 	},
@@ -761,10 +792,10 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.tbl_opcode = BNXT_ULP_EM_TBL_OPC_WR_REGFILE,
 	.tbl_operand = BNXT_ULP_RF_IDX_EM_INSERT_FAIL,
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_DYN_KEY,
-	.key_recipe_operand = BNXT_ULP_RF_IDX_EM_KEY_ID_0,
+	.key_recipe_operand = BNXT_ULP_RF_IDX_EM_RECIPE_ID,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
 	.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_YES,
-	.result_start_idx = 351,
+	.result_start_idx = 353,
 	.result_bit_size = 0,
 	.result_num_fields = 6
 	},
@@ -793,13 +824,13 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.tbl_opcode = BNXT_ULP_TCAM_TBL_OPC_ALLOC_WR_REGFILE,
 	.tbl_operand = BNXT_ULP_RF_IDX_WC_TCAM_INDEX_0,
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_DYN_KEY,
-	.key_recipe_operand = BNXT_ULP_RF_IDX_PROFILE_TCAM_INDEX_0,
+	.key_recipe_operand = BNXT_ULP_RF_IDX_WC_RECIPE_ID,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
 	.pri_opcode  = BNXT_ULP_PRI_OPC_CONST,
 	.pri_operand = 0,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
 	.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_YES,
-	.result_start_idx = 357,
+	.result_start_idx = 359,
 	.result_bit_size = 38,
 	.result_num_fields = 5
 	},
@@ -822,7 +853,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.blob_key_bit_size = 11,
 	.key_bit_size = 11,
 	.key_num_fields = 1,
-	.ident_start_idx = 20,
+	.ident_start_idx = 22,
 	.ident_nums = 2
 	},
 	{ /* class_tid: 2, , table: control.l2_only_check */
@@ -888,21 +919,20 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.blob_key_bit_size = 73,
 	.key_bit_size = 73,
 	.key_num_fields = 3,
-	.ident_start_idx = 22,
-	.ident_nums = 5
+	.ident_start_idx = 24,
+	.ident_nums = 7
 	},
 	{ /* class_tid: 2, , table: control.proto_header_cache_miss */
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_CTRL_TABLE,
 	.direction = TF_DIR_TX,
 	.execute_info = {
 		.cond_true_goto  = 1,
-		.cond_false_goto = 11,
+		.cond_false_goto = 13,
 		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
 		.cond_start_idx = 1571,
 		.cond_nums = 1 },
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
-	.fdb_opcode = BNXT_ULP_FDB_OPC_ALLOC_RID_REGFILE,
-	.fdb_operand = BNXT_ULP_RF_IDX_RID
+	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP
 	},
 	{ /* class_tid: 2, , table: hdr_overlap_cache.overlap_check */
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_GENERIC_TABLE,
@@ -926,7 +956,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.partial_key_start_idx = 176,
 	.partial_key_num_fields = 1,
 	.partial_key_bit_size = 64,
-	.ident_start_idx = 27,
+	.ident_start_idx = 31,
 	.ident_nums = 2
 	},
 	{ /* class_tid: 2, , table: control.overlap_miss */
@@ -940,7 +970,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 		.cond_nums = 1 },
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_ALLOC_RID_REGFILE,
-	.fdb_operand = BNXT_ULP_RF_IDX_RID_1
+	.fdb_operand = BNXT_ULP_RF_IDX_RID
 	},
 	{ /* class_tid: 2, , table: profile_tcam.allocate_wc_profile */
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,
@@ -956,10 +986,10 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.tbl_operand = BNXT_ULP_RF_IDX_PROFILE_TCAM_INDEX_0,
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_RID_REGFILE,
-	.fdb_operand = BNXT_ULP_RF_IDX_RID_1,
+	.fdb_operand = BNXT_ULP_RF_IDX_RID,
 	.pri_opcode  = BNXT_ULP_PRI_OPC_CONST,
 	.pri_operand = 0,
-	.ident_start_idx = 29,
+	.ident_start_idx = 33,
 	.ident_nums = 1
 	},
 	{ /* class_tid: 2, , table: fkb_select.wc_gen_template */
@@ -976,8 +1006,8 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.tbl_operand = BNXT_ULP_RF_IDX_WC_KEY_ID_0,
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_RID_REGFILE,
-	.fdb_operand = BNXT_ULP_RF_IDX_RID_1,
-	.result_start_idx = 362,
+	.fdb_operand = BNXT_ULP_RF_IDX_RID,
+	.result_start_idx = 364,
 	.result_bit_size = 106,
 	.result_num_fields = 106
 	},
@@ -1003,10 +1033,23 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.partial_key_start_idx = 179,
 	.partial_key_num_fields = 1,
 	.partial_key_bit_size = 64,
-	.result_start_idx = 468,
+	.result_start_idx = 470,
 	.result_bit_size = 48,
 	.result_num_fields = 3
 	},
+	{ /* class_tid: 2, , table: control.proto_header_rid_alloc */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_CTRL_TABLE,
+	.direction = TF_DIR_TX,
+	.execute_info = {
+		.cond_true_goto  = 1,
+		.cond_false_goto = 1,
+		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_TRUE,
+		.cond_start_idx = 1784,
+		.cond_nums = 0 },
+	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_ALLOC_RID_REGFILE,
+	.fdb_operand = BNXT_ULP_RF_IDX_RID
+	},
 	{ /* class_tid: 2, , table: fkb_select.em_gen_template_alloc */
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
 	.resource_type = TF_TBL_TYPE_EM_FKB,
@@ -1022,10 +1065,30 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_RID_REGFILE,
 	.fdb_operand = BNXT_ULP_RF_IDX_RID,
-	.result_start_idx = 471,
+	.result_start_idx = 473,
 	.result_bit_size = 106,
 	.result_num_fields = 106
 	},
+	{ /* class_tid: 2, , table: em_key_recipe.alloc_only */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_KEY_RECIPE_TABLE,
+	.resource_sub_type =
+		BNXT_ULP_RESOURCE_SUB_TYPE_KEY_RECIPE_TABLE_EM,
+	.direction = TF_DIR_TX,
+	.execute_info = {
+		.cond_true_goto  = 1,
+		.cond_false_goto = 1,
+		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_TRUE,
+		.cond_start_idx = 1785,
+		.cond_nums = 0 },
+	.tbl_opcode = BNXT_ULP_KEY_RECIPE_TBL_OPC_ALLOC_REGFILE,
+	.tbl_operand = BNXT_ULP_RF_IDX_EM_RECIPE_ID,
+	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_RID_REGFILE,
+	.fdb_operand = BNXT_ULP_RF_IDX_RID,
+	.result_start_idx = 579,
+	.result_bit_size = 0,
+	.result_num_fields = 0
+	},
 	{ /* class_tid: 2, , table: control.profile_tcam_priority */
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_CTRL_TABLE,
 	.direction = TF_DIR_TX,
@@ -1067,10 +1130,10 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.blob_key_bit_size = 94,
 	.key_bit_size = 94,
 	.key_num_fields = 43,
-	.result_start_idx = 577,
+	.result_start_idx = 579,
 	.result_bit_size = 33,
 	.result_num_fields = 8,
-	.ident_start_idx = 30,
+	.ident_start_idx = 34,
 	.ident_nums = 1
 	},
 	{ /* class_tid: 2, , table: wm_key_recipe.0 */
@@ -1084,8 +1147,8 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_TRUE,
 		.cond_start_idx = 2042,
 		.cond_nums = 0 },
-	.tbl_opcode = BNXT_ULP_KEY_RECIPE_TBL_OPC_WR_REGFILE,
-	.tbl_operand = BNXT_ULP_RF_IDX_PROFILE_TCAM_INDEX_0,
+	.tbl_opcode = BNXT_ULP_KEY_RECIPE_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_RF_IDX_WC_RECIPE_ID,
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_RID_REGFILE,
 	.fdb_operand = BNXT_ULP_RF_IDX_RID,
@@ -1093,7 +1156,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.blob_key_bit_size = 0,
 	.key_bit_size = 0,
 	.key_num_fields = 33,
-	.result_start_idx = 585,
+	.result_start_idx = 587,
 	.result_bit_size = 0,
 	.result_num_fields = 0
 	},
@@ -1116,9 +1179,9 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.blob_key_bit_size = 73,
 	.key_bit_size = 73,
 	.key_num_fields = 3,
-	.result_start_idx = 585,
-	.result_bit_size = 74,
-	.result_num_fields = 6
+	.result_start_idx = 587,
+	.result_bit_size = 106,
+	.result_num_fields = 8
 	},
 	{ /* class_tid: 2, , table: em_flow_conflict_cache.rd */
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_GENERIC_TABLE,
@@ -1139,7 +1202,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.blob_key_bit_size = 73,
 	.key_bit_size = 73,
 	.key_num_fields = 3,
-	.ident_start_idx = 31,
+	.ident_start_idx = 35,
 	.ident_nums = 1
 	},
 	{ /* class_tid: 2, , table: control.em_flow_conflict_cache_miss */
@@ -1169,7 +1232,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.tbl_operand = BNXT_ULP_RF_IDX_EM_KEY_ID_0,
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
-	.result_start_idx = 591,
+	.result_start_idx = 595,
 	.result_bit_size = 106,
 	.result_num_fields = 106
 	},
@@ -1185,15 +1248,14 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 		.cond_start_idx = 2666,
 		.cond_nums = 0 },
 	.tbl_opcode = BNXT_ULP_KEY_RECIPE_TBL_OPC_WR_REGFILE,
-	.tbl_operand = BNXT_ULP_RF_IDX_EM_KEY_ID_0,
+	.tbl_operand = BNXT_ULP_RF_IDX_EM_RECIPE_ID,
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
-	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_RID_REGFILE,
-	.fdb_operand = BNXT_ULP_RF_IDX_RID,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
 	.key_start_idx = 262,
 	.blob_key_bit_size = 0,
 	.key_bit_size = 0,
 	.key_num_fields = 33,
-	.result_start_idx = 697,
+	.result_start_idx = 701,
 	.result_bit_size = 0,
 	.result_num_fields = 0
 	},
@@ -1216,7 +1278,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.blob_key_bit_size = 73,
 	.key_bit_size = 73,
 	.key_num_fields = 3,
-	.result_start_idx = 697,
+	.result_start_idx = 701,
 	.result_bit_size = 96,
 	.result_num_fields = 2
 	},
@@ -1252,10 +1314,10 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.tbl_opcode = BNXT_ULP_EM_TBL_OPC_WR_REGFILE,
 	.tbl_operand = BNXT_ULP_RF_IDX_EM_INSERT_FAIL,
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_DYN_KEY,
-	.key_recipe_operand = BNXT_ULP_RF_IDX_EM_KEY_ID_0,
+	.key_recipe_operand = BNXT_ULP_RF_IDX_EM_RECIPE_ID,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
 	.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_YES,
-	.result_start_idx = 699,
+	.result_start_idx = 703,
 	.result_bit_size = 0,
 	.result_num_fields = 6
 	},
@@ -1284,13 +1346,13 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.tbl_opcode = BNXT_ULP_TCAM_TBL_OPC_ALLOC_WR_REGFILE,
 	.tbl_operand = BNXT_ULP_RF_IDX_WC_TCAM_INDEX_0,
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_DYN_KEY,
-	.key_recipe_operand = BNXT_ULP_RF_IDX_PROFILE_TCAM_INDEX_0,
+	.key_recipe_operand = BNXT_ULP_RF_IDX_WC_RECIPE_ID,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
 	.pri_opcode  = BNXT_ULP_PRI_OPC_CONST,
 	.pri_operand = 0,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
 	.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_YES,
-	.result_start_idx = 705,
+	.result_start_idx = 709,
 	.result_bit_size = 38,
 	.result_num_fields = 5
 	},
@@ -1311,7 +1373,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
-	.result_start_idx = 710,
+	.result_start_idx = 714,
 	.result_bit_size = 128,
 	.result_num_fields = 17
 	},
@@ -1334,7 +1396,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.blob_key_bit_size = 10,
 	.key_bit_size = 10,
 	.key_num_fields = 1,
-	.result_start_idx = 727,
+	.result_start_idx = 731,
 	.result_bit_size = 179,
 	.result_num_fields = 8
 	},
@@ -1357,7 +1419,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.blob_key_bit_size = 11,
 	.key_bit_size = 11,
 	.key_num_fields = 1,
-	.ident_start_idx = 32,
+	.ident_start_idx = 36,
 	.ident_nums = 0
 	},
 	{ /* class_tid: 3, , table: control.ing_0 */
@@ -1396,10 +1458,10 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.blob_key_bit_size = 213,
 	.key_bit_size = 213,
 	.key_num_fields = 21,
-	.result_start_idx = 735,
+	.result_start_idx = 739,
 	.result_bit_size = 43,
 	.result_num_fields = 6,
-	.ident_start_idx = 32,
+	.ident_start_idx = 36,
 	.ident_nums = 2
 	},
 	{ /* class_tid: 3, , table: l2_cntxt_tcam_cache.ing_wr */
@@ -1421,7 +1483,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.blob_key_bit_size = 11,
 	.key_bit_size = 11,
 	.key_num_fields = 1,
-	.result_start_idx = 741,
+	.result_start_idx = 745,
 	.result_bit_size = 70,
 	.result_num_fields = 5
 	},
@@ -1447,10 +1509,10 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.blob_key_bit_size = 94,
 	.key_bit_size = 94,
 	.key_num_fields = 43,
-	.result_start_idx = 746,
+	.result_start_idx = 750,
 	.result_bit_size = 33,
 	.result_num_fields = 8,
-	.ident_start_idx = 34,
+	.ident_start_idx = 38,
 	.ident_nums = 0
 	},
 	{ /* class_tid: 3, , table: parif_def_arec_ptr.ing_0 */
@@ -1467,7 +1529,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.tbl_operand = BNXT_ULP_CF_IDX_PHY_PORT_PARIF,
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
-	.result_start_idx = 754,
+	.result_start_idx = 758,
 	.result_bit_size = 32,
 	.result_num_fields = 1
 	},
@@ -1485,7 +1547,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.tbl_operand = BNXT_ULP_CF_IDX_PHY_PORT_PARIF,
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
-	.result_start_idx = 755,
+	.result_start_idx = 759,
 	.result_bit_size = 32,
 	.result_num_fields = 1
 	},
@@ -1506,7 +1568,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
-	.result_start_idx = 756,
+	.result_start_idx = 760,
 	.result_bit_size = 128,
 	.result_num_fields = 17,
 	.encap_num_fields = 0
@@ -1530,7 +1592,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.blob_key_bit_size = 10,
 	.key_bit_size = 10,
 	.key_num_fields = 1,
-	.result_start_idx = 773,
+	.result_start_idx = 777,
 	.result_bit_size = 179,
 	.result_num_fields = 8
 	},
@@ -1565,7 +1627,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.blob_key_bit_size = 11,
 	.key_bit_size = 11,
 	.key_num_fields = 1,
-	.ident_start_idx = 34,
+	.ident_start_idx = 38,
 	.ident_nums = 0
 	},
 	{ /* class_tid: 3, , table: control.egr_1 */
@@ -1598,7 +1660,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.fdb_operand = BNXT_ULP_RF_IDX_RID,
 	.pri_opcode  = BNXT_ULP_PRI_OPC_CONST,
 	.pri_operand = 0,
-	.ident_start_idx = 34,
+	.ident_start_idx = 38,
 	.ident_nums = 1
 	},
 	{ /* class_tid: 3, , table: ilt_tbl.egr_vfr */
@@ -1616,7 +1678,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_RID_REGFILE,
 	.fdb_operand = BNXT_ULP_RF_IDX_RID,
-	.result_start_idx = 781,
+	.result_start_idx = 785,
 	.result_bit_size = 64,
 	.result_num_fields = 8
 	},
@@ -1639,7 +1701,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.blob_key_bit_size = 11,
 	.key_bit_size = 11,
 	.key_num_fields = 1,
-	.result_start_idx = 789,
+	.result_start_idx = 793,
 	.result_bit_size = 70,
 	.result_num_fields = 5
 	},
@@ -1662,7 +1724,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.blob_key_bit_size = 11,
 	.key_bit_size = 11,
 	.key_num_fields = 1,
-	.ident_start_idx = 35,
+	.ident_start_idx = 39,
 	.ident_nums = 0
 	},
 	{ /* class_tid: 3, , table: control.egr_2 */
@@ -1699,10 +1761,10 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.blob_key_bit_size = 213,
 	.key_bit_size = 213,
 	.key_num_fields = 21,
-	.result_start_idx = 794,
+	.result_start_idx = 798,
 	.result_bit_size = 43,
 	.result_num_fields = 6,
-	.ident_start_idx = 35,
+	.ident_start_idx = 39,
 	.ident_nums = 2
 	},
 	{ /* class_tid: 3, , table: l2_cntxt_tcam_cache.egr_wr */
@@ -1724,7 +1786,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.blob_key_bit_size = 11,
 	.key_bit_size = 11,
 	.key_num_fields = 1,
-	.result_start_idx = 800,
+	.result_start_idx = 804,
 	.result_bit_size = 70,
 	.result_num_fields = 5
 	},
@@ -1742,7 +1804,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.tbl_operand = BNXT_ULP_CF_IDX_DRV_FUNC_PARIF,
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
-	.result_start_idx = 805,
+	.result_start_idx = 809,
 	.result_bit_size = 32,
 	.result_num_fields = 1
 	},
@@ -1760,7 +1822,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.tbl_operand = BNXT_ULP_CF_IDX_DRV_FUNC_PARIF,
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
-	.result_start_idx = 806,
+	.result_start_idx = 810,
 	.result_bit_size = 32,
 	.result_num_fields = 1
 	},
@@ -1784,7 +1846,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.blob_key_bit_size = 15,
 	.key_bit_size = 15,
 	.key_num_fields = 3,
-	.ident_start_idx = 37,
+	.ident_start_idx = 41,
 	.ident_nums = 0
 	},
 	{ /* class_tid: 4, , table: control.prof_tcam_cache.vfr_glb_act_rec_rd.0 */
@@ -1816,7 +1878,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.tbl_operand = BNXT_ULP_GLB_RF_IDX_GLB_MODIFY_PTR,
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
-	.result_start_idx = 807,
+	.result_start_idx = 811,
 	.result_bit_size = 0,
 	.result_num_fields = 0,
 	.encap_num_fields = 20
@@ -1838,7 +1900,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
-	.result_start_idx = 827,
+	.result_start_idx = 831,
 	.result_bit_size = 128,
 	.result_num_fields = 17,
 	.encap_num_fields = 0
@@ -1858,7 +1920,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_RID_REGFILE,
 	.fdb_operand = BNXT_ULP_RF_IDX_RID,
-	.result_start_idx = 844,
+	.result_start_idx = 848,
 	.result_bit_size = 32,
 	.result_num_fields = 1
 	},
@@ -1877,7 +1939,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_RID_REGFILE,
 	.fdb_operand = BNXT_ULP_RF_IDX_RID,
-	.result_start_idx = 845,
+	.result_start_idx = 849,
 	.result_bit_size = 32,
 	.result_num_fields = 1
 	},
@@ -1901,7 +1963,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.blob_key_bit_size = 15,
 	.key_bit_size = 15,
 	.key_num_fields = 3,
-	.result_start_idx = 846,
+	.result_start_idx = 850,
 	.result_bit_size = 138,
 	.result_num_fields = 7
 	},
@@ -1924,7 +1986,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.blob_key_bit_size = 11,
 	.key_bit_size = 11,
 	.key_num_fields = 1,
-	.ident_start_idx = 37,
+	.ident_start_idx = 41,
 	.ident_nums = 0
 	},
 	{ /* class_tid: 4, , table: control.vf_2_vfr.0 */
@@ -1959,7 +2021,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.blob_key_bit_size = 11,
 	.key_bit_size = 11,
 	.key_num_fields = 1,
-	.ident_start_idx = 37,
+	.ident_start_idx = 41,
 	.ident_nums = 1
 	},
 	{ /* class_tid: 4, , table: l2_cntxt_tcam.vf_egr */
@@ -1983,10 +2045,10 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.blob_key_bit_size = 213,
 	.key_bit_size = 213,
 	.key_num_fields = 21,
-	.result_start_idx = 853,
+	.result_start_idx = 857,
 	.result_bit_size = 43,
 	.result_num_fields = 6,
-	.ident_start_idx = 38,
+	.ident_start_idx = 42,
 	.ident_nums = 1
 	},
 	{ /* class_tid: 4, , table: profile_tcam.prof_func_catch_all */
@@ -2012,10 +2074,10 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.blob_key_bit_size = 94,
 	.key_bit_size = 94,
 	.key_num_fields = 43,
-	.result_start_idx = 859,
+	.result_start_idx = 863,
 	.result_bit_size = 33,
 	.result_num_fields = 8,
-	.ident_start_idx = 39,
+	.ident_start_idx = 43,
 	.ident_nums = 0
 	},
 	{ /* class_tid: 4, , table: l2_cntxt_tcam_cache.vf_egr_wr */
@@ -2037,7 +2099,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.blob_key_bit_size = 11,
 	.key_bit_size = 11,
 	.key_num_fields = 1,
-	.result_start_idx = 867,
+	.result_start_idx = 871,
 	.result_bit_size = 70,
 	.result_num_fields = 5
 	},
@@ -2058,7 +2120,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPC_PUSH_AND_SET_VFR_FLAG,
-	.result_start_idx = 872,
+	.result_start_idx = 876,
 	.result_bit_size = 128,
 	.result_num_fields = 17
 	},
@@ -2082,7 +2144,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.blob_key_bit_size = 15,
 	.key_bit_size = 15,
 	.key_num_fields = 3,
-	.ident_start_idx = 39,
+	.ident_start_idx = 43,
 	.ident_nums = 0
 	},
 	{ /* class_tid: 4, , table: control.prof_tcam_cache.vfr.0 */
@@ -2115,7 +2177,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
-	.result_start_idx = 889,
+	.result_start_idx = 893,
 	.result_bit_size = 128,
 	.result_num_fields = 17,
 	.encap_num_fields = 0
@@ -2143,10 +2205,10 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.blob_key_bit_size = 213,
 	.key_bit_size = 213,
 	.key_num_fields = 21,
-	.result_start_idx = 906,
+	.result_start_idx = 910,
 	.result_bit_size = 43,
 	.result_num_fields = 6,
-	.ident_start_idx = 39,
+	.ident_start_idx = 43,
 	.ident_nums = 0
 	},
 	{ /* class_tid: 4, , table: l2_cntxt_tcam.vfr_2_vf_ing.0 */
@@ -2172,10 +2234,10 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.blob_key_bit_size = 213,
 	.key_bit_size = 213,
 	.key_num_fields = 21,
-	.result_start_idx = 912,
+	.result_start_idx = 916,
 	.result_bit_size = 43,
 	.result_num_fields = 6,
-	.ident_start_idx = 39,
+	.ident_start_idx = 43,
 	.ident_nums = 0
 	},
 	{ /* class_tid: 4, , table: fkb_select.vfr_em */
@@ -2192,7 +2254,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.tbl_operand = BNXT_ULP_GLB_RF_IDX_GLB_VFR_EM_KEY_ID_0,
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
-	.result_start_idx = 918,
+	.result_start_idx = 922,
 	.result_bit_size = 106,
 	.result_num_fields = 106
 	},
@@ -2210,7 +2272,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.tbl_operand = BNXT_ULP_GLB_RF_IDX_GLB_VFR_EM_KEY_ID_1,
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
-	.result_start_idx = 1024,
+	.result_start_idx = 1028,
 	.result_bit_size = 106,
 	.result_num_fields = 106
 	},
@@ -2237,7 +2299,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.blob_key_bit_size = 94,
 	.key_bit_size = 94,
 	.key_num_fields = 43,
-	.result_start_idx = 1130,
+	.result_start_idx = 1134,
 	.result_bit_size = 33,
 	.result_num_fields = 8
 	},
@@ -2264,7 +2326,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.blob_key_bit_size = 94,
 	.key_bit_size = 94,
 	.key_num_fields = 43,
-	.result_start_idx = 1138,
+	.result_start_idx = 1142,
 	.result_bit_size = 33,
 	.result_num_fields = 8
 	},
@@ -2288,7 +2350,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.blob_key_bit_size = 15,
 	.key_bit_size = 15,
 	.key_num_fields = 3,
-	.result_start_idx = 1146,
+	.result_start_idx = 1150,
 	.result_bit_size = 138,
 	.result_num_fields = 7
 	},
@@ -2306,7 +2368,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.tbl_operand = BNXT_ULP_CF_IDX_VF_FUNC_SVIF,
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
-	.result_start_idx = 1153,
+	.result_start_idx = 1157,
 	.result_bit_size = 64,
 	.result_num_fields = 8
 	},
@@ -2327,7 +2389,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.blob_key_bit_size = 0,
 	.key_bit_size = 0,
 	.key_num_fields = 3,
-	.result_start_idx = 1161,
+	.result_start_idx = 1165,
 	.result_bit_size = 0,
 	.result_num_fields = 6
 	},
@@ -2351,7 +2413,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.blob_key_bit_size = 11,
 	.key_bit_size = 11,
 	.key_num_fields = 1,
-	.ident_start_idx = 39,
+	.ident_start_idx = 43,
 	.ident_nums = 0
 	},
 	{ /* class_tid: 4, , table: control.0 */
@@ -2382,7 +2444,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_RID_REGFILE,
 	.fdb_operand = BNXT_ULP_RF_IDX_RID,
-	.result_start_idx = 1167,
+	.result_start_idx = 1171,
 	.result_bit_size = 64,
 	.result_num_fields = 8
 	},
@@ -2405,7 +2467,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.blob_key_bit_size = 11,
 	.key_bit_size = 11,
 	.key_num_fields = 1,
-	.result_start_idx = 1175,
+	.result_start_idx = 1179,
 	.result_bit_size = 70,
 	.result_num_fields = 5
 	},
@@ -2423,7 +2485,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.tbl_operand = BNXT_ULP_CF_IDX_VF_FUNC_SVIF,
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
-	.result_start_idx = 1180,
+	.result_start_idx = 1184,
 	.result_bit_size = 64,
 	.result_num_fields = 8
 	},
@@ -2443,7 +2505,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.tbl_operand = BNXT_ULP_RF_IDX_MODIFY_PTR,
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
-	.result_start_idx = 1188,
+	.result_start_idx = 1192,
 	.result_bit_size = 0,
 	.result_num_fields = 0,
 	.encap_num_fields = 20
@@ -2465,7 +2527,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
-	.result_start_idx = 1208,
+	.result_start_idx = 1212,
 	.result_bit_size = 128,
 	.result_num_fields = 17
 	},
@@ -2486,7 +2548,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.key_recipe_opcode = BNXT_ULP_KEY_RECIPE_OPC_NOP,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
-	.result_start_idx = 1225,
+	.result_start_idx = 1229,
 	.result_bit_size = 128,
 	.result_num_fields = 17
 	},
@@ -2507,7 +2569,7 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 	.blob_key_bit_size = 0,
 	.key_bit_size = 0,
 	.key_num_fields = 2,
-	.result_start_idx = 1242,
+	.result_start_idx = 1246,
 	.result_bit_size = 0,
 	.result_num_fields = 6
 	}
@@ -6759,7 +6821,7 @@  struct bnxt_ulp_mapper_cond_info ulp_thor_class_cond_list[] = {
 	},
 	/* field_cond: class_tid: 1, fkb_select.em_gen_template:956*/
 	{
-	.cond_opcode = BNXT_ULP_COND_OPC_CF_BIT_NOT_SET,
+	.cond_opcode = BNXT_ULP_COND_OPC_CF_BIT_IS_SET,
 	.cond_operand = BNXT_ULP_CF_BIT_L2_ONLY
 	},
 	{
@@ -39971,8 +40033,8 @@  struct bnxt_ulp_mapper_field_info ulp_thor_class_result_field_list[] = {
 	.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
 	.field_src1 = BNXT_ULP_FIELD_SRC_RF,
 	.field_opr1 = {
-	(BNXT_ULP_RF_IDX_RID_1 >> 8) & 0xff,
-	BNXT_ULP_RF_IDX_RID_1 & 0xff}
+	(BNXT_ULP_RF_IDX_RID >> 8) & 0xff,
+	BNXT_ULP_RF_IDX_RID & 0xff}
 	},
 	{
 	.description = "wc_profile_id",
@@ -40750,6 +40812,24 @@  struct bnxt_ulp_mapper_field_info ulp_thor_class_result_field_list[] = {
 	(BNXT_ULP_RF_IDX_WC_KEY_ID_0 >> 8) & 0xff,
 	BNXT_ULP_RF_IDX_WC_KEY_ID_0 & 0xff}
 	},
+	{
+	.description = "em_recipe_id",
+	.field_bit_size = 16,
+	.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+	.field_src1 = BNXT_ULP_FIELD_SRC_RF,
+	.field_opr1 = {
+	(BNXT_ULP_RF_IDX_EM_RECIPE_ID >> 8) & 0xff,
+	BNXT_ULP_RF_IDX_EM_RECIPE_ID & 0xff}
+	},
+	{
+	.description = "wc_recipe_id",
+	.field_bit_size = 16,
+	.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+	.field_src1 = BNXT_ULP_FIELD_SRC_RF,
+	.field_opr1 = {
+	(BNXT_ULP_RF_IDX_WC_RECIPE_ID >> 8) & 0xff,
+	BNXT_ULP_RF_IDX_WC_RECIPE_ID & 0xff}
+	},
 	/* class_tid: 1, , table: fkb_select.em_gen_template */
 	{
 	.description = "l2_cntxt_id.en",
@@ -42763,8 +42843,8 @@  struct bnxt_ulp_mapper_field_info ulp_thor_class_result_field_list[] = {
 	.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
 	.field_src1 = BNXT_ULP_FIELD_SRC_RF,
 	.field_opr1 = {
-	(BNXT_ULP_RF_IDX_RID_1 >> 8) & 0xff,
-	BNXT_ULP_RF_IDX_RID_1 & 0xff}
+	(BNXT_ULP_RF_IDX_RID >> 8) & 0xff,
+	BNXT_ULP_RF_IDX_RID & 0xff}
 	},
 	{
 	.description = "wc_profile_id",
@@ -43542,6 +43622,24 @@  struct bnxt_ulp_mapper_field_info ulp_thor_class_result_field_list[] = {
 	(BNXT_ULP_RF_IDX_WC_KEY_ID_0 >> 8) & 0xff,
 	BNXT_ULP_RF_IDX_WC_KEY_ID_0 & 0xff}
 	},
+	{
+	.description = "em_recipe_id",
+	.field_bit_size = 16,
+	.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+	.field_src1 = BNXT_ULP_FIELD_SRC_RF,
+	.field_opr1 = {
+	(BNXT_ULP_RF_IDX_EM_RECIPE_ID >> 8) & 0xff,
+	BNXT_ULP_RF_IDX_EM_RECIPE_ID & 0xff}
+	},
+	{
+	.description = "wc_recipe_id",
+	.field_bit_size = 16,
+	.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+	.field_src1 = BNXT_ULP_FIELD_SRC_RF,
+	.field_opr1 = {
+	(BNXT_ULP_RF_IDX_WC_RECIPE_ID >> 8) & 0xff,
+	BNXT_ULP_RF_IDX_WC_RECIPE_ID & 0xff}
+	},
 	/* class_tid: 2, , table: fkb_select.em_gen_template */
 	{
 	.description = "l2_cntxt_id.en",
@@ -48221,6 +48319,12 @@  struct bnxt_ulp_mapper_ident_info ulp_thor_class_ident_list[] = {
 	.ident_bit_pos = 42
 	},
 	{
+	.description = "em_recipe_id",
+	.regfile_idx = BNXT_ULP_RF_IDX_EM_RECIPE_ID,
+	.ident_bit_size = 16,
+	.ident_bit_pos = 74
+	},
+	{
 	.description = "profile_tcam_index",
 	.regfile_idx = BNXT_ULP_RF_IDX_PROFILE_TCAM_INDEX_0,
 	.ident_bit_size = 10,
@@ -48238,6 +48342,12 @@  struct bnxt_ulp_mapper_ident_info ulp_thor_class_ident_list[] = {
 	.ident_bit_size = 8,
 	.ident_bit_pos = 58
 	},
+	{
+	.description = "wc_recipe_id",
+	.regfile_idx = BNXT_ULP_RF_IDX_WC_RECIPE_ID,
+	.ident_bit_size = 16,
+	.ident_bit_pos = 90
+	},
 	/* class_tid: 1, , table: hdr_overlap_cache.overlap_check */
 	{
 	.description = "wc_key_id",
@@ -48303,6 +48413,12 @@  struct bnxt_ulp_mapper_ident_info ulp_thor_class_ident_list[] = {
 	.ident_bit_pos = 42
 	},
 	{
+	.description = "em_recipe_id",
+	.regfile_idx = BNXT_ULP_RF_IDX_EM_RECIPE_ID,
+	.ident_bit_size = 16,
+	.ident_bit_pos = 74
+	},
+	{
 	.description = "profile_tcam_index",
 	.regfile_idx = BNXT_ULP_RF_IDX_PROFILE_TCAM_INDEX_0,
 	.ident_bit_size = 10,
@@ -48320,6 +48436,12 @@  struct bnxt_ulp_mapper_ident_info ulp_thor_class_ident_list[] = {
 	.ident_bit_size = 8,
 	.ident_bit_pos = 58
 	},
+	{
+	.description = "wc_recipe_id",
+	.regfile_idx = BNXT_ULP_RF_IDX_WC_RECIPE_ID,
+	.ident_bit_size = 16,
+	.ident_bit_pos = 90
+	},
 	/* class_tid: 2, , table: hdr_overlap_cache.overlap_check */
 	{
 	.description = "wc_key_id",