diff mbox series

[56/58] net/bnxt: cleanup ULP parser and mapper

Message ID 20210530085929.29695-57-venkatkumar.duvvuru@broadcom.com (mailing list archive)
State Superseded
Delegated to: Ajit Khaparde
Headers show
Series enhancements to host based flow table management | expand

Checks

Context Check Description
ci/checkpatch success coding style OK

Commit Message

Venkat Duvvuru May 30, 2021, 8:59 a.m. UTC
From: Shahaji Bhosle <sbhosle@broadcom.com>

1. disable accum_stats for thor
2. delete the generic port table for default flow
3. The packet mask to calculate the number of packets must be 28 bits.
4. Increase the wc tcam entries to 512 per application and add 2
   shared l2 context tcam entries to match identifiers for flow
   scaling
5. ignore multiple critical resources in ulp flow database
6. Renamed conditional code update to function opcode.
7. Updated tf debug logs to support the above changes.
8. As part of the HA cleanup, the shared session name now allows the user
   to designate that the session uses the wc_tcam regions within the
   shared session.
9. The CFA action pointer does not exist if there is no support for
   VF representor, so no need to display the message for use case where
   there is no support for VF representors.
10. Cleanup flow counter software accumulation.
11. When an ungraceful exit of testpmd happens, the HA code now
    clears the appropriate shared WC region and sets the HA state.
12. Removal of unnecessary INFO message.  The message is an indicator that
    the ports are being removed from dpdk, but all cleanup has not
    completed.  Once the cleanup is completed, the timer will be stopped.

Signed-off-by: Shahaji Bhosle <sbhosle@broadcom.com>
Signed-off-by: Mike Baucom <michael.baucom@broadcom.com>
Signed-off-by: Kishore Padmanabha <kishore.padmanabha@broadcom.com>
Signed-off-by: Venkat Duvvuru <venkatkumar.duvvuru@broadcom.com>
Reviewed-by: Randy Schacher <stuart.schacher@broadcom.com>
Reviewed-by: Ajit Kumar Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/hcapi/cfa/hcapi_cfa.h        |     4 +-
 drivers/net/bnxt/hcapi/cfa/hcapi_cfa_defs.h   |     8 +-
 drivers/net/bnxt/hcapi/cfa/hcapi_cfa_p4.c     |     2 +-
 drivers/net/bnxt/tf_core/bitalloc.h           |     2 +-
 drivers/net/bnxt/tf_core/cfa_resource_types.h |     2 +-
 drivers/net/bnxt/tf_core/dpool.h              |    10 +-
 drivers/net/bnxt/tf_core/tf_core.h            |     8 +-
 drivers/net/bnxt/tf_core/tf_em.h              |     2 +-
 drivers/net/bnxt/tf_core/tf_session.h         |     2 +-
 drivers/net/bnxt/tf_core/tf_shadow_tcam.c     |     2 +-
 drivers/net/bnxt/tf_core/tfp.h                |     6 +-
 drivers/net/bnxt/tf_ulp/bnxt_tf_pmd_shim.c    |   378 +
 drivers/net/bnxt/tf_ulp/bnxt_tf_pmd_shim.h    |    29 +
 drivers/net/bnxt/tf_ulp/bnxt_ulp.c            |   102 +-
 drivers/net/bnxt/tf_ulp/bnxt_ulp.h            |     4 +
 drivers/net/bnxt/tf_ulp/bnxt_ulp_flow.c       |     1 +
 drivers/net/bnxt/tf_ulp/meson.build           |     1 +
 drivers/net/bnxt/tf_ulp/ulp_def_rules.c       |     3 +-
 drivers/net/bnxt/tf_ulp/ulp_fc_mgr.c          |   103 +-
 drivers/net/bnxt/tf_ulp/ulp_fc_mgr.h          |     1 +
 drivers/net/bnxt/tf_ulp/ulp_flow_db.c         |    14 +-
 drivers/net/bnxt/tf_ulp/ulp_flow_db.h         |     2 +-
 drivers/net/bnxt/tf_ulp/ulp_gen_tbl.c         |    14 +-
 drivers/net/bnxt/tf_ulp/ulp_ha_mgr.c          |   197 +-
 drivers/net/bnxt/tf_ulp/ulp_mapper.c          |   153 +-
 drivers/net/bnxt/tf_ulp/ulp_mapper.h          |     6 +-
 drivers/net/bnxt/tf_ulp/ulp_port_db.c         |    43 +-
 drivers/net/bnxt/tf_ulp/ulp_rte_parser.c      |    38 +-
 drivers/net/bnxt/tf_ulp/ulp_rte_parser.h      |     2 +-
 .../net/bnxt/tf_ulp/ulp_template_db_enum.h    |    92 +-
 drivers/net/bnxt/tf_ulp/ulp_template_db_tbl.c |   158 +-
 .../bnxt/tf_ulp/ulp_template_db_thor_act.c    |   185 +-
 .../bnxt/tf_ulp/ulp_template_db_thor_class.c  | 29120 +++++++++++++++-
 .../tf_ulp/ulp_template_db_wh_plus_class.c    |    76 +-
 drivers/net/bnxt/tf_ulp/ulp_template_struct.h |    20 +-
 drivers/net/bnxt/tf_ulp/ulp_utils.c           |     8 +-
 drivers/net/bnxt/tf_ulp/ulp_utils.h           |     4 +-
 37 files changed, 30000 insertions(+), 802 deletions(-)
 create mode 100644 drivers/net/bnxt/tf_ulp/bnxt_tf_pmd_shim.c
 create mode 100644 drivers/net/bnxt/tf_ulp/bnxt_tf_pmd_shim.h
diff mbox series

Patch

diff --git a/drivers/net/bnxt/hcapi/cfa/hcapi_cfa.h b/drivers/net/bnxt/hcapi/cfa/hcapi_cfa.h
index c67aa29ad0..2f23c4a7fc 100644
--- a/drivers/net/bnxt/hcapi/cfa/hcapi_cfa.h
+++ b/drivers/net/bnxt/hcapi/cfa/hcapi_cfa.h
@@ -44,7 +44,7 @@  struct hcapi_cfa_devinfo {
 /** CFA device specific function hooks structure
  *
  * The following device hooks can be defined; unless noted otherwise, they are
- * optional and can be filled with a null pointer. The pupose of these hooks
+ * optional and can be filled with a null pointer. The purpose of these hooks
  * to support CFA device operations for different device variants.
  */
 struct hcapi_cfa_devops {
@@ -93,7 +93,7 @@  struct hcapi_cfa_devops {
 	 *   is stored.  It holds the bucket index and the data pointer of
 	 *   a dynamic bucket that is chained to static bucket
 	 *   When using the HWOP GET, this is a pointer to the key location
-	 *   which should be retreved.
+	 *   which should be retrieved.
 	 *
 	 *   (valid for SR2 only).
 	 * @return
diff --git a/drivers/net/bnxt/hcapi/cfa/hcapi_cfa_defs.h b/drivers/net/bnxt/hcapi/cfa/hcapi_cfa_defs.h
index 5135a857e1..e1d6f6ee6b 100644
--- a/drivers/net/bnxt/hcapi/cfa/hcapi_cfa_defs.h
+++ b/drivers/net/bnxt/hcapi/cfa/hcapi_cfa_defs.h
@@ -100,7 +100,7 @@  enum hcapi_cfa_hwops {
 				*   operation is also undo the add operation
 				*   performed by the HCAPI_CFA_HWOPS_ADD op.
 				*/
-	HCAPI_CFA_HWOPS_EVICT, /*< This operaton is used to evit entries from
+	HCAPI_CFA_HWOPS_EVICT, /*< This operation is used to edit entries from
 				*   CFA cache memories. This operation is only
 				*   applicable to tables that use CFA caches.
 				*/
@@ -231,7 +231,7 @@  struct hcapi_cfa_key_tbl {
 	uint32_t size;
 	/** [in] number of key buckets, applicable for newer chips */
 	uint32_t num_buckets;
-	/** [in] For EEM, this is KEY1 base mem pointer. Fo off-chip EM,
+	/** [in] For EEM, this is KEY1 base mem pointer. For off-chip EM,
 	 *  this is the key record memory base pointer within the key table,
 	 *  applicable for newer chip
 	 */
@@ -273,8 +273,8 @@  struct hcapi_cfa_key_data {
 	uint8_t tbl_scope;
 	/** [in] the fid owner of the key */
 	uint64_t metadata;
-	/** [in] stored with the bucket which can be used to by
-	 *       the caller to retreved later via the GET HW OP.
+	/** [in] stored with the bucket which can be used by
+	 *       the caller to retrieve later via the GET HW OP.
 	 */
 };
 
diff --git a/drivers/net/bnxt/hcapi/cfa/hcapi_cfa_p4.c b/drivers/net/bnxt/hcapi/cfa/hcapi_cfa_p4.c
index 79bc569989..85e8052e0b 100644
--- a/drivers/net/bnxt/hcapi/cfa/hcapi_cfa_p4.c
+++ b/drivers/net/bnxt/hcapi/cfa/hcapi_cfa_p4.c
@@ -230,7 +230,7 @@  static int hcapi_cfa_p4_key_hw_op_del(struct hcapi_cfa_hwop *op,
 	return rc;
 }
 
-/** Apporiximation of hcapi_cfa_key_hw_op()
+/** Approximation of hcapi_cfa_key_hw_op()
  *
  *
  */
diff --git a/drivers/net/bnxt/tf_core/bitalloc.h b/drivers/net/bnxt/tf_core/bitalloc.h
index e3b389e68d..db8a09abdd 100644
--- a/drivers/net/bnxt/tf_core/bitalloc.h
+++ b/drivers/net/bnxt/tf_core/bitalloc.h
@@ -60,7 +60,7 @@  struct bitalloc {
 #define BA_NO_ENTRY_FOUND   -1
 
 /**
- * Initializates the bitallocator
+ * Initializes the bitallocator
  *
  * Returns 0 on success, -1 on failure.  Size is arbitrary up to
  * BITALLOC_MAX_SIZE
diff --git a/drivers/net/bnxt/tf_core/cfa_resource_types.h b/drivers/net/bnxt/tf_core/cfa_resource_types.h
index b63b87bcf3..0d7df2920b 100644
--- a/drivers/net/bnxt/tf_core/cfa_resource_types.h
+++ b/drivers/net/bnxt/tf_core/cfa_resource_types.h
@@ -57,7 +57,7 @@ 
 #define CFA_RESOURCE_TYPE_P59_RANGE_PROF         0x15UL
 /* Range */
 #define CFA_RESOURCE_TYPE_P59_RANGE              0x16UL
-/* Link Aggrigation */
+/* Link Aggregation */
 #define CFA_RESOURCE_TYPE_P59_LAG                0x17UL
 /* VEB TCAM */
 #define CFA_RESOURCE_TYPE_P59_VEB_TCAM           0x18UL
diff --git a/drivers/net/bnxt/tf_core/dpool.h b/drivers/net/bnxt/tf_core/dpool.h
index db9d53f01f..fb79c7be4b 100644
--- a/drivers/net/bnxt/tf_core/dpool.h
+++ b/drivers/net/bnxt/tf_core/dpool.h
@@ -49,7 +49,7 @@  struct dpool_free_list_entry {
  * Free list
  *
  * Used internally to record free entries in the dpool entry array.
- * Each entry represents a single or multiple contiguious entries
+ * Each entry represents a single or multiple contiguous entries
  * in the dpool entry array.
  *
  * Used only during the defrag operation.
@@ -98,7 +98,7 @@  struct dpool_adj_list_entry {
  *
  * A list of references to entries in the dpool entry array that
  * have free entries to the left and right. Since we pack to the
- * left entries will always have a non zero left cout.
+ * left entries will always have a non zero left out.
  *
  * Used only during the defrag operation.
  */
@@ -281,17 +281,17 @@  void dpool_dump(struct dpool *dpool);
 /**
  * dpool_defrag
  *
- * De-fragment the dpool array and apply the specified defrag stratagy.
+ * De-fragment the dpool array and apply the specified defrag strategy.
  *
  * [in] dpool
  *      The dpool
  *
  * [in] entry_size
- *      If using the DP_DEFRAG_TO_FIT stratagy defrag will stop when there's
+ *      If using the DP_DEFRAG_TO_FIT strategy defrag will stop when there's
  *      at least entry_size space available.
  *
  * [i] defrag
- *     Defrag stratagy:
+ *     Defrag strategy:
  *
  *     DP_DEFRAG_ALL    (0x1) - Defrag until there is nothing left
  *                              to defrag.
diff --git a/drivers/net/bnxt/tf_core/tf_core.h b/drivers/net/bnxt/tf_core/tf_core.h
index be5725a66a..84b234f0e3 100644
--- a/drivers/net/bnxt/tf_core/tf_core.h
+++ b/drivers/net/bnxt/tf_core/tf_core.h
@@ -396,7 +396,7 @@  enum tf_search_status {
 enum tf_em_tbl_type {
 	/** The number of internal EM records for the session */
 	TF_EM_TBL_TYPE_EM_RECORD,
-	/** The number of table scopes reequested */
+	/** The number of table scopes requested */
 	TF_EM_TBL_TYPE_TBL_SCOPE,
 	TF_EM_TBL_TYPE_MAX
 };
@@ -415,7 +415,7 @@  enum tf_em_tbl_type {
  */
 struct tf_session_info {
 	/**
-	 * TrueFlow Version. Used to control the structure layout when
+	 * TruFlow Version. Used to control the structure layout when
 	 * sharing sessions. No guarantee that a secondary process
 	 * would come from the same version of an executable.
 	 * TruFlow initializes this variable on tf_open_session().
@@ -520,7 +520,7 @@  struct tf_identifier_resources {
 struct tf_tbl_resources {
 	/**
 	 * Array of TF Table types where each entry is expected to be
-	 * set to the requeste resource number of that specific
+	 * set to the requested resource number of that specific
 	 * type. The index used is tf_tbl_type.
 	 */
 	uint16_t cnt[TF_TBL_TYPE_MAX];
@@ -1677,7 +1677,7 @@  struct tf_search_tbl_entry_parms {
  *
  * Implementation:
  *
- * A hash is performed on the result data and mappe3d to a shadow copy entry
+ * A hash is performed on the result data and mapped to a shadow copy entry
  * where the result is populated.  If the result matches the entry, hit is set,
  * ref_cnt is incremented (if alloc), and the search status indicates what
  * action the caller can take regarding setting the entry.
diff --git a/drivers/net/bnxt/tf_core/tf_em.h b/drivers/net/bnxt/tf_core/tf_em.h
index 9d168c3c7f..568071ad8c 100644
--- a/drivers/net/bnxt/tf_core/tf_em.h
+++ b/drivers/net/bnxt/tf_core/tf_em.h
@@ -95,7 +95,7 @@ 
  *  |   Index      |E |
  *  +--------------+--+
  *
- * E = Entry (bucket inndex)
+ * E = Entry (bucket index)
  */
 #define TF_EM_INTERNAL_INDEX_SHIFT 2
 #define TF_EM_INTERNAL_INDEX_MASK 0xFFFC
diff --git a/drivers/net/bnxt/tf_core/tf_session.h b/drivers/net/bnxt/tf_core/tf_session.h
index c2875f9fa1..d68421cd13 100644
--- a/drivers/net/bnxt/tf_core/tf_session.h
+++ b/drivers/net/bnxt/tf_core/tf_session.h
@@ -59,7 +59,7 @@ 
  * tf_session_info.
  */
 struct tf_session {
-	/** TrueFlow Version. Used to control the structure layout
+	/** TruFlow Version. Used to control the structure layout
 	 * when sharing sessions. No guarantee that a secondary
 	 * process would come from the same version of an executable.
 	 */
diff --git a/drivers/net/bnxt/tf_core/tf_shadow_tcam.c b/drivers/net/bnxt/tf_core/tf_shadow_tcam.c
index 523261f189..5fcd1f9107 100644
--- a/drivers/net/bnxt/tf_core/tf_shadow_tcam.c
+++ b/drivers/net/bnxt/tf_core/tf_shadow_tcam.c
@@ -25,7 +25,7 @@ 
  *   - the result table is stored separately since it only needs to be accessed
  *   when the key matches.
  *   - the result has a back pointer to the hash table via the hb handle.  The
- *   hb handle is a 32 bit represention of the hash with a valid bit, bucket
+ *   hb handle is a 32 bit representation of the hash with a valid bit, bucket
  *   element index, and the hash index.  It is necessary to store the hb handle
  *   with the result since subsequent removes only provide the tcam index.
  *
diff --git a/drivers/net/bnxt/tf_core/tfp.h b/drivers/net/bnxt/tf_core/tfp.h
index 58f34bbcab..dd0a347058 100644
--- a/drivers/net/bnxt/tf_core/tfp.h
+++ b/drivers/net/bnxt/tf_core/tfp.h
@@ -38,7 +38,7 @@  struct tfp_spinlock_parms {
 /**
  * @file
  *
- * TrueFlow Portability API Header File
+ * TruFlow Portability API Header File
  */
 
 /**
@@ -119,8 +119,8 @@  struct tfp_calloc_parms {
  */
 
 /**
- * Provides communication capability from the TrueFlow API layer to
- * the TrueFlow firmware. The portability layer internally provides
+ * Provides communication capability from the TruFlow API layer to
+ * the TruFlow firmware. The portability layer internally provides
  * the transport to the firmware.
  *
  * [in] session, pointer to session handle
diff --git a/drivers/net/bnxt/tf_ulp/bnxt_tf_pmd_shim.c b/drivers/net/bnxt/tf_ulp/bnxt_tf_pmd_shim.c
new file mode 100644
index 0000000000..b09cccedf5
--- /dev/null
+++ b/drivers/net/bnxt/tf_ulp/bnxt_tf_pmd_shim.c
@@ -0,0 +1,378 @@ 
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2021-2021 Broadcom
+ * All rights reserved.
+ */
+
+#include <glob.h>
+#include <libgen.h>
+#include <stdio.h>
+#include <net/if.h>
+#include <sys/ioctl.h>
+#include <sys/socket.h>
+#include <unistd.h>
+
+#include "bnxt.h"
+#include "bnxt_vnic.h"
+#include "bnxt_hwrm.h"
+#include "bnxt_tf_common.h"
+#include "bnxt_tf_pmd_shim.h"
+
+struct bnxt *
+bnxt_pmd_get_bp(uint16_t port)
+{
+	struct bnxt *bp;
+	struct rte_eth_dev *dev;
+
+	if (!rte_eth_dev_is_valid_port(port)) {
+		PMD_DRV_LOG(ERR, "Invalid port %d\n", port);
+		return NULL;
+	}
+
+	dev = &rte_eth_devices[port];
+	if (!is_bnxt_supported(dev)) {
+		PMD_DRV_LOG(ERR, "Device %d not supported\n", port);
+		return NULL;
+	}
+
+	bp = (struct bnxt *)dev->data->dev_private;
+	if (!BNXT_TRUFLOW_EN(bp)) {
+		PMD_DRV_LOG(ERR, "TRUFLOW not enabled\n");
+		return NULL;
+	}
+
+	return bp;
+}
+
+int32_t bnxt_rss_config_action_apply(struct bnxt_ulp_mapper_parms *parms)
+{
+	struct bnxt_vnic_info *vnic = NULL;
+	struct bnxt *bp = NULL;
+	uint64_t rss_types;
+	uint16_t hwrm_type;
+	uint32_t rss_level, key_len;
+	uint8_t *rss_key;
+	struct ulp_rte_act_prop *ap = parms->act_prop;
+	int32_t rc = -EINVAL;
+
+	bp = bnxt_pmd_get_bp(parms->port_id);
+	if (bp == NULL) {
+		BNXT_TF_DBG(ERR, "Invalid bp for port_id %u\n", parms->port_id);
+		return rc;
+	}
+	vnic = BNXT_GET_DEFAULT_VNIC(bp);
+	if (vnic == NULL) {
+		BNXT_TF_DBG(ERR, "default vnic not available for %u\n",
+			    parms->port_id);
+		return rc;
+	}
+
+	/* get the details */
+	memcpy(&rss_types, &ap->act_details[BNXT_ULP_ACT_PROP_IDX_RSS_TYPES],
+	       BNXT_ULP_ACT_PROP_SZ_RSS_TYPES);
+	memcpy(&rss_level, &ap->act_details[BNXT_ULP_ACT_PROP_IDX_RSS_LEVEL],
+	       BNXT_ULP_ACT_PROP_SZ_RSS_LEVEL);
+	memcpy(&key_len, &ap->act_details[BNXT_ULP_ACT_PROP_IDX_RSS_KEY_LEN],
+	       BNXT_ULP_ACT_PROP_SZ_RSS_KEY_LEN);
+	rss_key = &ap->act_details[BNXT_ULP_ACT_PROP_IDX_RSS_KEY];
+
+	hwrm_type = bnxt_rte_to_hwrm_hash_types(rss_types);
+	if (!hwrm_type) {
+		BNXT_TF_DBG(ERR, "Error unsupported rss config type\n");
+		return rc;
+	}
+	/* Configure RSS only if the queue count is > 1 */
+	if (vnic->rx_queue_cnt > 1) {
+		vnic->hash_type = hwrm_type;
+		vnic->hash_mode =
+			bnxt_rte_to_hwrm_hash_level(bp, rss_types, rss_level);
+		memcpy(vnic->rss_hash_key, rss_key,
+		       BNXT_ULP_ACT_PROP_SZ_RSS_KEY);
+		rc = bnxt_hwrm_vnic_rss_cfg(bp, vnic);
+		if (rc) {
+			BNXT_TF_DBG(ERR, "Error configuring vnic RSS config\n");
+			return rc;
+		}
+		BNXT_TF_DBG(INFO, "Rss config successfully applied\n");
+	}
+	return 0;
+}
+
+#define PARENT_PHY_INTF_PATH "/sys/bus/pci/devices/%s/physfn/net/*"
+#define ULP_PRT_MAC_PATH "/sys/bus/pci/devices/%s/physfn/net/%s/address"
+
+#define ULP_FILE_PATH_SIZE 256
+
+static int32_t glob_error_fn(const char *epath, int32_t eerrno)
+{
+	BNXT_TF_DBG(ERR, "path %s error %d\n", epath, eerrno);
+	return 0;
+}
+
+
+static int32_t ulp_pmd_get_mac_by_pci(const char *pci_name, uint8_t *mac)
+{
+	char path[ULP_FILE_PATH_SIZE], dev_str[ULP_FILE_PATH_SIZE];
+	char *intf_name;
+	glob_t gres;
+	FILE *fp;
+	int32_t rc = -EINVAL;
+
+	memset(path, 0, sizeof(path));
+	sprintf(path, PARENT_PHY_INTF_PATH, pci_name);
+
+	/* There can be only one, no more, no less */
+	if (glob(path, 0, glob_error_fn, &gres) == 0) {
+		if (gres.gl_pathc != 1)
+			return rc;
+
+		/* Replace the PCI address with interface name and get index */
+		intf_name = basename(gres.gl_pathv[0]);
+		sprintf(path, ULP_PRT_MAC_PATH, pci_name, intf_name);
+
+		fp = fopen(path, "r");
+		if (!fp) {
+			BNXT_TF_DBG(ERR, "Error in getting bond mac address\n");
+			return rc;
+		}
+
+		memset(dev_str, 0, sizeof(dev_str));
+		if (fgets(dev_str, sizeof(dev_str), fp) == NULL) {
+			BNXT_TF_DBG(ERR, "Error in reading %s\n", path);
+			fclose(fp);
+			return rc;
+		}
+
+		if (sscanf(dev_str, "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx\n",
+			   &mac[0], &mac[1], &mac[2],
+			   &mac[3], &mac[4], &mac[5]) == 6)
+			rc = 0;
+		fclose(fp);
+	}
+	return rc;
+}
+
+int32_t bnxt_pmd_get_parent_mac_addr(struct bnxt_ulp_mapper_parms *parms,
+				     uint8_t *mac)
+{
+	struct bnxt *bp = NULL;
+	int32_t rc = -EINVAL;
+
+	bp = bnxt_pmd_get_bp(parms->port_id);
+	if (bp == NULL) {
+		BNXT_TF_DBG(ERR, "Invalid bp for port_id %u\n", parms->port_id);
+		return rc;
+	}
+	return ulp_pmd_get_mac_by_pci(bp->pdev->name, &mac[2]);
+}
+
+uint16_t
+bnxt_pmd_get_svif(uint16_t port_id, bool func_svif,
+	      enum bnxt_ulp_intf_type type)
+{
+	struct rte_eth_dev *eth_dev;
+	struct bnxt *bp;
+
+	eth_dev = &rte_eth_devices[port_id];
+	if (BNXT_ETH_DEV_IS_REPRESENTOR(eth_dev)) {
+		struct bnxt_representor *vfr = eth_dev->data->dev_private;
+		if (!vfr)
+			return 0;
+
+		if (type == BNXT_ULP_INTF_TYPE_VF_REP)
+			return vfr->svif;
+
+		eth_dev = vfr->parent_dev;
+	}
+
+	bp = eth_dev->data->dev_private;
+
+	return func_svif ? bp->func_svif : bp->port_svif;
+}
+
+void
+bnxt_pmd_get_iface_mac(uint16_t port, enum bnxt_ulp_intf_type type,
+		       uint8_t *mac, uint8_t *parent_mac)
+{
+	struct rte_eth_dev *eth_dev;
+	struct bnxt *bp;
+
+	if (type != BNXT_ULP_INTF_TYPE_TRUSTED_VF &&
+	    type != BNXT_ULP_INTF_TYPE_PF)
+		return;
+
+	eth_dev = &rte_eth_devices[port];
+	bp = eth_dev->data->dev_private;
+	memcpy(mac, bp->mac_addr, RTE_ETHER_ADDR_LEN);
+
+	if (type == BNXT_ULP_INTF_TYPE_TRUSTED_VF)
+		memcpy(parent_mac, bp->parent->mac_addr, RTE_ETHER_ADDR_LEN);
+}
+
+uint16_t
+bnxt_pmd_get_parent_vnic_id(uint16_t port, enum bnxt_ulp_intf_type type)
+{
+	struct rte_eth_dev *eth_dev;
+	struct bnxt *bp;
+
+	if (type != BNXT_ULP_INTF_TYPE_TRUSTED_VF)
+		return 0;
+
+	eth_dev = &rte_eth_devices[port];
+	bp = eth_dev->data->dev_private;
+
+	return bp->parent->vnic;
+}
+
+uint16_t
+bnxt_pmd_get_vnic_id(uint16_t port, enum bnxt_ulp_intf_type type)
+{
+	struct rte_eth_dev *eth_dev;
+	struct bnxt_vnic_info *vnic;
+	struct bnxt *bp;
+
+	eth_dev = &rte_eth_devices[port];
+	if (BNXT_ETH_DEV_IS_REPRESENTOR(eth_dev)) {
+		struct bnxt_representor *vfr = eth_dev->data->dev_private;
+		if (!vfr)
+			return 0;
+
+		if (type == BNXT_ULP_INTF_TYPE_VF_REP)
+			return vfr->dflt_vnic_id;
+
+		eth_dev = vfr->parent_dev;
+	}
+
+	bp = eth_dev->data->dev_private;
+
+	vnic = BNXT_GET_DEFAULT_VNIC(bp);
+
+	return vnic->fw_vnic_id;
+}
+
+uint16_t
+bnxt_pmd_get_fw_func_id(uint16_t port, enum bnxt_ulp_intf_type type)
+{
+	struct rte_eth_dev *eth_dev;
+	struct bnxt *bp;
+
+	eth_dev = &rte_eth_devices[port];
+	if (BNXT_ETH_DEV_IS_REPRESENTOR(eth_dev)) {
+		struct bnxt_representor *vfr = eth_dev->data->dev_private;
+		if (!vfr)
+			return 0;
+
+		if (type == BNXT_ULP_INTF_TYPE_VF_REP)
+			return vfr->fw_fid;
+
+		eth_dev = vfr->parent_dev;
+	}
+
+	bp = eth_dev->data->dev_private;
+
+	return bp->fw_fid;
+}
+
+enum bnxt_ulp_intf_type
+bnxt_pmd_get_interface_type(uint16_t port)
+{
+	struct rte_eth_dev *eth_dev;
+	struct bnxt *bp;
+
+	eth_dev = &rte_eth_devices[port];
+	if (BNXT_ETH_DEV_IS_REPRESENTOR(eth_dev))
+		return BNXT_ULP_INTF_TYPE_VF_REP;
+
+	bp = eth_dev->data->dev_private;
+	if (BNXT_PF(bp))
+		return BNXT_ULP_INTF_TYPE_PF;
+	else if (BNXT_VF_IS_TRUSTED(bp))
+		return BNXT_ULP_INTF_TYPE_TRUSTED_VF;
+	else if (BNXT_VF(bp))
+		return BNXT_ULP_INTF_TYPE_VF;
+
+	return BNXT_ULP_INTF_TYPE_INVALID;
+}
+
+uint16_t
+bnxt_pmd_get_phy_port_id(uint16_t port_id)
+{
+	struct bnxt_representor *vfr;
+	struct rte_eth_dev *eth_dev;
+	struct bnxt *bp;
+
+	eth_dev = &rte_eth_devices[port_id];
+	if (BNXT_ETH_DEV_IS_REPRESENTOR(eth_dev)) {
+		vfr = eth_dev->data->dev_private;
+		if (!vfr)
+			return 0;
+
+		eth_dev = vfr->parent_dev;
+	}
+
+	bp = eth_dev->data->dev_private;
+
+	return BNXT_PF(bp) ? bp->pf->port_id : bp->parent->port_id;
+}
+
+uint16_t
+bnxt_pmd_get_parif(uint16_t port_id, enum bnxt_ulp_intf_type type)
+{
+	struct rte_eth_dev *eth_dev;
+	struct bnxt *bp;
+
+	eth_dev = &rte_eth_devices[port_id];
+	if (BNXT_ETH_DEV_IS_REPRESENTOR(eth_dev)) {
+		struct bnxt_representor *vfr = eth_dev->data->dev_private;
+		if (!vfr)
+			return 0;
+
+		if (type == BNXT_ULP_INTF_TYPE_VF_REP)
+			return vfr->fw_fid - 1;
+
+		eth_dev = vfr->parent_dev;
+	}
+
+	bp = eth_dev->data->dev_private;
+
+	return BNXT_PF(bp) ? bp->fw_fid - 1 : bp->parent->fid - 1;
+}
+
+uint16_t
+bnxt_pmd_get_vport(uint16_t port_id)
+{
+	return (1 << bnxt_pmd_get_phy_port_id(port_id));
+}
+
+
+int32_t
+bnxt_pmd_set_unicast_rxmask(struct rte_eth_dev *eth_dev)
+{
+	struct bnxt *bp = eth_dev->data->dev_private;
+	struct bnxt_vnic_info *vnic;
+	uint32_t old_flags;
+	int32_t rc;
+
+	rc = is_bnxt_in_error(bp);
+	if (rc)
+		return rc;
+
+	/* Filter settings will get applied when port is started */
+	if (!eth_dev->data->dev_started)
+		return 0;
+
+	if (bp->vnic_info == NULL)
+		return 0;
+
+	vnic = BNXT_GET_DEFAULT_VNIC(bp);
+
+	old_flags = vnic->flags;
+	vnic->flags |= BNXT_VNIC_INFO_UCAST;
+	vnic->flags &= ~BNXT_VNIC_INFO_PROMISC;
+	vnic->flags &= ~BNXT_VNIC_INFO_ALLMULTI;
+	vnic->flags &= ~BNXT_VNIC_INFO_BCAST;
+	rc = bnxt_hwrm_cfa_l2_set_rx_mask(bp, vnic, 0, NULL);
+	if (rc != 0)
+		vnic->flags = old_flags;
+
+	return rc;
+}
diff --git a/drivers/net/bnxt/tf_ulp/bnxt_tf_pmd_shim.h b/drivers/net/bnxt/tf_ulp/bnxt_tf_pmd_shim.h
new file mode 100644
index 0000000000..229e21814b
--- /dev/null
+++ b/drivers/net/bnxt/tf_ulp/bnxt_tf_pmd_shim.h
@@ -0,0 +1,29 @@ 
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2021-2021 Broadcom
+ * All rights reserved.
+ */
+
+#ifndef _BNXT_TF_PMD_ABSTRACT_H_
+#define _BNXT_TF_PMD_ABSTRACT_H_
+
+#include "bnxt_tf_common.h"
+#include "ulp_mapper.h"
+
+int32_t bnxt_rss_config_action_apply(struct bnxt_ulp_mapper_parms *parms);
+int32_t bnxt_pmd_get_parent_mac_addr(struct bnxt_ulp_mapper_parms *parms,
+				     uint8_t *mac);
+void bnxt_pmd_get_iface_mac(uint16_t port, enum bnxt_ulp_intf_type type,
+			    uint8_t *mac, uint8_t *parent_mac);
+uint16_t bnxt_pmd_get_vnic_id(uint16_t port, enum bnxt_ulp_intf_type type);
+uint16_t bnxt_pmd_get_parent_vnic_id(uint16_t port, enum bnxt_ulp_intf_type type);
+struct bnxt *bnxt_pmd_get_bp(uint16_t port);
+uint16_t bnxt_pmd_get_svif(uint16_t port_id, bool func_svif,
+			   enum bnxt_ulp_intf_type type);
+uint16_t bnxt_pmd_get_fw_func_id(uint16_t port, enum bnxt_ulp_intf_type type);
+uint16_t bnxt_pmd_get_parif(uint16_t port, enum bnxt_ulp_intf_type type);
+uint16_t bnxt_pmd_get_phy_port_id(uint16_t port);
+uint16_t bnxt_pmd_get_vport(uint16_t port);
+enum bnxt_ulp_intf_type bnxt_pmd_get_interface_type(uint16_t port);
+int32_t bnxt_pmd_set_unicast_rxmask(struct rte_eth_dev *eth_dev);
+
+#endif /* _BNXT_TF_PMD_ABSTRACT_H_ */
diff --git a/drivers/net/bnxt/tf_ulp/bnxt_ulp.c b/drivers/net/bnxt/tf_ulp/bnxt_ulp.c
index 5f1540027c..eb95afc653 100644
--- a/drivers/net/bnxt/tf_ulp/bnxt_ulp.c
+++ b/drivers/net/bnxt/tf_ulp/bnxt_ulp.c
@@ -25,6 +25,7 @@ 
 #include "ulp_port_db.h"
 #include "ulp_tun.h"
 #include "ulp_ha_mgr.h"
+#include "bnxt_tf_pmd_shim.h"
 
 /* Linked list of all TF sessions. */
 STAILQ_HEAD(, bnxt_ulp_session_state) bnxt_ulp_session_list =
@@ -67,7 +68,6 @@  bnxt_ulp_devid_get(struct bnxt *bp,
 		   enum bnxt_ulp_device_id  *ulp_dev_id)
 {
 	if (BNXT_CHIP_P5(bp)) {
-		/* TBD: needs to accommodate even SR2 */
 		*ulp_dev_id = BNXT_ULP_DEVICE_ID_THOR;
 		return 0;
 	}
@@ -123,7 +123,7 @@  bnxt_ulp_named_resources_calc(struct bnxt_ulp_context *ulp_ctx,
 			      uint32_t num,
 			      struct tf_session_resources *res)
 {
-	uint32_t dev_id, res_type, i;
+	uint32_t dev_id = BNXT_ULP_DEVICE_ID_LAST, res_type, i;
 	enum tf_dir dir;
 	uint8_t app_id;
 	int32_t rc = 0;
@@ -331,6 +331,9 @@  bnxt_ulp_cntxt_app_caps_init(struct bnxt_ulp_context *ulp_ctx,
 		if (info[i].flags & BNXT_ULP_APP_CAP_HOT_UPGRADE_EN)
 			ulp_ctx->cfg_data->ulp_flags |=
 				BNXT_ULP_HIGH_AVAIL_ENABLED;
+		if (info[i].flags & BNXT_ULP_APP_CAP_UNICAST_ONLY)
+			ulp_ctx->cfg_data->ulp_flags |=
+				BNXT_ULP_APP_UNICAST_ONLY;
 	}
 	if (!found) {
 		BNXT_TF_DBG(ERR, "APP ID %d, Device ID: 0x%x not supported.\n",
@@ -378,8 +381,8 @@  ulp_ctx_shared_session_open(struct bnxt *bp,
 	struct rte_eth_dev *ethdev = bp->eth_dev;
 	struct tf_session_resources *resources;
 	struct tf_open_session_parms parms;
-	size_t copy_num_bytes;
-	uint32_t ulp_dev_id;
+	size_t copy_nbytes;
+	uint32_t ulp_dev_id = BNXT_ULP_DEVICE_ID_LAST;
 	int32_t	rc = 0;
 
 	/* only perform this if shared session is enabled. */
@@ -401,11 +404,19 @@  ulp_ctx_shared_session_open(struct bnxt *bp,
 	 * Need to account for size of ctrl_chan_name and 1 extra for Null
 	 * terminator
 	 */
-	copy_num_bytes = sizeof(parms.ctrl_chan_name) -
+	copy_nbytes = sizeof(parms.ctrl_chan_name) -
 		strlen(parms.ctrl_chan_name) - 1;
 
-	/* Build the ctrl_chan_name with shared token */
-	strncat(parms.ctrl_chan_name, "-tf_shared", copy_num_bytes);
+	/*
+	 * Build the ctrl_chan_name with shared token.
+	 * When HA is enabled, the WC TCAM needs extra management by the core,
+	 * so add the wc_tcam string to the control channel.
+	 */
+	if (bnxt_ulp_cntxt_ha_enabled(bp->ulp_ctx))
+		strncat(parms.ctrl_chan_name, "-tf_shared-wc_tcam",
+			copy_nbytes);
+	else
+		strncat(parms.ctrl_chan_name, "-tf_shared", copy_nbytes);
 
 	rc = bnxt_ulp_tf_shared_session_resources_get(bp->ulp_ctx, resources);
 	if (rc)
@@ -504,7 +515,7 @@  ulp_ctx_session_open(struct bnxt *bp,
 	int32_t				rc = 0;
 	struct tf_open_session_parms	params;
 	struct tf_session_resources	*resources;
-	uint32_t			ulp_dev_id;
+	uint32_t ulp_dev_id = BNXT_ULP_DEVICE_ID_LAST;
 
 	memset(&params, 0, sizeof(params));
 
@@ -835,7 +846,7 @@  static int32_t
 ulp_dparms_init(struct bnxt *bp, struct bnxt_ulp_context *ulp_ctx)
 {
 	struct bnxt_ulp_device_params *dparms;
-	uint32_t dev_id;
+	uint32_t dev_id = BNXT_ULP_DEVICE_ID_LAST;
 
 	if (!bp->max_num_kflows) {
 		/* Defaults to Internal */
@@ -890,7 +901,7 @@  ulp_ctx_attach(struct bnxt *bp,
 	       struct bnxt_ulp_session_state *session)
 {
 	int32_t rc = 0;
-	uint32_t flags, dev_id;
+	uint32_t flags, dev_id = BNXT_ULP_DEVICE_ID_LAST;
 	uint8_t app_id;
 
 	/* Increment the ulp context data reference count usage. */
@@ -1350,15 +1361,21 @@  bnxt_ulp_port_init(struct bnxt *bp)
 {
 	struct bnxt_ulp_session_state *session;
 	bool initialized;
+	enum bnxt_ulp_device_id devid = BNXT_ULP_DEVICE_ID_LAST;
+	uint32_t ulp_flags;
 	int32_t rc = 0;
 
-	if (!bp || !BNXT_TRUFLOW_EN(bp))
-		return rc;
-
 	if (!BNXT_PF(bp) && !BNXT_VF_IS_TRUSTED(bp)) {
 		BNXT_TF_DBG(ERR,
 			    "Skip ulp init for port: %d, not a TVF or PF\n",
-			bp->eth_dev->data->port_id);
+			    bp->eth_dev->data->port_id);
+		return rc;
+	}
+
+	if (!BNXT_TRUFLOW_EN(bp)) {
+		BNXT_TF_DBG(ERR,
+			    "Skip ulp init for port: %d, truflow is not enabled\n",
+			    bp->eth_dev->data->port_id);
 		return rc;
 	}
 
@@ -1436,11 +1453,31 @@  bnxt_ulp_port_init(struct bnxt *bp)
 		goto jump_to_error;
 	}
 
-	if (BNXT_ACCUM_STATS_EN(bp))
+	rc = bnxt_ulp_devid_get(bp, &devid);
+	if (rc) {
+		BNXT_TF_DBG(ERR, "Unable to determine device for ULP port init.\n");
+		goto jump_to_error;
+	}
+
+	if (devid != BNXT_ULP_DEVICE_ID_THOR && BNXT_ACCUM_STATS_EN(bp))
 		bp->ulp_ctx->cfg_data->accum_stats = true;
 
-	BNXT_TF_DBG(DEBUG, "BNXT Port:%d ULP port init\n",
-		    bp->eth_dev->data->port_id);
+	BNXT_TF_DBG(DEBUG, "BNXT Port:%d ULP port init, accum_stats:%d\n",
+		    bp->eth_dev->data->port_id,
+		    bp->ulp_ctx->cfg_data->accum_stats);
+
+	/* set the unicast mode */
+	if (bnxt_ulp_cntxt_ptr2_ulp_flags_get(bp->ulp_ctx, &ulp_flags)) {
+		BNXT_TF_DBG(ERR, "Error in getting ULP context flags\n");
+		goto jump_to_error;
+	}
+	if (ulp_flags & BNXT_ULP_APP_UNICAST_ONLY) {
+		if (bnxt_pmd_set_unicast_rxmask(bp->eth_dev)) {
+			BNXT_TF_DBG(ERR, "Error in setting unicast rxmode\n");
+			goto jump_to_error;
+		}
+	}
+
 	return rc;
 
 jump_to_error:
@@ -1459,9 +1496,6 @@  bnxt_ulp_port_deinit(struct bnxt *bp)
 	struct rte_pci_device *pci_dev;
 	struct rte_pci_addr *pci_addr;
 
-	if (!BNXT_TRUFLOW_EN(bp))
-		return;
-
 	if (!BNXT_PF(bp) && !BNXT_VF_IS_TRUSTED(bp)) {
 		BNXT_TF_DBG(ERR,
 			    "Skip ULP deinit port:%d, not a TVF or PF\n",
@@ -1469,6 +1503,13 @@  bnxt_ulp_port_deinit(struct bnxt *bp)
 		return;
 	}
 
+	if (!BNXT_TRUFLOW_EN(bp)) {
+		BNXT_TF_DBG(ERR,
+			    "Skip ULP deinit for port:%d, truflow is not enabled\n",
+			    bp->eth_dev->data->port_id);
+		return;
+	}
+
 	if (!bp->ulp_ctx) {
 		BNXT_TF_DBG(DEBUG, "ulp ctx already de-allocated\n");
 		return;
@@ -1599,7 +1640,7 @@  bnxt_ulp_cntxt_dev_id_get(struct bnxt_ulp_context *ulp_ctx,
 		*dev_id = ulp_ctx->cfg_data->dev_id;
 		return 0;
 	}
-
+	*dev_id = BNXT_ULP_DEVICE_ID_LAST;
 	BNXT_TF_DBG(ERR, "Failed to read dev_id from ulp ctxt\n");
 	return -EINVAL;
 }
@@ -1624,6 +1665,7 @@  bnxt_ulp_cntxt_mem_type_get(struct bnxt_ulp_context *ulp_ctx,
 		*mem_type = ulp_ctx->cfg_data->mem_type;
 		return 0;
 	}
+	*mem_type = BNXT_ULP_FLOW_MEM_TYPE_LAST;
 	BNXT_TF_DBG(ERR, "Failed to read mem_type in ulp ctxt\n");
 	return -EINVAL;
 }
@@ -1663,6 +1705,13 @@  bnxt_ulp_cntxt_shared_tfp_set(struct bnxt_ulp_context *ulp, struct tf *tfp)
 		return -EINVAL;
 	}
 
+	if (tfp == NULL) {
+		if (ulp->cfg_data->num_shared_clients > 0)
+			ulp->cfg_data->num_shared_clients--;
+	} else {
+		ulp->cfg_data->num_shared_clients++;
+	}
+
 	ulp->g_shared_tfp = tfp;
 	return 0;
 }
@@ -1678,6 +1727,17 @@  bnxt_ulp_cntxt_shared_tfp_get(struct bnxt_ulp_context *ulp)
 	return ulp->g_shared_tfp;
 }
 
+/* Function to get the number of shared clients attached */
+uint8_t
+bnxt_ulp_cntxt_num_shared_clients_get(struct bnxt_ulp_context *ulp)
+{
+	if (ulp == NULL || ulp->cfg_data == NULL) {
+		BNXT_TF_DBG(ERR, "Invalid arguments\n");
+		return 0;
+	}
+	return ulp->cfg_data->num_shared_clients;
+}
+
 /* Function to set the tfp session details from the ulp context. */
 int32_t
 bnxt_ulp_cntxt_tfp_set(struct bnxt_ulp_context *ulp, struct tf *tfp)
diff --git a/drivers/net/bnxt/tf_ulp/bnxt_ulp.h b/drivers/net/bnxt/tf_ulp/bnxt_ulp.h
index ea38dc0d9f..082ca501b6 100644
--- a/drivers/net/bnxt/tf_ulp/bnxt_ulp.h
+++ b/drivers/net/bnxt/tf_ulp/bnxt_ulp.h
@@ -32,6 +32,7 @@ 
 #define BNXT_ULP_SHARED_SESSION_ENABLED	0x2
 #define BNXT_ULP_APP_DEV_UNSUPPORTED	0x4
 #define BNXT_ULP_HIGH_AVAIL_ENABLED	0x8
+#define BNXT_ULP_APP_UNICAST_ONLY	0x10
 #define ULP_VF_REP_IS_ENABLED(flag)	((flag) & BNXT_ULP_VF_REP_ENABLED)
 #define ULP_SHARED_SESSION_IS_ENABLED(flag) ((flag) &\
 					     BNXT_ULP_SHARED_SESSION_ENABLED)
@@ -77,6 +78,7 @@  struct bnxt_ulp_data {
 	struct bnxt_tun_cache_entry	tun_tbl[BNXT_ULP_MAX_TUN_CACHE_ENTRIES];
 	bool				accum_stats;
 	uint8_t				app_id;
+	uint8_t				num_shared_clients;
 };
 
 struct bnxt_ulp_context {
@@ -297,4 +299,6 @@  bnxt_ulp_cntxt_entry_acquire(void);
 void
 bnxt_ulp_cntxt_entry_release(void);
 
+uint8_t
+bnxt_ulp_cntxt_num_shared_clients_get(struct bnxt_ulp_context *ulp_ctx);
 #endif /* _BNXT_ULP_H_ */
diff --git a/drivers/net/bnxt/tf_ulp/bnxt_ulp_flow.c b/drivers/net/bnxt/tf_ulp/bnxt_ulp_flow.c
index 96e6a76270..19e9dba356 100644
--- a/drivers/net/bnxt/tf_ulp/bnxt_ulp_flow.c
+++ b/drivers/net/bnxt/tf_ulp/bnxt_ulp_flow.c
@@ -103,6 +103,7 @@  bnxt_ulp_init_mapper_params(struct bnxt_ulp_mapper_create_parms *mapper_cparms,
 	mapper_cparms->flow_pattern_id = params->flow_pattern_id;
 	mapper_cparms->act_pattern_id = params->act_pattern_id;
 	mapper_cparms->app_id = params->app_id;
+	mapper_cparms->port_id = params->port_id;
 
 	/* update the signature fields into the computed field list */
 	ULP_COMP_FLD_IDX_WR(params, BNXT_ULP_CF_IDX_HDR_SIG_ID,
diff --git a/drivers/net/bnxt/tf_ulp/meson.build b/drivers/net/bnxt/tf_ulp/meson.build
index 40479c5936..456d8ca7b6 100644
--- a/drivers/net/bnxt/tf_ulp/meson.build
+++ b/drivers/net/bnxt/tf_ulp/meson.build
@@ -22,6 +22,7 @@  sources += files(
         'ulp_def_rules.c',
         'ulp_fc_mgr.c',
         'ulp_tun.c',
+	'bnxt_tf_pmd_shim.c',
         'ulp_gen_tbl.c',
 	'ulp_gen_hash.c',
 	'ulp_ha_mgr.c',
diff --git a/drivers/net/bnxt/tf_ulp/ulp_def_rules.c b/drivers/net/bnxt/tf_ulp/ulp_def_rules.c
index 483030edbf..d8336d164e 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_def_rules.c
+++ b/drivers/net/bnxt/tf_ulp/ulp_def_rules.c
@@ -299,7 +299,7 @@  ulp_default_flow_create(struct rte_eth_dev *eth_dev,
 			uint32_t *flow_id)
 {
 	struct ulp_rte_hdr_field	hdr_field[BNXT_ULP_PROTO_HDR_MAX];
-	uint32_t			comp_fld[BNXT_ULP_CF_IDX_LAST];
+	uint64_t			comp_fld[BNXT_ULP_CF_IDX_LAST];
 	struct bnxt_ulp_mapper_create_parms mapper_params = { 0 };
 	struct ulp_rte_act_prop		act_prop;
 	struct ulp_rte_act_bitmap	act = { 0 };
@@ -318,6 +318,7 @@  ulp_default_flow_create(struct rte_eth_dev *eth_dev,
 	mapper_params.comp_fld = comp_fld;
 	mapper_params.class_tid = ulp_class_tid;
 	mapper_params.flow_type = BNXT_ULP_FDB_TYPE_DEFAULT;
+	mapper_params.port_id = eth_dev->data->port_id;
 
 	ulp_ctx = bnxt_ulp_eth_dev_ptr2_cntxt_get(eth_dev);
 	if (!ulp_ctx) {
diff --git a/drivers/net/bnxt/tf_ulp/ulp_fc_mgr.c b/drivers/net/bnxt/tf_ulp/ulp_fc_mgr.c
index 9a77132385..13f71ed83b 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_fc_mgr.c
+++ b/drivers/net/bnxt/tf_ulp/ulp_fc_mgr.c
@@ -80,12 +80,6 @@  ulp_fc_mgr_init(struct bnxt_ulp_context *ctxt)
 		return -EINVAL;
 	}
 
-	if (!dparms->flow_count_db_entries) {
-		BNXT_TF_DBG(DEBUG, "flow counter support is not enabled\n");
-		bnxt_ulp_cntxt_ptr2_fc_info_set(ctxt, NULL);
-		return 0;
-	}
-
 	ulp_fc_info = rte_zmalloc("ulp_fc_info", sizeof(*ulp_fc_info), 0);
 	if (!ulp_fc_info)
 		goto error;
@@ -99,6 +93,13 @@  ulp_fc_mgr_init(struct bnxt_ulp_context *ctxt)
 	/* Add the FC info tbl to the ulp context. */
 	bnxt_ulp_cntxt_ptr2_fc_info_set(ctxt, ulp_fc_info);
 
+	ulp_fc_info->num_counters = dparms->flow_count_db_entries;
+	if (!ulp_fc_info->num_counters) {
+		/* No need for software counters, call fw directly */
+		BNXT_TF_DBG(DEBUG, "Sw flow counter support not enabled\n");
+		return 0;
+	}
+
 	sw_acc_cntr_tbl_sz = sizeof(struct sw_acc_counter) *
 				dparms->flow_count_db_entries;
 
@@ -138,6 +139,7 @@  int32_t
 ulp_fc_mgr_deinit(struct bnxt_ulp_context *ctxt)
 {
 	struct bnxt_ulp_fc_info *ulp_fc_info;
+	struct hw_fc_mem_info *shd_info;
 	int i;
 
 	ulp_fc_info = bnxt_ulp_cntxt_ptr2_fc_info_get(ctxt);
@@ -149,11 +151,15 @@  ulp_fc_mgr_deinit(struct bnxt_ulp_context *ctxt)
 
 	pthread_mutex_destroy(&ulp_fc_info->fc_lock);
 
-	for (i = 0; i < TF_DIR_MAX; i++)
-		rte_free(ulp_fc_info->sw_acc_tbl[i]);
+	if (ulp_fc_info->num_counters) {
+		for (i = 0; i < TF_DIR_MAX; i++)
+			rte_free(ulp_fc_info->sw_acc_tbl[i]);
 
-	for (i = 0; i < TF_DIR_MAX; i++)
-		ulp_fc_mgr_shadow_mem_free(&ulp_fc_info->shadow_hw_tbl[i]);
+		for (i = 0; i < TF_DIR_MAX; i++) {
+			shd_info = &ulp_fc_info->shadow_hw_tbl[i];
+			ulp_fc_mgr_shadow_mem_free(shd_info);
+		}
+	}
 
 	rte_free(ulp_fc_info);
 
@@ -291,6 +297,74 @@  ulp_bulk_get_flow_stats(struct tf *tfp,
 	return rc;
 }
 
+static int32_t
+ulp_fc_tf_flow_stat_get(struct bnxt_ulp_context *ctxt,
+			struct ulp_flow_db_res_params *res,
+			struct rte_flow_query_count *qcount)
+{
+	struct tf *tfp;
+	struct bnxt_ulp_device_params *dparms;
+	struct tf_get_tbl_entry_parms parms = { 0 };
+	struct tf_set_tbl_entry_parms	sparms = { 0 };
+	enum tf_tbl_type stype = TF_TBL_TYPE_ACT_STATS_64;
+	uint64_t stats = 0;
+	uint32_t dev_id = 0;
+	int32_t rc = 0;
+
+	tfp = bnxt_ulp_cntxt_tfp_get(ctxt, BNXT_ULP_SHARED_SESSION_NO);
+	if (!tfp) {
+		BNXT_TF_DBG(ERR, "Failed to get the truflow pointer\n");
+		return -EINVAL;
+	}
+
+	if (bnxt_ulp_cntxt_dev_id_get(ctxt, &dev_id)) {
+		BNXT_TF_DBG(DEBUG, "Failed to get device id\n");
+		bnxt_ulp_cntxt_entry_release();
+		return -EINVAL;
+	}
+
+	dparms = bnxt_ulp_device_params_get(dev_id);
+	if (!dparms) {
+		BNXT_TF_DBG(DEBUG, "Failed to device parms\n");
+		bnxt_ulp_cntxt_entry_release();
+		return -EINVAL;
+	}
+	parms.dir = res->direction;
+	parms.type = stype;
+	parms.idx = res->resource_hndl;
+	parms.data_sz_in_bytes = sizeof(uint64_t);
+	parms.data = (uint8_t *)&stats;
+	rc = tf_get_tbl_entry(tfp, &parms);
+	if (rc) {
+		PMD_DRV_LOG(ERR,
+			    "Get failed for id:0x%x rc:%d\n",
+			    parms.idx, rc);
+		return rc;
+	}
+	qcount->hits = FLOW_CNTR_PKTS(stats, dparms);
+	if (qcount->hits)
+		qcount->hits_set = 1;
+	qcount->bytes = FLOW_CNTR_BYTES(stats, dparms);
+	if (qcount->bytes)
+		qcount->bytes_set = 1;
+
+	if (qcount->reset) {
+		stats = 0;
+		sparms.dir = res->direction;
+		sparms.type = stype;
+		sparms.idx = res->resource_hndl;
+		sparms.data = (uint8_t *)&stats;
+		sparms.data_sz_in_bytes = sizeof(uint64_t);
+		rc = tf_set_tbl_entry(tfp, &sparms);
+		if (rc) {
+			PMD_DRV_LOG(ERR, "Set failed for id:0x%x rc:%d\n",
+				    sparms.idx, rc);
+			return rc;
+		}
+	}
+	return rc;
+}
+
 static int ulp_get_single_flow_stat(struct bnxt_ulp_context *ctxt,
 				    struct tf *tfp,
 				    struct bnxt_ulp_fc_info *fc_info,
@@ -540,6 +614,9 @@  int32_t ulp_fc_mgr_cntr_set(struct bnxt_ulp_context *ctxt, enum tf_dir dir,
 	if (!ulp_fc_info)
 		return -EIO;
 
+	if (!ulp_fc_info->num_counters)
+		return 0;
+
 	pthread_mutex_lock(&ulp_fc_info->fc_lock);
 	sw_cntr_idx = hw_cntr_id - ulp_fc_info->shadow_hw_tbl[dir].start_idx;
 	ulp_fc_info->sw_acc_tbl[dir][sw_cntr_idx].valid = true;
@@ -572,6 +649,9 @@  int32_t ulp_fc_mgr_cntr_reset(struct bnxt_ulp_context *ctxt, enum tf_dir dir,
 	if (!ulp_fc_info)
 		return -EIO;
 
+	if (!ulp_fc_info->num_counters)
+		return 0;
+
 	pthread_mutex_lock(&ulp_fc_info->fc_lock);
 	sw_cntr_idx = hw_cntr_id - ulp_fc_info->shadow_hw_tbl[dir].start_idx;
 	ulp_fc_info->sw_acc_tbl[dir][sw_cntr_idx].valid = false;
@@ -644,6 +724,9 @@  int ulp_fc_mgr_query_count_get(struct bnxt_ulp_context *ctxt,
 	hw_cntr_id = params.resource_hndl;
 	if (params.resource_sub_type ==
 			BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_INT_COUNT) {
+		if (!ulp_fc_info->num_counters)
+			return ulp_fc_tf_flow_stat_get(ctxt, &params, count);
+
 		/* TODO:
 		 * Think about optimizing with try_lock later
 		 */
diff --git a/drivers/net/bnxt/tf_ulp/ulp_fc_mgr.h b/drivers/net/bnxt/tf_ulp/ulp_fc_mgr.h
index 04cb86bea2..448d05c118 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_fc_mgr.h
+++ b/drivers/net/bnxt/tf_ulp/ulp_fc_mgr.h
@@ -48,6 +48,7 @@  struct bnxt_ulp_fc_info {
 	uint32_t		flags;
 	uint32_t		num_entries;
 	pthread_mutex_t		fc_lock;
+	uint32_t		num_counters;
 };
 
 int32_t
diff --git a/drivers/net/bnxt/tf_ulp/ulp_flow_db.c b/drivers/net/bnxt/tf_ulp/ulp_flow_db.c
index e7e8335dbe..ab6013f0e3 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_flow_db.c
+++ b/drivers/net/bnxt/tf_ulp/ulp_flow_db.c
@@ -116,7 +116,7 @@  ulp_flow_db_resource_func_get(struct ulp_fdb_resource_info *res_info)
 
 	func = (((res_info->nxt_resource_idx & ULP_FLOW_DB_RES_FUNC_MASK) >>
 		 ULP_FLOW_DB_RES_FUNC_BITS) << ULP_FLOW_DB_RES_FUNC_UPPER);
-	/* The reource func is split into upper and lower */
+	/* The resource func is split into upper and lower */
 	if (func & ULP_FLOW_DB_RES_FUNC_NEED_LOWER)
 		return (func | res_info->resource_func_lower);
 	return func;
@@ -712,6 +712,12 @@  ulp_flow_db_resource_add(struct bnxt_ulp_context *ulp_ctxt,
 	}
 	fid_resource = &flow_tbl->flow_resources[fid];
 
+	if (params->critical_resource && fid_resource->resource_em_handle) {
+		BNXT_TF_DBG(DEBUG, "Ignore multiple critical resources\n");
+		/* Ignore the multiple critical resources */
+		params->critical_resource = BNXT_ULP_CRITICAL_RESOURCE_NO;
+	}
+
 	if (!params->critical_resource) {
 		/* Not the critical_resource so allocate a resource */
 		idx = flow_tbl->flow_tbl_stack[flow_tbl->tail_index];
@@ -735,7 +741,7 @@  ulp_flow_db_resource_add(struct bnxt_ulp_context *ulp_ctxt,
 	if (params->resource_type == TF_TBL_TYPE_ACT_STATS_64 &&
 	    params->resource_sub_type ==
 	    BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_INT_COUNT &&
-	    ulp_fc_info) {
+	    ulp_fc_info && ulp_fc_info->num_counters) {
 		/* Store the first HW counter ID for this table */
 		if (!ulp_fc_mgr_start_idx_isset(ulp_ctxt, params->direction))
 			ulp_fc_mgr_start_idx_set(ulp_ctxt, params->direction,
@@ -760,7 +766,7 @@  ulp_flow_db_resource_add(struct bnxt_ulp_context *ulp_ctxt,
  * flow_type [in] Specify it is regular or default flow
  * fid [in] The index to the flow entry
  * params [in/out] The contents to be copied into params.
- * Onlythe critical_resource needs to be set by the caller.
+ * Only the critical_resource needs to be set by the caller.
  *
  * Returns 0 on success and negative on failure.
  */
@@ -1287,7 +1293,7 @@  ulp_default_flow_db_cfa_action_get(struct bnxt_ulp_context *ulp_ctx,
 					     BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
 					     sub_typ, &params);
 	if (rc) {
-		BNXT_TF_DBG(ERR, "CFA Action ptr not found for flow id %u\n",
+		BNXT_TF_DBG(INFO, "CFA Action ptr not found for flow id %u\n",
 			    flow_id);
 		return -ENOENT;
 	}
diff --git a/drivers/net/bnxt/tf_ulp/ulp_flow_db.h b/drivers/net/bnxt/tf_ulp/ulp_flow_db.h
index d84715e59c..67afca8872 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_flow_db.h
+++ b/drivers/net/bnxt/tf_ulp/ulp_flow_db.h
@@ -18,7 +18,7 @@ 
 
 /*
  * Structure for the flow database resource information
- * The below structure is based on the below paritions
+ * The below structure is based on the below partitions
  * nxt_resource_idx = dir[31],resource_func_upper[30:28],nxt_resource_idx[27:0]
  * If resource_func is EM_TBL then use resource_em_handle.
  * Else the other part of the union is used and
diff --git a/drivers/net/bnxt/tf_ulp/ulp_gen_tbl.c b/drivers/net/bnxt/tf_ulp/ulp_gen_tbl.c
index 5c94e2f5d0..3c1af0b007 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_gen_tbl.c
+++ b/drivers/net/bnxt/tf_ulp/ulp_gen_tbl.c
@@ -346,11 +346,15 @@  ulp_mapper_gen_tbl_res_free(struct bnxt_ulp_context *ulp_ctx,
 		return -EINVAL;
 	}
 	fid = tfp_be_to_cpu_32(fid);
-
-	/* Destroy the flow associated with the shared flow id */
-	if (ulp_mapper_flow_destroy(ulp_ctx, BNXT_ULP_FDB_TYPE_RID,
-				    fid))
-		BNXT_TF_DBG(ERR, "Error in deleting shared flow id %x\n", fid);
+	/* no need to del if fid is 0 since there is no associated resource */
+	if (fid) {
+		/* Destroy the flow associated with the shared flow id */
+		if (ulp_mapper_flow_destroy(ulp_ctx, BNXT_ULP_FDB_TYPE_RID,
+					    fid))
+			BNXT_TF_DBG(ERR,
+				    "Error in deleting shared flow id %x\n",
+				    fid);
+	}
 
 	/* Delete the entry from the hash table */
 	if (gen_tbl_list->hash_tbl)
diff --git a/drivers/net/bnxt/tf_ulp/ulp_ha_mgr.c b/drivers/net/bnxt/tf_ulp/ulp_ha_mgr.c
index 1cfe5cd0a7..5f5b5d639e 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_ha_mgr.c
+++ b/drivers/net/bnxt/tf_ulp/ulp_ha_mgr.c
@@ -24,8 +24,9 @@ 
 #define ULP_HA_IF_TBL_DIR	TF_DIR_RX
 #define ULP_HA_IF_TBL_TYPE	TF_IF_TBL_TYPE_PROF_PARIF_ERR_ACT_REC_PTR
 #define ULP_HA_IF_TBL_IDX 10
+#define ULP_HA_CLIENT_CNT_IF_TBL_IDX 9
 
-static void ulp_ha_mgr_timer_cancel(struct bnxt_ulp_context *ulp_ctx);
+static void ulp_ha_mgr_timer_cancel(void);
 static int32_t ulp_ha_mgr_timer_start(void);
 static void ulp_ha_mgr_timer_cb(void *arg);
 static int32_t ulp_ha_mgr_app_type_set(struct bnxt_ulp_context *ulp_ctx,
@@ -37,6 +38,9 @@  static int32_t
 ulp_ha_mgr_state_set(struct bnxt_ulp_context *ulp_ctx,
 		     enum ulp_ha_mgr_state state);
 
+static int32_t
+ulp_ha_mgr_tf_client_num_get(struct bnxt_ulp_context *ulp_ctx, uint32_t *cnt);
+
 static int32_t
 ulp_ha_mgr_state_set(struct bnxt_ulp_context *ulp_ctx,
 		     enum ulp_ha_mgr_state state)
@@ -71,6 +75,39 @@  ulp_ha_mgr_state_set(struct bnxt_ulp_context *ulp_ctx,
 	return rc;
 }
 
+static int32_t
+ulp_ha_mgr_tf_client_num_get(struct bnxt_ulp_context *ulp_ctx,
+			     uint32_t *cnt)
+{
+	struct tf_get_if_tbl_entry_parms get_parms = { 0 };
+	struct tf *tfp;
+	uint32_t val = 0;
+	int32_t rc = 0;
+
+	if (ulp_ctx == NULL || cnt == NULL) {
+		BNXT_TF_DBG(ERR, "Invalid parms in client num get.\n");
+		return -EINVAL;
+	}
+	tfp = bnxt_ulp_cntxt_tfp_get(ulp_ctx, BNXT_ULP_SHARED_SESSION_NO);
+	if (tfp == NULL) {
+		BNXT_TF_DBG(ERR, "Unable to get the TFP.\n");
+		return -EINVAL;
+	}
+
+	get_parms.dir = ULP_HA_IF_TBL_DIR;
+	get_parms.type = ULP_HA_IF_TBL_TYPE;
+	get_parms.idx = ULP_HA_CLIENT_CNT_IF_TBL_IDX;
+	get_parms.data = (uint8_t *)&val;
+	get_parms.data_sz_in_bytes = sizeof(val);
+
+	rc = tf_get_if_tbl_entry(tfp, &get_parms);
+	if (rc)
+		BNXT_TF_DBG(ERR, "Failed to read the number of HA clients\n");
+
+	*cnt = val;
+	return rc;
+}
+
 static int32_t
 ulp_ha_mgr_region_set(struct bnxt_ulp_context *ulp_ctx,
 		      enum ulp_ha_mgr_region region)
@@ -113,44 +150,113 @@  ulp_ha_mgr_app_type_set(struct bnxt_ulp_context *ulp_ctx,
 	return 0;
 }
 
-/*
- * When a secondary opens, the timer is started and periodically checks for a
- * close of the primary (state moved to SEC_TIMER_COPY).
- * In SEC_TIMER_COPY:
- * - The flow db must be locked to prevent flows from being added to the high
- *   region during a move.
- * - Move the high entries to low
- * - Set the region to low for subsequent flows
- * - Switch our persona to Primary
- * - Set the state to Primary Run
- * - Release the flow db lock for flows to continue
- */
 static void
 ulp_ha_mgr_timer_cb(void *arg __rte_unused)
 {
 	struct tf_move_tcam_shared_entries_parms mparms = { 0 };
+	struct tf_clear_tcam_shared_entries_parms cparms = { 0 };
 	struct bnxt_ulp_context *ulp_ctx;
 	enum ulp_ha_mgr_state curr_state;
+	enum ulp_ha_mgr_app_type app_type;
+	uint8_t myclient_cnt = 0;
+	uint32_t client_cnt = 0;
 	struct tf *tfp;
 	int32_t rc;
 
 	ulp_ctx = bnxt_ulp_cntxt_entry_acquire();
 	if (ulp_ctx == NULL) {
-		BNXT_TF_DBG(INFO, "could not get the ulp context lock\n");
 		ulp_ha_mgr_timer_start();
 		return;
 	}
 
+	myclient_cnt = bnxt_ulp_cntxt_num_shared_clients_get(ulp_ctx);
+	if (myclient_cnt == 0) {
+		BNXT_TF_DBG(ERR,
+			    "PANIC Client Count is zero kill timer\n.");
+		return;
+	}
+
+	tfp = bnxt_ulp_cntxt_tfp_get(ulp_ctx, BNXT_ULP_SHARED_SESSION_YES);
+	if (tfp == NULL) {
+		BNXT_TF_DBG(ERR, "Unable to get the TFP.\n");
+		goto cb_restart;
+	}
+
 	rc = ulp_ha_mgr_state_get(ulp_ctx, &curr_state);
 	if (rc) {
 		/*
-		 * This shouldn't happen, if it does, resetart the timer
+		 * This shouldn't happen, if it does, reset the timer
 		 * and try again next time.
 		 */
-		BNXT_TF_DBG(ERR, "On HA CB:Failed(%d) to get state.\n", rc);
+		BNXT_TF_DBG(ERR, "Failed(%d) to get state.\n",
+			    rc);
 		goto cb_restart;
 	}
-	if (curr_state != ULP_HA_STATE_SEC_TIMER_COPY)
+
+	rc = ulp_ha_mgr_tf_client_num_get(ulp_ctx, &client_cnt);
+	if (rc) {
+		BNXT_TF_DBG(ERR, "Failed(%d) to get cnt.\n",
+			    rc);
+		goto cb_restart;
+	}
+
+	rc =  ulp_ha_mgr_app_type_get(ulp_ctx, &app_type);
+	if (rc) {
+		BNXT_TF_DBG(ERR, "Failed(%d) to get type.\n",
+			    rc);
+		goto cb_restart;
+	}
+
+	/* Handle the Cleanup if an app went away */
+	if (client_cnt == myclient_cnt) {
+		if (curr_state == ULP_HA_STATE_PRIM_SEC_RUN &&
+		    app_type == ULP_HA_APP_TYPE_PRIM) {
+		    /*
+		     * The SECONDARY went away:
+		     * 1. Set the state to PRIM_RUN
+		     * 2. Clear the High region so our TCAM will hit.
+		     */
+			rc = ulp_ha_mgr_state_set(ulp_ctx,
+						  ULP_HA_STATE_PRIM_RUN);
+			if (rc) {
+				BNXT_TF_DBG(ERR,
+					    "On HA CB:Failed(%d) to set state\n",
+					    rc);
+				goto cb_restart;
+			}
+
+			cparms.dir = TF_DIR_RX;
+			cparms.tcam_tbl_type =
+				TF_TCAM_TBL_TYPE_WC_TCAM_HIGH;
+			rc = tf_clear_tcam_shared_entries(tfp, &cparms);
+			if (rc) {
+				BNXT_TF_DBG(ERR,
+					    "On HA CB:Failed(%d) clear tcam\n",
+					    rc);
+				goto cb_restart;
+			}
+		} else if (curr_state == ULP_HA_STATE_PRIM_SEC_RUN &&
+			    app_type == ULP_HA_APP_TYPE_SEC) {
+			/*
+			 * The PRIMARY went away:
+			 * 1. Set the state to SEC_COPY
+			 * 2. Clear the Low Region for the next copy
+			 */
+			rc = ulp_ha_mgr_state_set(ulp_ctx,
+						  ULP_HA_STATE_SEC_TIMER_COPY);
+			if (rc) {
+				BNXT_TF_DBG(ERR,
+					    "On HA CB:Failed(%d) to set state\n",
+					    rc);
+				goto cb_restart;
+			}
+			curr_state = ULP_HA_STATE_SEC_TIMER_COPY;
+		}
+	}
+
+	/* Only the Secondary has work to on SEC_TIMER_COPY */
+	if (curr_state != ULP_HA_STATE_SEC_TIMER_COPY ||
+	    app_type != ULP_HA_APP_TYPE_SEC)
 		goto cb_restart;
 
 	/* Protect the flow database during the copy */
@@ -166,14 +272,19 @@  ulp_ha_mgr_timer_cb(void *arg __rte_unused)
 	 * move WC entries to Low Region.
 	 */
 	BNXT_TF_DBG(INFO, "On HA CB: Moving entries HI to LOW\n");
-	mparms.dir = TF_DIR_RX;
-	mparms.tcam_tbl_type = TF_TCAM_TBL_TYPE_WC_TCAM_HIGH;
-	tfp = bnxt_ulp_cntxt_tfp_get(ulp_ctx, BNXT_ULP_SHARED_SESSION_YES);
-	if (tfp == NULL) {
-		BNXT_TF_DBG(ERR, "On HA CB: Unable to get the TFP.\n");
+
+	cparms.dir = TF_DIR_RX;
+	cparms.tcam_tbl_type = TF_TCAM_TBL_TYPE_WC_TCAM_LOW;
+	rc = tf_clear_tcam_shared_entries(tfp, &cparms);
+	if (rc) {
+		BNXT_TF_DBG(ERR,
+			    "On HA CB:Failed(%d) clear tcam low\n",
+			    rc);
 		goto unlock;
 	}
 
+	mparms.dir = TF_DIR_RX;
+	mparms.tcam_tbl_type = TF_TCAM_TBL_TYPE_WC_TCAM_HIGH;
 	rc = tf_move_tcam_shared_entries(tfp, &mparms);
 	if (rc) {
 		BNXT_TF_DBG(ERR, "On HA_CB: Failed to move entries\n");
@@ -186,8 +297,6 @@  ulp_ha_mgr_timer_cb(void *arg __rte_unused)
 	BNXT_TF_DBG(INFO, "On HA CB: SEC[SEC_TIMER_COPY] => PRIM[PRIM_RUN]\n");
 unlock:
 	bnxt_ulp_cntxt_release_fdb_lock(ulp_ctx);
-	bnxt_ulp_cntxt_entry_release();
-	return;
 cb_restart:
 	bnxt_ulp_cntxt_entry_release();
 	ulp_ha_mgr_timer_start();
@@ -202,18 +311,9 @@  ulp_ha_mgr_timer_start(void)
 }
 
 static void
-ulp_ha_mgr_timer_cancel(struct bnxt_ulp_context *ulp_ctx)
+ulp_ha_mgr_timer_cancel(void)
 {
-	struct bnxt_ulp_ha_mgr_info *ha_info;
-
-	ha_info = bnxt_ulp_cntxt_ptr2_ha_info_get(ulp_ctx);
-	if (ha_info == NULL) {
-		BNXT_TF_DBG(ERR, "Unable to get ha info\n");
-		return;
-	}
-
-	ha_info->flags &= ~ULP_HA_TIMER_THREAD;
-	rte_eal_alarm_cancel(ulp_ha_mgr_timer_cb, (void *)ulp_ctx);
+	rte_eal_alarm_cancel(ulp_ha_mgr_timer_cb, (void *)NULL);
 }
 
 int32_t
@@ -233,6 +333,11 @@  ulp_ha_mgr_init(struct bnxt_ulp_context *ulp_ctx)
 		PMD_DRV_LOG(ERR, "Failed to initialize ha mutex\n");
 		goto cleanup;
 	}
+	rc = ulp_ha_mgr_timer_start();
+	if (rc) {
+		BNXT_TF_DBG(ERR, "Unable to start timer CB.\n");
+		goto cleanup;
+	}
 
 	return 0;
 cleanup:
@@ -246,6 +351,8 @@  ulp_ha_mgr_deinit(struct bnxt_ulp_context *ulp_ctx)
 {
 	struct bnxt_ulp_ha_mgr_info *ha_info;
 
+	ulp_ha_mgr_timer_cancel();
+
 	ha_info = bnxt_ulp_cntxt_ptr2_ha_info_get(ulp_ctx);
 	if (ha_info == NULL) {
 		BNXT_TF_DBG(ERR, "Unable to get HA Info for deinit.\n");
@@ -355,24 +462,10 @@  ulp_ha_mgr_open(struct bnxt_ulp_context *ulp_ctx)
 		 * The current primary is expected to eventually close and pass
 		 * full control to this system;however, until the primary closes
 		 * both are operational.
-		 *
-		 * The timer is started in order to determine when the
-		 * primary has closed.
 		 */
 		ulp_ha_mgr_app_type_set(ulp_ctx, ULP_HA_APP_TYPE_SEC);
 		ulp_ha_mgr_region_set(ulp_ctx, ULP_HA_REGION_HI);
 
-		/*
-		 * TODO:
-		 * Clear the high region so the secondary can begin overriding
-		 * the current entries.
-		 */
-		rc = ulp_ha_mgr_timer_start();
-		if (rc) {
-			BNXT_TF_DBG(ERR, "Unable to start timer on HA Open.\n");
-			return -EINVAL;
-		}
-
 		rc = ulp_ha_mgr_state_set(ulp_ctx, ULP_HA_STATE_PRIM_SEC_RUN);
 		if (rc) {
 			BNXT_TF_DBG(ERR, "On Open: Failed to set PRIM_SEC_RUN\n");
@@ -396,6 +489,8 @@  ulp_ha_mgr_close(struct bnxt_ulp_context *ulp_ctx)
 	int32_t timeout;
 	int32_t rc;
 
+	curr_state = ULP_HA_STATE_INIT;
+	app_type = ULP_HA_APP_TYPE_NONE;
 	rc = ulp_ha_mgr_state_get(ulp_ctx, &curr_state);
 	if (rc) {
 		BNXT_TF_DBG(ERR, "On Close: Failed(%d) to get HA state\n", rc);
@@ -462,10 +557,8 @@  ulp_ha_mgr_close(struct bnxt_ulp_context *ulp_ctx)
 		   app_type == ULP_HA_APP_TYPE_SEC) {
 		/*
 		 * While both are running, the secondary unexpectedly received a
-		 * close.  Cancel the timer, set the state to Primary RUN since
-		 * it is the only one running.
+		 * close.
 		 */
-		ulp_ha_mgr_timer_cancel(ulp_ctx);
 		ulp_ha_mgr_state_set(ulp_ctx, ULP_HA_STATE_PRIM_RUN);
 
 		BNXT_TF_DBG(INFO, "On Close: SEC[PRIM_SEC_RUN] => [PRIM_RUN]\n");
diff --git a/drivers/net/bnxt/tf_ulp/ulp_mapper.c b/drivers/net/bnxt/tf_ulp/ulp_mapper.c
index 05a43b6dc5..acd9f996e8 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_mapper.c
+++ b/drivers/net/bnxt/tf_ulp/ulp_mapper.c
@@ -20,6 +20,7 @@ 
 #include "ulp_template_db_tbl.h"
 #include "ulp_port_db.h"
 #include "ulp_ha_mgr.h"
+#include "bnxt_tf_pmd_shim.h"
 
 static uint8_t mapper_fld_zeros[16] = { 0 };
 
@@ -996,13 +997,13 @@  ulp_mapper_field_src_process(struct bnxt_ulp_mapper_parms *parms,
 			return -EINVAL;
 		}
 		idx = tfp_be_to_cpu_16(idx);
-		if (idx >= BNXT_ULP_CF_IDX_LAST || bytelen > sizeof(uint32_t)) {
+		if (idx >= BNXT_ULP_CF_IDX_LAST || bytelen > sizeof(uint64_t)) {
 			BNXT_TF_DBG(ERR, "comp field [%d] read oob %d\n", idx,
 				    bytelen);
 			return -EINVAL;
 		}
 		buffer = (uint8_t *)&parms->comp_fld[idx];
-		*val = &buffer[sizeof(uint32_t) - bytelen];
+		*val = &buffer[sizeof(uint64_t) - bytelen];
 		*value = ULP_COMP_FLD_IDX_RD(parms, idx);
 		break;
 	case BNXT_ULP_FIELD_SRC_RF:
@@ -3177,109 +3178,141 @@  ulp_mapper_cond_opc_process(struct bnxt_ulp_mapper_parms *parms,
 }
 
 static int32_t
-ulp_mapper_cc_upd_opr_compute(struct bnxt_ulp_mapper_parms *parms,
-			      enum tf_dir dir,
-			      enum bnxt_ulp_cc_upd_src cc_src,
-			      uint16_t cc_opr,
-			      uint64_t *result)
+ulp_mapper_func_opr_compute(struct bnxt_ulp_mapper_parms *parms,
+			    enum tf_dir dir,
+			    enum bnxt_ulp_func_src func_src,
+			    uint16_t func_opr,
+			    uint64_t *result)
 {
 	uint64_t regval;
 	bool shared;
 
 	*result =  false;
-	switch (cc_src) {
-	case BNXT_ULP_CC_UPD_SRC_COMP_FIELD:
-		if (cc_opr >= BNXT_ULP_CF_IDX_LAST) {
-			BNXT_TF_DBG(ERR, "invalid index %u\n", cc_opr);
+	switch (func_src) {
+	case BNXT_ULP_FUNC_SRC_COMP_FIELD:
+		if (func_opr >= BNXT_ULP_CF_IDX_LAST) {
+			BNXT_TF_DBG(ERR, "invalid index %u\n", func_opr);
 			return -EINVAL;
 		}
-		*result = (uint64_t)ULP_COMP_FLD_IDX_RD(parms, cc_opr);
+		*result = ULP_COMP_FLD_IDX_RD(parms, func_opr);
 		break;
-	case BNXT_ULP_CC_UPD_SRC_REGFILE:
-		if (!ulp_regfile_read(parms->regfile, cc_opr, &regval)) {
-			BNXT_TF_DBG(ERR, "regfile[%d] read oob\n", cc_opr);
+	case BNXT_ULP_FUNC_SRC_REGFILE:
+		if (!ulp_regfile_read(parms->regfile, func_opr, &regval)) {
+			BNXT_TF_DBG(ERR, "regfile[%d] read oob\n", func_opr);
 			return -EINVAL;
 		}
 		*result = tfp_be_to_cpu_64(regval);
 		break;
-	case BNXT_ULP_CC_UPD_SRC_GLB_REGFILE:
+	case BNXT_ULP_FUNC_SRC_GLB_REGFILE:
 		if (ulp_mapper_glb_resource_read(parms->mapper_data, dir,
-						 cc_opr, &regval, &shared)) {
+						 func_opr, &regval, &shared)) {
 			BNXT_TF_DBG(ERR, "global regfile[%d] read failed.\n",
-				    cc_opr);
+				    func_opr);
 			return -EINVAL;
 		}
 		*result = tfp_be_to_cpu_64(regval);
 		break;
-	case BNXT_ULP_CC_UPD_SRC_CONST:
-		*result = cc_opr;
+	case BNXT_ULP_FUNC_SRC_CONST:
+		*result = func_opr;
 		break;
 	default:
-		BNXT_TF_DBG(ERR, "invalid src code %u\n", cc_src);
+		BNXT_TF_DBG(ERR, "invalid src code %u\n", func_src);
 		return -EINVAL;
 	}
 	return 0;
 }
 
 static int32_t
-ulp_mapper_cc_upd_info_process(struct bnxt_ulp_mapper_parms *parms,
-			       struct bnxt_ulp_mapper_tbl_info *tbl)
+ulp_mapper_func_info_process(struct bnxt_ulp_mapper_parms *parms,
+			     struct bnxt_ulp_mapper_tbl_info *tbl)
 {
-	struct bnxt_ulp_mapper_cc_upd_info *cc_upd = &tbl->cc_upd_info;
-	uint64_t res = 0, res1, res2;
+	struct bnxt_ulp_mapper_func_info *func_info = &tbl->func_info;
+	uint64_t res = 0, res1 = 0, res2 = 0;
 	int32_t rc = 0;
+	uint32_t process_src1 = 0, process_src2 = 0;
 
-	if (cc_upd->cc_opc == BNXT_ULP_CC_UPD_OPC_NOP)
+	/* determine which functional operands to compute */
+	switch (func_info->func_opc) {
+	case BNXT_ULP_FUNC_OPC_NOP:
 		return rc;
+	case BNXT_ULP_FUNC_OPC_EQ:
+	case BNXT_ULP_FUNC_OPC_NE:
+	case BNXT_ULP_FUNC_OPC_GE:
+	case BNXT_ULP_FUNC_OPC_GT:
+	case BNXT_ULP_FUNC_OPC_LE:
+	case BNXT_ULP_FUNC_OPC_LT:
+		process_src1 = 1;
+		process_src2 = 1;
+		break;
+	case BNXT_ULP_FUNC_OPC_COPY_SRC1_TO_RF:
+		process_src1 = 1;
+		break;
+	default:
+		break;
+	}
 
-	rc = ulp_mapper_cc_upd_opr_compute(parms, tbl->direction,
-					   cc_upd->cc_src1,
-					   cc_upd->cc_opr1, &res1);
-	if (rc)
-		return rc;
+	if (process_src1) {
+		rc = ulp_mapper_func_opr_compute(parms, tbl->direction,
+						 func_info->func_src1,
+						 func_info->func_opr1, &res1);
+		if (rc)
+			return rc;
+	}
 
-	rc = ulp_mapper_cc_upd_opr_compute(parms, tbl->direction,
-					   cc_upd->cc_src2,
-					   cc_upd->cc_opr2, &res2);
-	if (rc)
-		return rc;
+	if (process_src2) {
+		rc = ulp_mapper_func_opr_compute(parms, tbl->direction,
+						 func_info->func_src2,
+						 func_info->func_opr2, &res2);
+		if (rc)
+			return rc;
+	}
 
-	switch (cc_upd->cc_opc) {
-	case BNXT_ULP_CC_UPD_OPC_NOP:
-		res = 1;
-		break;
-	case BNXT_ULP_CC_UPD_OPC_EQ:
+	/* perform the functional opcode operations */
+	switch (func_info->func_opc) {
+	case BNXT_ULP_FUNC_OPC_EQ:
 		if (res1 == res2)
 			res = 1;
 		break;
-	case BNXT_ULP_CC_UPD_OPC_NE:
+	case BNXT_ULP_FUNC_OPC_NE:
 		if (res1 != res2)
 			res = 1;
 		break;
-	case BNXT_ULP_CC_UPD_OPC_GE:
+	case BNXT_ULP_FUNC_OPC_GE:
 		if (res1 >= res2)
 			res = 1;
 		break;
-	case BNXT_ULP_CC_UPD_OPC_GT:
+	case BNXT_ULP_FUNC_OPC_GT:
 		if (res1 > res2)
 			res = 1;
 		break;
-	case BNXT_ULP_CC_UPD_OPC_LE:
+	case BNXT_ULP_FUNC_OPC_LE:
 		if (res1 <= res2)
 			res = 1;
 		break;
-	case BNXT_ULP_CC_UPD_OPC_LT:
+	case BNXT_ULP_FUNC_OPC_LT:
 		if (res1 < res2)
 			res = 1;
 		break;
-	case BNXT_ULP_CC_UPD_OPC_LAST:
-		BNXT_TF_DBG(ERR, "invalid code %u\n", cc_upd->cc_opc);
+	case BNXT_ULP_FUNC_OPC_COPY_SRC1_TO_RF:
+		res = res1;
+		break;
+	case BNXT_ULP_FUNC_OPC_RSS_CONFIG:
+		/* apply the rss config using pmd method */
+		return bnxt_rss_config_action_apply(parms);
+	case BNXT_ULP_FUNC_OPC_GET_PARENT_MAC_ADDR:
+		rc = bnxt_pmd_get_parent_mac_addr(parms, (uint8_t *)&res);
+		if (rc)
+			return -EINVAL;
+		res = tfp_be_to_cpu_64(res);
+		break;
+	default:
+		BNXT_TF_DBG(ERR, "invalid func code %u\n", func_info->func_opc);
 		return -EINVAL;
 	}
-	if (ulp_regfile_write(parms->regfile, cc_upd->cc_dst_opr,
+	if (ulp_regfile_write(parms->regfile, func_info->func_dst_opr,
 			      tfp_cpu_to_be_64(res))) {
-		BNXT_TF_DBG(ERR, "Failed write the cc_opc %u\n",
-			    cc_upd->cc_dst_opr);
+		BNXT_TF_DBG(ERR, "Failed write the func_opc %u\n",
+			    func_info->func_dst_opr);
 		return -EINVAL;
 	}
 
@@ -3366,7 +3399,7 @@  ulp_mapper_conflict_resolution_process(struct bnxt_ulp_mapper_parms *parms,
 {
 	int32_t rc = 0;
 	uint64_t regval;
-	uint64_t comp_sig_id;
+	uint64_t comp_sig;
 
 	*res = 0;
 	switch (tbl->accept_opcode) {
@@ -3399,14 +3432,14 @@  ulp_mapper_conflict_resolution_process(struct bnxt_ulp_mapper_parms *parms,
 				    BNXT_ULP_RF_IDX_FLOW_SIG_ID);
 			return -EINVAL;
 		}
-		comp_sig_id = ULP_COMP_FLD_IDX_RD(parms,
-						  BNXT_ULP_CF_IDX_FLOW_SIG_ID);
+		comp_sig = ULP_COMP_FLD_IDX_RD(parms,
+					       BNXT_ULP_CF_IDX_FLOW_SIG_ID);
 		regval = tfp_be_to_cpu_64(regval);
-		if (comp_sig_id == regval)
+		if (comp_sig == regval)
 			*res = 1;
 		else
-			BNXT_TF_DBG(ERR, "failed signature match %x:%x\n",
-				    (uint32_t)comp_sig_id, (uint32_t)regval);
+			BNXT_TF_DBG(ERR, "failed signature match 0x%016"
+				    PRIX64 ":%x\n", comp_sig, (uint32_t)regval);
 		break;
 	default:
 		BNXT_TF_DBG(ERR, "Invalid accept opcode %d\n",
@@ -3462,8 +3495,9 @@  ulp_mapper_tbls_process(struct bnxt_ulp_mapper_parms *parms, uint32_t tid)
 
 	for (tbl_idx = 0; tbl_idx < num_tbls && cond_goto;) {
 		tbl = &tbls[tbl_idx];
-		/* Process the conditional code update opcodes */
-		if (ulp_mapper_cc_upd_info_process(parms, tbl)) {
+		cond_goto = tbl->execute_info.cond_true_goto;
+		/* Process the conditional func code opcodes */
+		if (ulp_mapper_func_info_process(parms, tbl)) {
 			BNXT_TF_DBG(ERR, "Failed to process cond update\n");
 			rc = -EINVAL;
 			goto error;
@@ -3758,6 +3792,7 @@  ulp_mapper_flow_create(struct bnxt_ulp_context *ulp_ctx,
 	parms.flow_pattern_id = cparms->flow_pattern_id;
 	parms.act_pattern_id = cparms->act_pattern_id;
 	parms.app_id = cparms->app_id;
+	parms.port_id = cparms->port_id;
 
 	/* Get the device id from the ulp context */
 	if (bnxt_ulp_cntxt_dev_id_get(ulp_ctx, &parms.dev_id)) {
diff --git a/drivers/net/bnxt/tf_ulp/ulp_mapper.h b/drivers/net/bnxt/tf_ulp/ulp_mapper.h
index 4c5dd4b836..004e89ac2b 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_mapper.h
+++ b/drivers/net/bnxt/tf_ulp/ulp_mapper.h
@@ -46,7 +46,7 @@  struct bnxt_ulp_mapper_parms {
 	struct ulp_rte_hdr_bitmap		*hdr_bitmap;
 	struct ulp_rte_hdr_field		*hdr_field;
 	struct ulp_rte_field_bitmap		*fld_bitmap;
-	uint32_t				*comp_fld;
+	uint64_t				*comp_fld;
 	struct ulp_regfile			*regfile;
 	struct bnxt_ulp_context			*ulp_ctx;
 	uint32_t				fid;
@@ -61,13 +61,14 @@  struct bnxt_ulp_mapper_parms {
 	uint32_t				flow_pattern_id;
 	uint32_t				act_pattern_id;
 	uint8_t					app_id;
+	uint16_t				port_id;
 };
 
 struct bnxt_ulp_mapper_create_parms {
 	uint32_t			app_priority;
 	struct ulp_rte_hdr_bitmap	*hdr_bitmap;
 	struct ulp_rte_hdr_field	*hdr_field;
-	uint32_t			*comp_fld;
+	uint64_t			*comp_fld;
 	struct ulp_rte_act_bitmap	*act;
 	struct ulp_rte_act_prop		*act_prop;
 	struct ulp_rte_field_bitmap	*fld_bitmap;
@@ -89,6 +90,7 @@  struct bnxt_ulp_mapper_create_parms {
 	uint32_t			flow_pattern_id;
 	uint32_t			act_pattern_id;
 	uint8_t				app_id;
+	uint16_t			port_id;
 };
 
 /* Function to initialize any dynamic mapper data. */
diff --git a/drivers/net/bnxt/tf_ulp/ulp_port_db.c b/drivers/net/bnxt/tf_ulp/ulp_port_db.c
index 96fc456d4c..4045473097 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_port_db.c
+++ b/drivers/net/bnxt/tf_ulp/ulp_port_db.c
@@ -9,6 +9,7 @@ 
 #include "bnxt_tf_common.h"
 #include "ulp_port_db.h"
 #include "tfp.h"
+#include "bnxt_tf_pmd_shim.h"
 
 static uint32_t
 ulp_port_db_allocate_ifindex(struct bnxt_ulp_port_db *port_db)
@@ -148,57 +149,57 @@  int32_t	ulp_port_db_dev_port_intf_update(struct bnxt_ulp_context *ulp_ctxt,
 	/* update the interface details */
 	intf = &port_db->ulp_intf_list[ifindex];
 
-	intf->type = bnxt_get_interface_type(port_id);
-	intf->drv_func_id = bnxt_get_fw_func_id(port_id,
-						BNXT_ULP_INTF_TYPE_INVALID);
+	intf->type = bnxt_pmd_get_interface_type(port_id);
+	intf->drv_func_id = bnxt_pmd_get_fw_func_id(port_id,
+						    BNXT_ULP_INTF_TYPE_INVALID);
 
 	func = &port_db->ulp_func_id_tbl[intf->drv_func_id];
 	if (!func->func_valid) {
-		func->func_svif = bnxt_get_svif(port_id, true,
-						BNXT_ULP_INTF_TYPE_INVALID);
-		func->func_spif = bnxt_get_phy_port_id(port_id);
+		func->func_svif = bnxt_pmd_get_svif(port_id, true,
+						    BNXT_ULP_INTF_TYPE_INVALID);
+		func->func_spif = bnxt_pmd_get_phy_port_id(port_id);
 		func->func_parif =
-			bnxt_get_parif(port_id, BNXT_ULP_INTF_TYPE_INVALID);
+			bnxt_pmd_get_parif(port_id, BNXT_ULP_INTF_TYPE_INVALID);
 		func->func_vnic =
-			bnxt_get_vnic_id(port_id, BNXT_ULP_INTF_TYPE_INVALID);
-		func->phy_port_id = bnxt_get_phy_port_id(port_id);
+			bnxt_pmd_get_vnic_id(port_id, BNXT_ULP_INTF_TYPE_INVALID);
+		func->phy_port_id = bnxt_pmd_get_phy_port_id(port_id);
 		func->func_valid = true;
 		func->ifindex = ifindex;
 	}
 
 	if (intf->type == BNXT_ULP_INTF_TYPE_VF_REP) {
 		intf->vf_func_id =
-			bnxt_get_fw_func_id(port_id, BNXT_ULP_INTF_TYPE_VF_REP);
+			bnxt_pmd_get_fw_func_id(port_id, BNXT_ULP_INTF_TYPE_VF_REP);
 
 		func = &port_db->ulp_func_id_tbl[intf->vf_func_id];
 		func->func_svif =
-			bnxt_get_svif(port_id, true, BNXT_ULP_INTF_TYPE_VF_REP);
+			bnxt_pmd_get_svif(port_id, true, BNXT_ULP_INTF_TYPE_VF_REP);
 		func->func_spif =
-			bnxt_get_phy_port_id(port_id);
+			bnxt_pmd_get_phy_port_id(port_id);
 		func->func_parif =
-			bnxt_get_parif(port_id, BNXT_ULP_INTF_TYPE_INVALID);
+			bnxt_pmd_get_parif(port_id, BNXT_ULP_INTF_TYPE_INVALID);
 		func->func_vnic =
-			bnxt_get_vnic_id(port_id, BNXT_ULP_INTF_TYPE_VF_REP);
-		func->phy_port_id = bnxt_get_phy_port_id(port_id);
+			bnxt_pmd_get_vnic_id(port_id, BNXT_ULP_INTF_TYPE_VF_REP);
+		func->phy_port_id = bnxt_pmd_get_phy_port_id(port_id);
 		func->ifindex = ifindex;
 	}
 
 	/* When there is no match, the default action is to send the packet to
 	 * the kernel. And to send it to the kernel, we need the PF's vnic id.
 	 */
-	func->func_parent_vnic = bnxt_get_parent_vnic_id(port_id, intf->type);
+	func->func_parent_vnic = bnxt_pmd_get_parent_vnic_id(port_id, intf->type);
 	func->func_parent_vnic = tfp_cpu_to_be_16(func->func_parent_vnic);
-	bnxt_get_iface_mac(port_id, intf->type, func->func_mac,
+	bnxt_pmd_get_iface_mac(port_id, intf->type, func->func_mac,
 			   func->func_parent_mac);
 
 	port_data = &port_db->phy_port_list[func->phy_port_id];
 	if (!port_data->port_valid) {
 		port_data->port_svif =
-			bnxt_get_svif(port_id, false, BNXT_ULP_INTF_TYPE_INVALID);
-		port_data->port_spif = bnxt_get_phy_port_id(port_id);
+			bnxt_pmd_get_svif(port_id, false, BNXT_ULP_INTF_TYPE_INVALID);
+		port_data->port_spif = bnxt_pmd_get_phy_port_id(port_id);
 		port_data->port_parif =
-			bnxt_get_parif(port_id, BNXT_ULP_INTF_TYPE_INVALID);
-		port_data->port_vport = bnxt_get_vport(port_id);
+			bnxt_pmd_get_parif(port_id, BNXT_ULP_INTF_TYPE_INVALID);
+		port_data->port_vport = bnxt_pmd_get_vport(port_id);
 		port_data->port_valid = true;
 	}
 	return 0;
diff --git a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c
index a55655a5bd..b8802bdf8e 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c
+++ b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c
@@ -201,8 +201,7 @@  bnxt_ulp_comp_fld_intf_update(struct ulp_rte_parser_params *params)
 	dir = ULP_COMP_FLD_IDX_RD(params, BNXT_ULP_CF_IDX_DIRECTION);
 
 	/* read the port id details */
-	port_id = ULP_COMP_FLD_IDX_RD(params,
-				      BNXT_ULP_CF_IDX_INCOMING_IF);
+	port_id = ULP_COMP_FLD_IDX_RD(params, BNXT_ULP_CF_IDX_INCOMING_IF);
 	if (ulp_port_db_dev_port_to_ulp_index(params->ulp_ctx,
 					      port_id,
 					      &ifindex)) {
@@ -856,7 +855,7 @@  ulp_rte_vlan_hdr_handler(const struct rte_flow_item *item,
 			       BNXT_ULP_HDR_BIT_II_VLAN);
 		inner_flag = 1;
 	} else {
-		BNXT_TF_DBG(ERR, "Error Parsing:Vlan hdr found withtout eth\n");
+		BNXT_TF_DBG(ERR, "Error Parsing:Vlan hdr found without eth\n");
 		return BNXT_TF_RC_ERROR;
 	}
 	/* Update the field protocol hdr bitmap */
@@ -1691,15 +1690,34 @@  int32_t
 ulp_rte_rss_act_handler(const struct rte_flow_action *action_item,
 			struct ulp_rte_parser_params *param)
 {
-	const struct rte_flow_action_rss *rss = action_item->conf;
+	const struct rte_flow_action_rss *rss;
+	struct ulp_rte_act_prop *ap = &param->act_prop;
 
-	if (rss) {
-		/* Update the hdr_bitmap with vxlan */
-		ULP_BITMAP_SET(param->act_bitmap.bits, BNXT_ULP_ACT_BIT_RSS);
-		return BNXT_TF_RC_SUCCESS;
+	if (action_item == NULL || action_item->conf == NULL) {
+		BNXT_TF_DBG(ERR, "Parse Err: invalid rss configuration\n");
+		return BNXT_TF_RC_ERROR;
 	}
-	BNXT_TF_DBG(ERR, "Parse Error: RSS arg is invalid\n");
-	return BNXT_TF_RC_ERROR;
+
+	rss = action_item->conf;
+	/* Copy the rss into the specific action properties */
+	memcpy(&ap->act_details[BNXT_ULP_ACT_PROP_IDX_RSS_TYPES], &rss->types,
+	       BNXT_ULP_ACT_PROP_SZ_RSS_TYPES);
+	memcpy(&ap->act_details[BNXT_ULP_ACT_PROP_IDX_RSS_LEVEL], &rss->level,
+	       BNXT_ULP_ACT_PROP_SZ_RSS_LEVEL);
+	memcpy(&ap->act_details[BNXT_ULP_ACT_PROP_IDX_RSS_KEY_LEN],
+	       &rss->key_len, BNXT_ULP_ACT_PROP_SZ_RSS_KEY_LEN);
+
+	if (rss->key_len > BNXT_ULP_ACT_PROP_SZ_RSS_KEY) {
+		BNXT_TF_DBG(ERR, "Parse Err: RSS key too big\n");
+		return BNXT_TF_RC_ERROR;
+	}
+	memcpy(&ap->act_details[BNXT_ULP_ACT_PROP_IDX_RSS_KEY], rss->key,
+	       rss->key_len);
+
+	/* set the RSS action header bit */
+	ULP_BITMAP_SET(param->act_bitmap.bits, BNXT_ULP_ACT_BIT_RSS);
+
+	return BNXT_TF_RC_SUCCESS;
 }
 
 /* Function to handle the parsing of RTE Flow action vxlan_encap Header. */
diff --git a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.h b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.h
index bbba10108c..4431f1bbd0 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.h
+++ b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.h
@@ -24,7 +24,7 @@ 
 #define BNXT_ULP_ENCAP_IPV6_DO			2
 #define BNXT_ULP_ENCAP_IPV6_SIZE		24
 #define BNXT_ULP_ENCAP_UDP_SIZE			4
-#define BNXT_ULP_INVALID_SVIF_VAL		-1U
+#define BNXT_ULP_INVALID_SVIF_VAL		-1UL
 
 #define	BNXT_ULP_GET_IPV6_VER(vtcf)		\
 			(((vtcf) & BNXT_ULP_PARSER_IPV6_VER_MASK) >> 28)
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 8cbbe203a8..a38fddafdb 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_template_db_enum.h
+++ b/drivers/net/bnxt/tf_ulp/ulp_template_db_enum.h
@@ -3,7 +3,7 @@ 
  * All rights reserved.
  */
 
-/* date: Sun Mar 21 13:04:51 2021 */
+/* date: Wed Apr 14 09:56:27 2021 */
 
 #ifndef ULP_TEMPLATE_DB_H_
 #define ULP_TEMPLATE_DB_H_
@@ -28,7 +28,7 @@ 
 #define BNXT_ULP_ACT_HID_MASK 2047
 #define BNXT_ULP_APP_RESOURCE_RESV_LIST_MAX_SZ 4
 #define BNXT_ULP_GLB_RESOURCE_TBL_MAX_SZ 33
-#define BNXT_ULP_APP_GLB_RESOURCE_TBL_MAX_SZ 26
+#define BNXT_ULP_APP_GLB_RESOURCE_TBL_MAX_SZ 38
 #define BNXT_ULP_RESOURCE_RESV_LIST_MAX_SZ 205
 #define BNXT_ULP_APP_CAP_TBL_MAX_SZ 6
 #define BNXT_ULP_COND_GOTO_REJECT 1023
@@ -113,8 +113,7 @@  enum bnxt_ulp_hdr_bit {
 	BNXT_ULP_HDR_BIT_I_UDP               = 0x0000000000010000,
 	BNXT_ULP_HDR_BIT_I_ICMP              = 0x0000000000020000,
 	BNXT_ULP_HDR_BIT_F1                  = 0x0000000000040000,
-	BNXT_ULP_HDR_BIT_ANY                 = 0x0000000000080000,
-	BNXT_ULP_HDR_BIT_LAST                = 0x0000000000100000
+	BNXT_ULP_HDR_BIT_LAST                = 0x0000000000080000
 };
 
 enum bnxt_ulp_accept_opc {
@@ -136,25 +135,6 @@  enum bnxt_ulp_byte_order {
 	BNXT_ULP_BYTE_ORDER_LAST = 2
 };
 
-enum bnxt_ulp_cc_upd_opc {
-	BNXT_ULP_CC_UPD_OPC_NOP = 0,
-	BNXT_ULP_CC_UPD_OPC_EQ = 1,
-	BNXT_ULP_CC_UPD_OPC_NE = 2,
-	BNXT_ULP_CC_UPD_OPC_GT = 3,
-	BNXT_ULP_CC_UPD_OPC_GE = 4,
-	BNXT_ULP_CC_UPD_OPC_LT = 5,
-	BNXT_ULP_CC_UPD_OPC_LE = 6,
-	BNXT_ULP_CC_UPD_OPC_LAST = 7
-};
-
-enum bnxt_ulp_cc_upd_src {
-	BNXT_ULP_CC_UPD_SRC_REGFILE = 0,
-	BNXT_ULP_CC_UPD_SRC_GLB_REGFILE = 1,
-	BNXT_ULP_CC_UPD_SRC_COMP_FIELD = 2,
-	BNXT_ULP_CC_UPD_SRC_CONST = 3,
-	BNXT_ULP_CC_UPD_SRC_LAST = 4
-};
-
 enum bnxt_ulp_cf_idx {
 	BNXT_ULP_CF_IDX_NOT_USED = 0,
 	BNXT_ULP_CF_IDX_MPLS_TAG_NUM = 1,
@@ -323,6 +303,28 @@  enum bnxt_ulp_field_src {
 	BNXT_ULP_FIELD_SRC_LAST = 16
 };
 
+enum bnxt_ulp_func_opc {
+	BNXT_ULP_FUNC_OPC_NOP = 0,
+	BNXT_ULP_FUNC_OPC_EQ = 1,
+	BNXT_ULP_FUNC_OPC_NE = 2,
+	BNXT_ULP_FUNC_OPC_GT = 3,
+	BNXT_ULP_FUNC_OPC_GE = 4,
+	BNXT_ULP_FUNC_OPC_LT = 5,
+	BNXT_ULP_FUNC_OPC_LE = 6,
+	BNXT_ULP_FUNC_OPC_COPY_SRC1_TO_RF = 7,
+	BNXT_ULP_FUNC_OPC_RSS_CONFIG = 8,
+	BNXT_ULP_FUNC_OPC_GET_PARENT_MAC_ADDR = 9,
+	BNXT_ULP_FUNC_OPC_LAST = 10
+};
+
+enum bnxt_ulp_func_src {
+	BNXT_ULP_FUNC_SRC_REGFILE = 0,
+	BNXT_ULP_FUNC_SRC_GLB_REGFILE = 1,
+	BNXT_ULP_FUNC_SRC_COMP_FIELD = 2,
+	BNXT_ULP_FUNC_SRC_CONST = 3,
+	BNXT_ULP_FUNC_SRC_LAST = 4
+};
+
 enum bnxt_ulp_generic_tbl_lkup_type {
 	BNXT_ULP_GENERIC_TBL_LKUP_TYPE_INDEX = 0,
 	BNXT_ULP_GENERIC_TBL_LKUP_TYPE_HASH = 1,
@@ -344,17 +346,22 @@  enum bnxt_ulp_glb_rf_idx {
 	BNXT_ULP_GLB_RF_IDX_VXLAN_PROF_FUNC_ID = 4,
 	BNXT_ULP_GLB_RF_IDX_ENCAP_MAC_PTR = 5,
 	BNXT_ULP_GLB_RF_IDX_APP_GLB_PROF_FUNC_ID_0 = 6,
-	BNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_0 = 7,
-	BNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_1 = 8,
-	BNXT_ULP_GLB_RF_IDX_APP_GLB_EM_PROFILE_ID_0 = 9,
-	BNXT_ULP_GLB_RF_IDX_APP_GLB_EM_PROFILE_ID_1 = 10,
-	BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_PROFILE_ID_0 = 11,
-	BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_PROFILE_ID_1 = 12,
-	BNXT_ULP_GLB_RF_IDX_APP_GLB_EM_KEY_ID_0 = 13,
-	BNXT_ULP_GLB_RF_IDX_APP_GLB_EM_KEY_ID_1 = 14,
-	BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_KEY_ID_0 = 15,
-	BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_KEY_ID_1 = 16,
-	BNXT_ULP_GLB_RF_IDX_LAST = 17
+	BNXT_ULP_GLB_RF_IDX_APP_GLB_PROF_FUNC_ID_1 = 7,
+	BNXT_ULP_GLB_RF_IDX_APP_GLB_PROF_FUNC_ID_2 = 8,
+	BNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_0 = 9,
+	BNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_1 = 10,
+	BNXT_ULP_GLB_RF_IDX_APP_GLB_EM_PROFILE_ID_0 = 11,
+	BNXT_ULP_GLB_RF_IDX_APP_GLB_EM_PROFILE_ID_1 = 12,
+	BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_PROFILE_ID_0 = 13,
+	BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_PROFILE_ID_1 = 14,
+	BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_PROFILE_ID_2 = 15,
+	BNXT_ULP_GLB_RF_IDX_APP_GLB_EM_KEY_ID_0 = 16,
+	BNXT_ULP_GLB_RF_IDX_APP_GLB_EM_KEY_ID_1 = 17,
+	BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_KEY_ID_0 = 18,
+	BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_KEY_ID_1 = 19,
+	BNXT_ULP_GLB_RF_IDX_APP_GLB_AREC_PTR_0 = 20,
+	BNXT_ULP_GLB_RF_IDX_APP_GLB_AREC_PTR_1 = 21,
+	BNXT_ULP_GLB_RF_IDX_LAST = 22
 };
 
 enum bnxt_ulp_hdr_type {
@@ -465,7 +472,7 @@  enum bnxt_ulp_rf_idx {
 	BNXT_ULP_RF_IDX_DEFAULT_AREC_PTR = 36,
 	BNXT_ULP_RF_IDX_CC = 37,
 	BNXT_ULP_RF_IDX_CF_FLOW_SIG_ID = 38,
-	BNXT_ULP_RF_IDX_PHY_PORT_VPORT = 39,
+	BNXT_ULP_RF_IDX_PHY_PORT = 39,
 	BNXT_ULP_RF_IDX_LAST = 40
 };
 
@@ -492,7 +499,8 @@  enum bnxt_ulp_template_type {
 
 enum bnxt_ulp_app_cap {
 	BNXT_ULP_APP_CAP_SHARED_EN = 0x00000001,
-	BNXT_ULP_APP_CAP_HOT_UPGRADE_EN = 0x00000002
+	BNXT_ULP_APP_CAP_HOT_UPGRADE_EN = 0x00000002,
+	BNXT_ULP_APP_CAP_UNICAST_ONLY = 0x00000004
 };
 
 enum bnxt_ulp_fdb_resource_flags {
@@ -578,7 +586,10 @@  enum bnxt_ulp_act_prop_sz {
 	BNXT_ULP_ACT_PROP_SZ_ENCAP_TUN = 32,
 	BNXT_ULP_ACT_PROP_SZ_JUMP = 4,
 	BNXT_ULP_ACT_PROP_SZ_SHARED_HANDLE = 8,
-	BNXT_ULP_ACT_PROP_SZ_RSS = 64,
+	BNXT_ULP_ACT_PROP_SZ_RSS_TYPES = 8,
+	BNXT_ULP_ACT_PROP_SZ_RSS_LEVEL = 4,
+	BNXT_ULP_ACT_PROP_SZ_RSS_KEY_LEN = 4,
+	BNXT_ULP_ACT_PROP_SZ_RSS_KEY = 40,
 	BNXT_ULP_ACT_PROP_SZ_LAST = 4
 };
 
@@ -625,8 +636,11 @@  enum bnxt_ulp_act_prop_idx {
 	BNXT_ULP_ACT_PROP_IDX_ENCAP_TUN = 225,
 	BNXT_ULP_ACT_PROP_IDX_JUMP = 257,
 	BNXT_ULP_ACT_PROP_IDX_SHARED_HANDLE = 261,
-	BNXT_ULP_ACT_PROP_IDX_RSS = 269,
-	BNXT_ULP_ACT_PROP_IDX_LAST = 333
+	BNXT_ULP_ACT_PROP_IDX_RSS_TYPES = 269,
+	BNXT_ULP_ACT_PROP_IDX_RSS_LEVEL = 277,
+	BNXT_ULP_ACT_PROP_IDX_RSS_KEY_LEN = 281,
+	BNXT_ULP_ACT_PROP_IDX_RSS_KEY = 285,
+	BNXT_ULP_ACT_PROP_IDX_LAST = 325
 };
 
 enum ulp_wp_sym {
diff --git a/drivers/net/bnxt/tf_ulp/ulp_template_db_tbl.c b/drivers/net/bnxt/tf_ulp/ulp_template_db_tbl.c
index be7914a5cd..7573cf6074 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_template_db_tbl.c
+++ b/drivers/net/bnxt/tf_ulp/ulp_template_db_tbl.c
@@ -3,7 +3,7 @@ 
  * All rights reserved.
  */
 
-/* date: Sun Mar 21 13:04:51 2021 */
+/* date: Wed Apr 14 09:56:27 2021 */
 
 #include "ulp_template_db_enum.h"
 #include "ulp_template_db_field.h"
@@ -77,7 +77,7 @@  struct bnxt_ulp_generic_tbl_params ulp_generic_tbl_params[] = {
 	.name                    = "INGRESS GENERIC_TABLE_MAC_ADDR_CACHE",
 	.result_num_entries      = 256,
 	.result_num_bytes        = 8,
-	.key_num_bytes           = 9,
+	.key_num_bytes           = 10,
 	.num_buckets             = 8,
 	.hash_tbl_entries        = 1024,
 	.result_byte_order       = BNXT_ULP_BYTE_ORDER_LE
@@ -87,7 +87,7 @@  struct bnxt_ulp_generic_tbl_params ulp_generic_tbl_params[] = {
 	.name                    = "EGRESS GENERIC_TABLE_MAC_ADDR_CACHE",
 	.result_num_entries      = 256,
 	.result_num_bytes        = 8,
-	.key_num_bytes           = 9,
+	.key_num_bytes           = 10,
 	.num_buckets             = 8,
 	.hash_tbl_entries        = 1024,
 	.result_byte_order       = BNXT_ULP_BYTE_ORDER_LE
@@ -202,7 +202,7 @@  struct bnxt_ulp_device_params ulp_device_params[BNXT_ULP_DEVICE_ID_LAST] = {
 	.ext_flow_db_num_entries = 32768,
 	.mark_db_lfid_entries    = 0,
 	.mark_db_gfid_entries    = 0,
-	.flow_count_db_entries   = 0,
+	.flow_count_db_entries   = 16384,
 	.fdb_parent_flow_entries = 2,
 	.num_resources_per_flow  = 8,
 	.num_phy_ports           = 2,
@@ -217,7 +217,7 @@  struct bnxt_ulp_device_params ulp_device_params[BNXT_ULP_DEVICE_ID_LAST] = {
 	.em_key_align_bytes      = 80,
 	.wc_slice_width          = 160,
 	.wc_max_slices           = 4,
-	.wc_mode_list        = {0x0000000c, 0x0000000e, 0x0000000f, 0x0000000f},
+	.wc_mode_list       = {0x0000000c, 0x0000000e, 0x0000000f, 0x0000000f},
 	.wc_mod_list_max_size    = 4,
 	.wc_ctl_size_bits        = 32,
 	.dev_tbls                = ulp_template_thor_tbls
@@ -251,12 +251,14 @@  struct bnxt_ulp_app_capabilities_info ulp_app_cap_info_list[] = {
 	{
 	.app_id                  = 1,
 	.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,
-	.flags                   = BNXT_ULP_APP_CAP_SHARED_EN
+	.flags                   = BNXT_ULP_APP_CAP_SHARED_EN |
+				BNXT_ULP_APP_CAP_HOT_UPGRADE_EN
 	},
 	{
 	.app_id                  = 1,
 	.device_id               = BNXT_ULP_DEVICE_ID_THOR,
-	.flags                   = BNXT_ULP_APP_CAP_SHARED_EN
+	.flags                   = BNXT_ULP_APP_CAP_SHARED_EN |
+				BNXT_ULP_APP_CAP_HOT_UPGRADE_EN
 	},
 	{
 	.app_id                  = 2,
@@ -278,7 +280,7 @@  struct bnxt_ulp_resource_resv_info ulp_app_resource_resv_list[] = {
 	.direction               = TF_DIR_RX,
 	.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,
 	.resource_type           = TF_TCAM_TBL_TYPE_WC_TCAM,
-	.count                   = 512
+	.count                   = 128
 	},
 	{
 	.app_id                  = 1,
@@ -294,7 +296,7 @@  struct bnxt_ulp_resource_resv_info ulp_app_resource_resv_list[] = {
 	.direction               = TF_DIR_RX,
 	.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,
 	.resource_type           = TF_TCAM_TBL_TYPE_WC_TCAM,
-	.count                   = 512
+	.count                   = 128
 	},
 	{
 	.app_id                  = 2,
@@ -350,6 +352,30 @@  struct bnxt_ulp_glb_resource_info ulp_app_glb_resource_tbl[] = {
 	},
 	{
 	.app_id                  = 1,
+	.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,
+	.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
+	.resource_type           = TF_IDENT_TYPE_WC_PROF,
+	.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_PROFILE_ID_1,
+	.direction               = TF_DIR_RX
+	},
+	{
+	.app_id                  = 1,
+	.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,
+	.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
+	.resource_type           = TF_TBL_TYPE_FULL_ACT_RECORD,
+	.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_APP_GLB_AREC_PTR_0,
+	.direction               = TF_DIR_RX
+	},
+	{
+	.app_id                  = 1,
+	.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,
+	.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
+	.resource_type           = TF_TBL_TYPE_FULL_ACT_RECORD,
+	.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_APP_GLB_AREC_PTR_1,
+	.direction               = TF_DIR_RX
+	},
+	{
+	.app_id                  = 1,
 	.device_id               = BNXT_ULP_DEVICE_ID_THOR,
 	.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
 	.resource_type           = TF_IDENT_TYPE_PROF_FUNC,
@@ -391,6 +417,14 @@  struct bnxt_ulp_glb_resource_info ulp_app_glb_resource_tbl[] = {
 	{
 	.app_id                  = 1,
 	.device_id               = BNXT_ULP_DEVICE_ID_THOR,
+	.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
+	.resource_type           = TF_IDENT_TYPE_WC_PROF,
+	.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_PROFILE_ID_1,
+	.direction               = TF_DIR_RX
+	},
+	{
+	.app_id                  = 1,
+	.device_id               = BNXT_ULP_DEVICE_ID_THOR,
 	.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
 	.resource_type           = TF_TBL_TYPE_EM_FKB,
 	.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_APP_GLB_EM_KEY_ID_0,
@@ -413,6 +447,22 @@  struct bnxt_ulp_glb_resource_info ulp_app_glb_resource_tbl[] = {
 	.direction               = TF_DIR_RX
 	},
 	{
+	.app_id                  = 1,
+	.device_id               = BNXT_ULP_DEVICE_ID_THOR,
+	.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
+	.resource_type           = TF_TBL_TYPE_FULL_ACT_RECORD,
+	.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_APP_GLB_AREC_PTR_0,
+	.direction               = TF_DIR_RX
+	},
+	{
+	.app_id                  = 1,
+	.device_id               = BNXT_ULP_DEVICE_ID_THOR,
+	.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
+	.resource_type           = TF_TBL_TYPE_FULL_ACT_RECORD,
+	.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_APP_GLB_AREC_PTR_1,
+	.direction               = TF_DIR_RX
+	},
+	{
 	.app_id                  = 2,
 	.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,
 	.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
@@ -454,6 +504,30 @@  struct bnxt_ulp_glb_resource_info ulp_app_glb_resource_tbl[] = {
 	},
 	{
 	.app_id                  = 2,
+	.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,
+	.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
+	.resource_type           = TF_IDENT_TYPE_WC_PROF,
+	.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_PROFILE_ID_1,
+	.direction               = TF_DIR_RX
+	},
+	{
+	.app_id                  = 2,
+	.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,
+	.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
+	.resource_type           = TF_TBL_TYPE_FULL_ACT_RECORD,
+	.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_APP_GLB_AREC_PTR_0,
+	.direction               = TF_DIR_RX
+	},
+	{
+	.app_id                  = 2,
+	.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,
+	.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
+	.resource_type           = TF_TBL_TYPE_FULL_ACT_RECORD,
+	.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_APP_GLB_AREC_PTR_1,
+	.direction               = TF_DIR_RX
+	},
+	{
+	.app_id                  = 2,
 	.device_id               = BNXT_ULP_DEVICE_ID_THOR,
 	.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
 	.resource_type           = TF_IDENT_TYPE_PROF_FUNC,
@@ -495,6 +569,14 @@  struct bnxt_ulp_glb_resource_info ulp_app_glb_resource_tbl[] = {
 	{
 	.app_id                  = 2,
 	.device_id               = BNXT_ULP_DEVICE_ID_THOR,
+	.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
+	.resource_type           = TF_IDENT_TYPE_WC_PROF,
+	.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_PROFILE_ID_1,
+	.direction               = TF_DIR_RX
+	},
+	{
+	.app_id                  = 2,
+	.device_id               = BNXT_ULP_DEVICE_ID_THOR,
 	.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
 	.resource_type           = TF_TBL_TYPE_EM_FKB,
 	.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_APP_GLB_EM_KEY_ID_0,
@@ -515,6 +597,22 @@  struct bnxt_ulp_glb_resource_info ulp_app_glb_resource_tbl[] = {
 	.resource_type           = TF_TBL_TYPE_WC_FKB,
 	.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_KEY_ID_1,
 	.direction               = TF_DIR_RX
+	},
+	{
+	.app_id                  = 2,
+	.device_id               = BNXT_ULP_DEVICE_ID_THOR,
+	.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
+	.resource_type           = TF_TBL_TYPE_FULL_ACT_RECORD,
+	.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_APP_GLB_AREC_PTR_0,
+	.direction               = TF_DIR_RX
+	},
+	{
+	.app_id                  = 2,
+	.device_id               = BNXT_ULP_DEVICE_ID_THOR,
+	.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
+	.resource_type           = TF_TBL_TYPE_FULL_ACT_RECORD,
+	.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_APP_GLB_AREC_PTR_1,
+	.direction               = TF_DIR_RX
 	}
 };
 
@@ -818,7 +916,7 @@  struct bnxt_ulp_resource_resv_info ulp_resource_resv_list[] = {
 	.direction               = TF_DIR_RX,
 	.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
 	.resource_type           = TF_IDENT_TYPE_PROF_FUNC,
-	.count                   = 64
+	.count                   = 63
 	},
 	{
 	.app_id                  = 0,
@@ -962,7 +1060,7 @@  struct bnxt_ulp_resource_resv_info ulp_resource_resv_list[] = {
 	.direction               = TF_DIR_TX,
 	.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
 	.resource_type           = TF_IDENT_TYPE_PROF_FUNC,
-	.count                   = 64
+	.count                   = 63
 	},
 	{
 	.app_id                  = 0,
@@ -1418,7 +1516,7 @@  struct bnxt_ulp_resource_resv_info ulp_resource_resv_list[] = {
 	.direction               = TF_DIR_RX,
 	.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
 	.resource_type           = TF_TBL_TYPE_FULL_ACT_RECORD,
-	.count                   = 512
+	.count                   = 128
 	},
 	{
 	.app_id                  = 1,
@@ -1426,7 +1524,7 @@  struct bnxt_ulp_resource_resv_info ulp_resource_resv_list[] = {
 	.direction               = TF_DIR_RX,
 	.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
 	.resource_type           = TF_TBL_TYPE_ACT_STATS_64,
-	.count                   = 1024
+	.count                   = 128
 	},
 	{
 	.app_id                  = 1,
@@ -1546,7 +1644,7 @@  struct bnxt_ulp_resource_resv_info ulp_resource_resv_list[] = {
 	.direction               = TF_DIR_TX,
 	.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
 	.resource_type           = TF_TBL_TYPE_FULL_ACT_RECORD,
-	.count                   = 512
+	.count                   = 128
 	},
 	{
 	.app_id                  = 1,
@@ -1554,7 +1652,7 @@  struct bnxt_ulp_resource_resv_info ulp_resource_resv_list[] = {
 	.direction               = TF_DIR_TX,
 	.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
 	.resource_type           = TF_TBL_TYPE_ACT_STATS_64,
-	.count                   = 1024
+	.count                   = 128
 	},
 	{
 	.app_id                  = 1,
@@ -1698,7 +1796,7 @@  struct bnxt_ulp_resource_resv_info ulp_resource_resv_list[] = {
 	.direction               = TF_DIR_RX,
 	.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
 	.resource_type           = TF_TBL_TYPE_ACT_STATS_64,
-	.count                   = 1024
+	.count                   = 256
 	},
 	{
 	.app_id                  = 1,
@@ -1826,7 +1924,7 @@  struct bnxt_ulp_resource_resv_info ulp_resource_resv_list[] = {
 	.direction               = TF_DIR_TX,
 	.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
 	.resource_type           = TF_TBL_TYPE_ACT_STATS_64,
-	.count                   = 1024
+	.count                   = 256
 	},
 	{
 	.app_id                  = 1,
@@ -1946,7 +2044,7 @@  struct bnxt_ulp_resource_resv_info ulp_resource_resv_list[] = {
 	.direction               = TF_DIR_RX,
 	.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
 	.resource_type           = TF_TBL_TYPE_FULL_ACT_RECORD,
-	.count                   = 512
+	.count                   = 128
 	},
 	{
 	.app_id                  = 2,
@@ -1954,7 +2052,7 @@  struct bnxt_ulp_resource_resv_info ulp_resource_resv_list[] = {
 	.direction               = TF_DIR_RX,
 	.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
 	.resource_type           = TF_TBL_TYPE_ACT_STATS_64,
-	.count                   = 1024
+	.count                   = 128
 	},
 	{
 	.app_id                  = 2,
@@ -2018,7 +2116,7 @@  struct bnxt_ulp_resource_resv_info ulp_resource_resv_list[] = {
 	.direction               = TF_DIR_RX,
 	.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,
 	.resource_type           = TF_TCAM_TBL_TYPE_WC_TCAM,
-	.count                   = 128
+	.count                   = 64
 	},
 	{
 	.app_id                  = 2,
@@ -2074,7 +2172,7 @@  struct bnxt_ulp_resource_resv_info ulp_resource_resv_list[] = {
 	.direction               = TF_DIR_TX,
 	.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
 	.resource_type           = TF_TBL_TYPE_FULL_ACT_RECORD,
-	.count                   = 512
+	.count                   = 128
 	},
 	{
 	.app_id                  = 2,
@@ -2082,7 +2180,7 @@  struct bnxt_ulp_resource_resv_info ulp_resource_resv_list[] = {
 	.direction               = TF_DIR_TX,
 	.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
 	.resource_type           = TF_TBL_TYPE_ACT_STATS_64,
-	.count                   = 1024
+	.count                   = 128
 	},
 	{
 	.app_id                  = 2,
@@ -2226,7 +2324,7 @@  struct bnxt_ulp_resource_resv_info ulp_resource_resv_list[] = {
 	.direction               = TF_DIR_RX,
 	.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
 	.resource_type           = TF_TBL_TYPE_ACT_STATS_64,
-	.count                   = 1024
+	.count                   = 256
 	},
 	{
 	.app_id                  = 2,
@@ -2290,7 +2388,7 @@  struct bnxt_ulp_resource_resv_info ulp_resource_resv_list[] = {
 	.direction               = TF_DIR_RX,
 	.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,
 	.resource_type           = TF_TCAM_TBL_TYPE_WC_TCAM,
-	.count                   = 128
+	.count                   = 256
 	},
 	{
 	.app_id                  = 2,
@@ -2354,7 +2452,7 @@  struct bnxt_ulp_resource_resv_info ulp_resource_resv_list[] = {
 	.direction               = TF_DIR_TX,
 	.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
 	.resource_type           = TF_TBL_TYPE_ACT_STATS_64,
-	.count                   = 1024
+	.count                   = 256
 	},
 	{
 	.app_id                  = 2,
@@ -2515,8 +2613,14 @@  uint32_t ulp_act_prop_map_table[] = {
 		BNXT_ULP_ACT_PROP_SZ_JUMP,
 	[BNXT_ULP_ACT_PROP_IDX_SHARED_HANDLE] =
 		BNXT_ULP_ACT_PROP_SZ_SHARED_HANDLE,
-	[BNXT_ULP_ACT_PROP_IDX_RSS] =
-		BNXT_ULP_ACT_PROP_SZ_RSS,
+	[BNXT_ULP_ACT_PROP_IDX_RSS_TYPES] =
+		BNXT_ULP_ACT_PROP_SZ_RSS_TYPES,
+	[BNXT_ULP_ACT_PROP_IDX_RSS_LEVEL] =
+		BNXT_ULP_ACT_PROP_SZ_RSS_LEVEL,
+	[BNXT_ULP_ACT_PROP_IDX_RSS_KEY_LEN] =
+		BNXT_ULP_ACT_PROP_SZ_RSS_KEY_LEN,
+	[BNXT_ULP_ACT_PROP_IDX_RSS_KEY] =
+		BNXT_ULP_ACT_PROP_SZ_RSS_KEY,
 	[BNXT_ULP_ACT_PROP_IDX_LAST] =
 		BNXT_ULP_ACT_PROP_SZ_LAST
 };
diff --git a/drivers/net/bnxt/tf_ulp/ulp_template_db_thor_act.c b/drivers/net/bnxt/tf_ulp/ulp_template_db_thor_act.c
index 73df10a575..a60dfae104 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_template_db_thor_act.c
+++ b/drivers/net/bnxt/tf_ulp/ulp_template_db_thor_act.c
@@ -3,7 +3,7 @@ 
  * All rights reserved.
  */
 
-/* date: Mon Feb  8 09:17:37 2021 */
+/* date: Mon Apr  5 11:35:38 2021 */
 
 #include "ulp_template_db_enum.h"
 #include "ulp_template_db_field.h"
@@ -12,21 +12,188 @@ 
 
 /* Mapper templates for header act list */
 struct bnxt_ulp_mapper_tmpl_info ulp_thor_act_tmpl_list[] = {
+	/* act_tid: 1, thor, ingress */
+	[1] = {
+	.device_name = BNXT_ULP_DEVICE_ID_THOR,
+	.num_tbls = 2,
+	.start_tbl_idx = 0,
+	.reject_info = {
+		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_FALSE,
+		.cond_start_idx = 0,
+		.cond_nums = 0 }
+	}
 };
 
 struct bnxt_ulp_mapper_tbl_info ulp_thor_act_tbl_list[] = {
+	{ /* act_tid: 1, thor, table: int_flow_counter_tbl.0 */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
+	.resource_type = TF_TBL_TYPE_ACT_STATS_64,
+	.resource_sub_type =
+		BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_INT_COUNT,
+	.direction = TF_DIR_RX,
+	.execute_info = {
+		.cond_true_goto  = 1,
+		.cond_false_goto = 1,
+		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
+		.cond_start_idx = 0,
+		.cond_nums = 1 },
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_REGFILE,
+	.tbl_operand = BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
+	.mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE,
+	.result_start_idx = 0,
+	.result_bit_size = 64,
+	.result_num_fields = 1
+	},
+	{ /* act_tid: 1, thor, table: int_full_act_record.0 */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
+	.resource_type = TF_TBL_TYPE_FULL_ACT_RECORD,
+	.resource_sub_type =
+		BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_NORMAL,
+	.direction = TF_DIR_RX,
+	.execute_info = {
+		.cond_true_goto  = 0,
+		.cond_false_goto = 0,
+		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_TRUE,
+		.cond_start_idx = 1,
+		.cond_nums = 0 },
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_RF_IDX_MAIN_ACTION_PTR,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
+	.mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE,
+	.result_start_idx = 1,
+	.result_bit_size = 128,
+	.result_num_fields = 17
+	}
 };
 
 struct bnxt_ulp_mapper_cond_info ulp_thor_act_cond_list[] = {
+	/* cond_execute: act_tid: 1, int_flow_counter_tbl.0 */
+	{
+	.cond_opcode = BNXT_ULP_COND_OPC_ACT_BIT_IS_SET,
+	.cond_operand = BNXT_ULP_ACT_BIT_COUNT
+	}
 };
 
 struct bnxt_ulp_mapper_field_info ulp_thor_act_result_field_list[] = {
-};
-
-struct
-bnxt_ulp_mapper_ident_info ulp_thor_act_ident_list[] = {
-};
-
-struct
-bnxt_ulp_mapper_key_info ulp_thor_act_key_info_list[] = {
+	/* act_tid: 1, thor, table: int_flow_counter_tbl.0 */
+	{
+	.description = "count",
+	.field_bit_size = 64,
+	.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+	.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+	},
+	/* act_tid: 1, thor, table: int_full_act_record.0 */
+	{
+	.description = "sp_rec_ptr",
+	.field_bit_size = 16,
+	.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+	.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+	},
+	{
+	.description = "encap_ptr",
+	.field_bit_size = 16,
+	.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+	.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+	},
+	{
+	.description = "mod_rec_ptr",
+	.field_bit_size = 16,
+	.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+	.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+	},
+	{
+	.description = "rsvd1",
+	.field_bit_size = 16,
+	.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+	.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+	},
+	{
+	.description = "rsvd0",
+	.field_bit_size = 8,
+	.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+	.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+	},
+	{
+	.description = "decap_func",
+	.field_bit_size = 5,
+	.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+	.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+	},
+	{
+	.description = "meter",
+	.field_bit_size = 10,
+	.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+	.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+	},
+	{
+	.description = "stats_op",
+	.field_bit_size = 1,
+	.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+	.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+	},
+	{
+	.description = "stats_ptr",
+	.field_bit_size = 16,
+	.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+	.field_src1 = BNXT_ULP_FIELD_SRC_RF,
+	.field_opr1 = {
+	(BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 >> 8) & 0xff,
+	BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 & 0xff}
+	},
+	{
+	.description = "vnic_or_vport",
+	.field_bit_size = 11,
+	.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+	.field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
+	.field_opr1 = {
+	(BNXT_ULP_ACT_PROP_IDX_VNIC >> 8) & 0xff,
+	BNXT_ULP_ACT_PROP_IDX_VNIC & 0xff}
+	},
+	{
+	.description = "use_default",
+	.field_bit_size = 1,
+	.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+	.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+	},
+	{
+	.description = "mirror",
+	.field_bit_size = 4,
+	.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+	.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+	},
+	{
+	.description = "cond_copy",
+	.field_bit_size = 1,
+	.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+	.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+	},
+	{
+	.description = "vlan_del_rpt",
+	.field_bit_size = 2,
+	.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+	.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+	},
+	{
+	.description = "drop",
+	.field_bit_size = 1,
+	.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+	.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+	},
+	{
+	.description = "hit",
+	.field_bit_size = 1,
+	.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+	.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+	},
+	{
+	.description = "type",
+	.field_bit_size = 3,
+	.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+	.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+	.field_opr1 = {
+	1}
+	}
 };
diff --git a/drivers/net/bnxt/tf_ulp/ulp_template_db_thor_class.c b/drivers/net/bnxt/tf_ulp/ulp_template_db_thor_class.c
index 5e7ba75c62..45025733fc 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_template_db_thor_class.c
+++ b/drivers/net/bnxt/tf_ulp/ulp_template_db_thor_class.c
@@ -3,7 +3,7 @@ 
  * All rights reserved.
  */
 
-/* date: Sun Mar 14 12:41:59 2021 */
+/* date: Mon Apr  5 11:35:38 2021 */
 
 #include "ulp_template_db_enum.h"
 #include "ulp_template_db_field.h"
@@ -12,34 +12,53 @@ 
 
 /* Mapper templates for header class list */
 struct bnxt_ulp_mapper_tmpl_info ulp_thor_class_tmpl_list[] = {
-	/* class_tid: 3, thor, ingress */
-	[3] = {
+	/* class_tid: 1, thor, ingress */
+	[1] = {
 	.device_name = BNXT_ULP_DEVICE_ID_THOR,
-	.num_tbls = 7,
+	.num_tbls = 47,
 	.start_tbl_idx = 0,
 	.reject_info = {
 		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_FALSE,
 		.cond_start_idx = 0,
 		.cond_nums = 0 }
 	},
-	/* class_tid: 4, thor, egress */
+	/* class_tid: 2, thor, ingress */
+	[2] = {
+	.device_name = BNXT_ULP_DEVICE_ID_THOR,
+	.num_tbls = 13,
+	.start_tbl_idx = 47,
+	.reject_info = {
+		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_FALSE,
+		.cond_start_idx = 17,
+		.cond_nums = 0 }
+	},
+	/* class_tid: 3, thor, ingress */
+	[3] = {
+	.device_name = BNXT_ULP_DEVICE_ID_THOR,
+	.num_tbls = 1,
+	.start_tbl_idx = 60,
+	.reject_info = {
+		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_FALSE,
+		.cond_start_idx = 20,
+		.cond_nums = 0 }
+	},
+	/* class_tid: 4, thor, ingress */
 	[4] = {
 	.device_name = BNXT_ULP_DEVICE_ID_THOR,
-	.num_tbls = 6,
-	.start_tbl_idx = 7,
+	.num_tbls = 9,
+	.start_tbl_idx = 61,
 	.reject_info = {
 		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_FALSE,
-		.cond_start_idx = 1,
+		.cond_start_idx = 20,
 		.cond_nums = 0 }
 	}
 };
 
 struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
-	{ /* class_tid: 3, thor, table: int_full_act_record.ing_0 */
-	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
-	.resource_type = TF_TBL_TYPE_FULL_ACT_RECORD,
+	{ /* class_tid: 1, thor, table: port_table.rd */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_GENERIC_TABLE,
 	.resource_sub_type =
-		BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_NORMAL,
+		BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_PORT_TABLE,
 	.direction = TF_DIR_RX,
 	.execute_info = {
 		.cond_true_goto  = 1,
@@ -47,512 +66,28726 @@  struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
 		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_TRUE,
 		.cond_start_idx = 0,
 		.cond_nums = 0 },
-	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
-	.tbl_operand = BNXT_ULP_RF_IDX_MAIN_ACTION_PTR,
-	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
-	.mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
+	.tbl_opcode = BNXT_ULP_GENERIC_TBL_OPC_READ,
+	.gen_tbl_lkup_type = BNXT_ULP_GENERIC_TBL_LKUP_TYPE_INDEX,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
 	.byte_order = BNXT_ULP_BYTE_ORDER_LE,
-	.result_start_idx = 0,
-	.result_bit_size = 128,
-	.result_num_fields = 17
+	.key_start_idx = 0,
+	.blob_key_bit_size = 10,
+	.key_bit_size = 10,
+	.key_num_fields = 1,
+	.ident_start_idx = 0,
+	.ident_nums = 3
 	},
-	{ /* class_tid: 3, thor, table: parif_def_arec_ptr.ing_0 */
-	.resource_func = BNXT_ULP_RESOURCE_FUNC_IF_TABLE,
-	.resource_type = TF_IF_TBL_TYPE_PROF_PARIF_DFLT_ACT_REC_PTR,
+	{ /* class_tid: 1, thor, table: control.check_gre */
+	.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_false_goto = 17,
+		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
 		.cond_start_idx = 0,
-		.cond_nums = 0 },
-	.tbl_opcode = BNXT_ULP_IF_TBL_OPC_WR_COMP_FIELD,
-	.tbl_operand = BNXT_ULP_CF_IDX_PHY_PORT_PARIF,
-	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
-	.byte_order = BNXT_ULP_BYTE_ORDER_LE,
-	.result_start_idx = 17,
-	.result_bit_size = 32,
-	.result_num_fields = 1
+		.cond_nums = 1 },
+	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE
 	},
-	{ /* class_tid: 3, thor, table: parif_def_err_arec_ptr.ing_0 */
-	.resource_func = BNXT_ULP_RESOURCE_FUNC_IF_TABLE,
-	.resource_type = TF_IF_TBL_TYPE_PROF_PARIF_ERR_ACT_REC_PTR,
+	{ /* class_tid: 1, thor, table: l2_cntxt_tcam_cache.gre_rd */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_GENERIC_TABLE,
+	.resource_sub_type =
+		BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_L2_CNTXT_TCAM,
 	.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 = 0,
+		.cond_start_idx = 1,
 		.cond_nums = 0 },
-	.tbl_opcode = BNXT_ULP_IF_TBL_OPC_WR_COMP_FIELD,
-	.tbl_operand = BNXT_ULP_CF_IDX_PHY_PORT_PARIF,
+	.tbl_opcode = BNXT_ULP_GENERIC_TBL_OPC_READ,
+	.gen_tbl_lkup_type = BNXT_ULP_GENERIC_TBL_LKUP_TYPE_INDEX,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
 	.byte_order = BNXT_ULP_BYTE_ORDER_LE,
-	.result_start_idx = 18,
-	.result_bit_size = 32,
-	.result_num_fields = 1
+	.key_start_idx = 1,
+	.blob_key_bit_size = 8,
+	.key_bit_size = 8,
+	.key_num_fields = 1,
+	.ident_start_idx = 3,
+	.ident_nums = 0
 	},
-	{ /* class_tid: 3, thor, table: control.egr_1 */
+	{ /* class_tid: 1, thor, table: control.gre_hit */
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_CTRL_TABLE,
 	.direction = TF_DIR_RX,
 	.execute_info = {
 		.cond_true_goto  = 1,
-		.cond_false_goto = 0,
+		.cond_false_goto = 42,
 		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
-		.cond_start_idx = 0,
+		.cond_start_idx = 1,
 		.cond_nums = 1 },
-	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_ALLOC_RID_REGFILE,
+	.fdb_operand = BNXT_ULP_RF_IDX_RID,
 	.byte_order = BNXT_ULP_BYTE_ORDER_LE
 	},
-	{ /* class_tid: 3, thor, table: int_full_act_record.egr_vfr */
-	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
-	.resource_type = TF_TBL_TYPE_FULL_ACT_RECORD,
+	{ /* class_tid: 1, thor, table: l2_cntxt_tcam.gre */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,
+	.resource_type = TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_HIGH,
+	.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 = 2,
+		.cond_nums = 0 },
+	.tbl_opcode = BNXT_ULP_TCAM_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_RF_IDX_L2_CNTXT_TCAM_INDEX_0,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_RID_REGFILE,
+	.fdb_operand = BNXT_ULP_RF_IDX_RID,
+	.pri_opcode  = BNXT_ULP_PRI_OPC_CONST,
+	.pri_operand = 0,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE,
+	.key_start_idx = 2,
+	.blob_key_bit_size = 213,
+	.key_bit_size = 213,
+	.key_num_fields = 21,
+	.result_start_idx = 0,
+	.result_bit_size = 43,
+	.result_num_fields = 6,
+	.ident_start_idx = 3,
+	.ident_nums = 1
+	},
+	{ /* class_tid: 1, thor, table: l2_cntxt_tcam_cache.gre_wr */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_GENERIC_TABLE,
 	.resource_sub_type =
-		BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_VFR_CFA_ACTION,
-	.direction = TF_DIR_TX,
+		BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_L2_CNTXT_TCAM,
+	.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 = 1,
+		.cond_start_idx = 2,
 		.cond_nums = 0 },
-	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
-	.tbl_operand = BNXT_ULP_RF_IDX_MAIN_ACTION_PTR,
+	.tbl_opcode = BNXT_ULP_GENERIC_TBL_OPC_WRITE,
+	.gen_tbl_lkup_type = BNXT_ULP_GENERIC_TBL_LKUP_TYPE_INDEX,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
-	.mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
 	.byte_order = BNXT_ULP_BYTE_ORDER_LE,
-	.result_start_idx = 19,
-	.result_bit_size = 128,
-	.result_num_fields = 17,
-	.encap_num_fields = 0
+	.key_start_idx = 23,
+	.blob_key_bit_size = 8,
+	.key_bit_size = 8,
+	.key_num_fields = 1,
+	.result_start_idx = 6,
+	.result_bit_size = 62,
+	.result_num_fields = 4
 	},
-	{ /* class_tid: 3, thor, table: parif_def_arec_ptr.egr_0 */
-	.resource_func = BNXT_ULP_RESOURCE_FUNC_IF_TABLE,
-	.resource_type = TF_IF_TBL_TYPE_PROF_PARIF_DFLT_ACT_REC_PTR,
-	.direction = TF_DIR_TX,
+	{ /* class_tid: 1, thor, table: fkb_select.gre */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
+	.resource_type = TF_TBL_TYPE_WC_FKB,
+	.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 = 1,
+		.cond_start_idx = 2,
 		.cond_nums = 0 },
-	.tbl_opcode = BNXT_ULP_IF_TBL_OPC_WR_COMP_FIELD,
-	.tbl_operand = BNXT_ULP_CF_IDX_DRV_FUNC_PARIF,
-	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_WR_GLB_REGFILE,
+	.tbl_operand = BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_KEY_ID_0,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
 	.byte_order = BNXT_ULP_BYTE_ORDER_LE,
-	.result_start_idx = 36,
-	.result_bit_size = 32,
-	.result_num_fields = 1
+	.result_start_idx = 10,
+	.result_bit_size = 106,
+	.result_num_fields = 106
 	},
-	{ /* class_tid: 3, thor, table: parif_def_err_arec_ptr.egr_0 */
-	.resource_func = BNXT_ULP_RESOURCE_FUNC_IF_TABLE,
-	.resource_type = TF_IF_TBL_TYPE_PROF_PARIF_ERR_ACT_REC_PTR,
-	.direction = TF_DIR_TX,
+	{ /* class_tid: 1, thor, table: profile_tcam.gre */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,
+	.resource_type = TF_TCAM_TBL_TYPE_PROF_TCAM,
+	.direction = TF_DIR_RX,
 	.execute_info = {
-		.cond_true_goto  = 0,
-		.cond_false_goto = 0,
+		.cond_true_goto  = 1,
+		.cond_false_goto = 1,
 		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_TRUE,
-		.cond_start_idx = 1,
+		.cond_start_idx = 2,
 		.cond_nums = 0 },
-	.tbl_opcode = BNXT_ULP_IF_TBL_OPC_WR_COMP_FIELD,
-	.tbl_operand = BNXT_ULP_CF_IDX_DRV_FUNC_PARIF,
+	.tbl_opcode = BNXT_ULP_TCAM_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_RF_IDX_PROFILE_TCAM_INDEX_0,
 	.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_NO,
 	.byte_order = BNXT_ULP_BYTE_ORDER_LE,
-	.result_start_idx = 37,
-	.result_bit_size = 32,
-	.result_num_fields = 1
+	.key_start_idx = 24,
+	.blob_key_bit_size = 94,
+	.key_bit_size = 94,
+	.key_num_fields = 43,
+	.result_start_idx = 116,
+	.result_bit_size = 33,
+	.result_num_fields = 8,
+	.ident_start_idx = 4,
+	.ident_nums = 0
 	},
-	{ /* class_tid: 4, thor, table: int_full_act_record.loopback */
-	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
-	.resource_type = TF_TBL_TYPE_FULL_ACT_RECORD,
-	.resource_sub_type =
-		BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_VFR_CFA_ACTION,
-	.direction = TF_DIR_TX,
+	{ /* class_tid: 1, thor, table: wm.gre */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,
+	.resource_type = TF_TCAM_TBL_TYPE_WC_TCAM_HIGH,
+	.direction = TF_DIR_RX,
+	.execute_info = {
+		.cond_true_goto  = 2,
+		.cond_false_goto = 1,
+		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
+		.cond_start_idx = 2,
+		.cond_nums = 1 },
+	.tbl_opcode = BNXT_ULP_TCAM_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_RF_IDX_WC_TCAM_INDEX_0,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
+	.mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
+	.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_NO,
+	.shared_session = BNXT_ULP_SHARED_SESSION_YES,
+	.byte_order = BNXT_ULP_BYTE_ORDER_BE,
+	.key_start_idx = 67,
+	.blob_key_bit_size = 0,
+	.key_bit_size = 0,
+	.key_num_fields = 114,
+	.result_start_idx = 124,
+	.result_bit_size = 38,
+	.result_num_fields = 5
+	},
+	{ /* class_tid: 1, thor, table: wm.gre_low */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,
+	.resource_type = TF_TCAM_TBL_TYPE_WC_TCAM_LOW,
+	.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 = 1,
+		.cond_start_idx = 3,
 		.cond_nums = 0 },
-	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_GLB_REGFILE,
-	.tbl_operand = BNXT_ULP_GLB_RF_IDX_GLB_LB_AREC_PTR,
-	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
+	.tbl_opcode = BNXT_ULP_TCAM_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_RF_IDX_WC_TCAM_INDEX_0,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
 	.mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
-	.byte_order = BNXT_ULP_BYTE_ORDER_LE,
-	.result_start_idx = 38,
-	.result_bit_size = 128,
-	.result_num_fields = 17,
-	.encap_num_fields = 0
+	.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_NO,
+	.shared_session = BNXT_ULP_SHARED_SESSION_YES,
+	.byte_order = BNXT_ULP_BYTE_ORDER_BE,
+	.key_start_idx = 181,
+	.blob_key_bit_size = 0,
+	.key_bit_size = 0,
+	.key_num_fields = 114,
+	.result_start_idx = 129,
+	.result_bit_size = 38,
+	.result_num_fields = 5
 	},
-	{ /* class_tid: 4, thor, table: parif_def_arec_ptr.vf_egr */
-	.resource_func = BNXT_ULP_RESOURCE_FUNC_IF_TABLE,
-	.resource_type = TF_IF_TBL_TYPE_PROF_PARIF_DFLT_ACT_REC_PTR,
-	.direction = TF_DIR_TX,
+	{ /* class_tid: 1, thor, table: mac_addr_cache.gre_frag_rd */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_GENERIC_TABLE,
+	.resource_sub_type =
+		BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_MAC_ADDR_CACHE,
+	.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 = 1,
+		.cond_start_idx = 3,
 		.cond_nums = 0 },
-	.tbl_opcode = BNXT_ULP_IF_TBL_OPC_WR_CONST,
-	.tbl_operand = ULP_THOR_SYM_LOOPBACK_PARIF,
+	.tbl_opcode = BNXT_ULP_GENERIC_TBL_OPC_READ,
+	.gen_tbl_lkup_type = BNXT_ULP_GENERIC_TBL_LKUP_TYPE_HASH,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
 	.byte_order = BNXT_ULP_BYTE_ORDER_LE,
-	.result_start_idx = 55,
-	.result_bit_size = 32,
-	.result_num_fields = 1
+	.key_start_idx = 295,
+	.blob_key_bit_size = 73,
+	.key_bit_size = 73,
+	.key_num_fields = 5,
+	.ident_start_idx = 4,
+	.ident_nums = 0
 	},
-	{ /* class_tid: 4, thor, table: parif_def_err_arec_ptr.vf_egr */
-	.resource_func = BNXT_ULP_RESOURCE_FUNC_IF_TABLE,
-	.resource_type = TF_IF_TBL_TYPE_PROF_PARIF_ERR_ACT_REC_PTR,
-	.direction = TF_DIR_TX,
+	{ /* class_tid: 1, thor, table: control.gre_frag_mac_hit */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_CTRL_TABLE,
+	.direction = TF_DIR_RX,
+	.execute_info = {
+		.cond_true_goto  = 1,
+		.cond_false_goto = 4,
+		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
+		.cond_start_idx = 3,
+		.cond_nums = 1 },
+	.fdb_opcode = BNXT_ULP_FDB_OPC_ALLOC_RID_REGFILE,
+	.fdb_operand = BNXT_ULP_RF_IDX_RID,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE
+	},
+	{ /* class_tid: 1, thor, table: l2_cntxt_tcam.0 */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,
+	.resource_type = TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_HIGH,
+	.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 = 1,
+		.cond_start_idx = 4,
 		.cond_nums = 0 },
-	.tbl_opcode = BNXT_ULP_IF_TBL_OPC_WR_CONST,
-	.tbl_operand = ULP_THOR_SYM_LOOPBACK_PARIF,
-	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
+	.tbl_opcode = BNXT_ULP_TCAM_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_RF_IDX_L2_CNTXT_TCAM_INDEX_0,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_RID_REGFILE,
+	.fdb_operand = BNXT_ULP_RF_IDX_RID,
+	.pri_opcode  = BNXT_ULP_PRI_OPC_CONST,
+	.pri_operand = 0,
 	.byte_order = BNXT_ULP_BYTE_ORDER_LE,
-	.result_start_idx = 56,
-	.result_bit_size = 32,
-	.result_num_fields = 1
+	.key_start_idx = 300,
+	.blob_key_bit_size = 213,
+	.key_bit_size = 213,
+	.key_num_fields = 21,
+	.result_start_idx = 134,
+	.result_bit_size = 43,
+	.result_num_fields = 6,
+	.ident_start_idx = 4,
+	.ident_nums = 0
 	},
-	{ /* class_tid: 4, thor, table: int_full_act_record.vf_ing */
-	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
-	.resource_type = TF_TBL_TYPE_FULL_ACT_RECORD,
+	{ /* class_tid: 1, thor, table: mac_addr_cache.gre_frag_wr */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_GENERIC_TABLE,
 	.resource_sub_type =
-		BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_NORMAL,
+		BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_MAC_ADDR_CACHE,
 	.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 = 1,
+		.cond_start_idx = 4,
 		.cond_nums = 0 },
-	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
-	.tbl_operand = BNXT_ULP_RF_IDX_MAIN_ACTION_PTR,
+	.tbl_opcode = BNXT_ULP_GENERIC_TBL_OPC_WRITE,
+	.gen_tbl_lkup_type = BNXT_ULP_GENERIC_TBL_LKUP_TYPE_HASH,
 	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
-	.mark_db_opcode = BNXT_ULP_MARK_DB_OPC_PUSH_AND_SET_VFR_FLAG,
 	.byte_order = BNXT_ULP_BYTE_ORDER_LE,
-	.result_start_idx = 57,
-	.result_bit_size = 128,
-	.result_num_fields = 17,
-	.encap_num_fields = 0
+	.key_start_idx = 321,
+	.blob_key_bit_size = 73,
+	.key_bit_size = 73,
+	.key_num_fields = 5,
+	.result_start_idx = 140,
+	.result_bit_size = 62,
+	.result_num_fields = 4
 	},
-	{ /* class_tid: 4, thor, table: vtag_encap_record.vfr_egr0 */
+	{ /* class_tid: 1, thor, table: fkb_select.gre_frag */
 	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
-	.resource_type = TF_TBL_TYPE_ACT_ENCAP_8B,
-	.resource_sub_type =
-		BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_NORMAL,
-	.direction = TF_DIR_TX,
+	.resource_type = TF_TBL_TYPE_WC_FKB,
+	.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 = 1,
+		.cond_start_idx = 4,
 		.cond_nums = 0 },
-	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
-	.tbl_operand = BNXT_ULP_RF_IDX_ENCAP_PTR_0,
-	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
-	.mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_WR_GLB_REGFILE,
+	.tbl_operand = BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_KEY_ID_0,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
 	.byte_order = BNXT_ULP_BYTE_ORDER_LE,
-	.result_start_idx = 74,
-	.result_bit_size = 0,
-	.result_num_fields = 0,
-	.encap_num_fields = 11
+	.result_start_idx = 144,
+	.result_bit_size = 106,
+	.result_num_fields = 106
 	},
-	{ /* class_tid: 4, thor, table: int_full_act_record.vfr_egr0 */
-	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
-	.resource_type = TF_TBL_TYPE_FULL_ACT_RECORD,
-	.resource_sub_type =
-		BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_VFR_CFA_ACTION,
-	.direction = TF_DIR_TX,
+	{ /* class_tid: 1, thor, table: profile_tcam.gre_frag */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,
+	.resource_type = TF_TCAM_TBL_TYPE_PROF_TCAM,
+	.direction = TF_DIR_RX,
 	.execute_info = {
-		.cond_true_goto  = 0,
-		.cond_false_goto = 0,
+		.cond_true_goto  = 1,
+		.cond_false_goto = 1,
 		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_TRUE,
-		.cond_start_idx = 1,
+		.cond_start_idx = 4,
 		.cond_nums = 0 },
-	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
-	.tbl_operand = BNXT_ULP_RF_IDX_MAIN_ACTION_PTR,
+	.tbl_opcode = BNXT_ULP_TCAM_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_RF_IDX_PROFILE_TCAM_INDEX_0,
 	.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_NO,
 	.byte_order = BNXT_ULP_BYTE_ORDER_LE,
-	.result_start_idx = 85,
-	.result_bit_size = 128,
-	.result_num_fields = 17
-	}
-};
-
-struct bnxt_ulp_mapper_cond_info ulp_thor_class_cond_list[] = {
-	/* cond_execute: class_tid: 3, control.egr_1 */
-	{
-	.cond_opcode = BNXT_ULP_COND_OPC_CF_NOT_SET,
-	.cond_operand = BNXT_ULP_CF_IDX_VFR_MODE
-	}
-};
-
-struct bnxt_ulp_mapper_field_info ulp_thor_class_result_field_list[] = {
-	/* class_tid: 3, thor, table: int_full_act_record.ing_0 */
-	{
-	.description = "sp_rec_ptr",
-	.field_bit_size = 16,
-	.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
-	.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+	.key_start_idx = 326,
+	.blob_key_bit_size = 94,
+	.key_bit_size = 94,
+	.key_num_fields = 43,
+	.result_start_idx = 250,
+	.result_bit_size = 33,
+	.result_num_fields = 8,
+	.ident_start_idx = 4,
+	.ident_nums = 0
 	},
-	{
-	.description = "encap_ptr",
-	.field_bit_size = 16,
-	.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
-	.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+	{ /* class_tid: 1, thor, table: wm.gre_frag */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,
+	.resource_type = TF_TCAM_TBL_TYPE_WC_TCAM_HIGH,
+	.direction = TF_DIR_RX,
+	.execute_info = {
+		.cond_true_goto  = 29,
+		.cond_false_goto = 1,
+		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
+		.cond_start_idx = 4,
+		.cond_nums = 1 },
+	.tbl_opcode = BNXT_ULP_TCAM_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_RF_IDX_WC_TCAM_INDEX_0,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
+	.mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
+	.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_YES,
+	.shared_session = BNXT_ULP_SHARED_SESSION_YES,
+	.byte_order = BNXT_ULP_BYTE_ORDER_BE,
+	.key_start_idx = 369,
+	.blob_key_bit_size = 0,
+	.key_bit_size = 0,
+	.key_num_fields = 114,
+	.result_start_idx = 258,
+	.result_bit_size = 38,
+	.result_num_fields = 5
 	},
-	{
-	.description = "mod_rec_ptr",
-	.field_bit_size = 16,
-	.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
-	.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+	{ /* class_tid: 1, thor, table: wm.gre_frag_low */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,
+	.resource_type = TF_TCAM_TBL_TYPE_WC_TCAM_LOW,
+	.direction = TF_DIR_RX,
+	.execute_info = {
+		.cond_true_goto  = 28,
+		.cond_false_goto = 1,
+		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_TRUE,
+		.cond_start_idx = 5,
+		.cond_nums = 0 },
+	.tbl_opcode = BNXT_ULP_TCAM_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_RF_IDX_WC_TCAM_INDEX_0,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
+	.mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
+	.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_YES,
+	.shared_session = BNXT_ULP_SHARED_SESSION_YES,
+	.byte_order = BNXT_ULP_BYTE_ORDER_BE,
+	.key_start_idx = 483,
+	.blob_key_bit_size = 0,
+	.key_bit_size = 0,
+	.key_num_fields = 114,
+	.result_start_idx = 263,
+	.result_bit_size = 38,
+	.result_num_fields = 5
 	},
-	{
-	.description = "rsvd1",
-	.field_bit_size = 16,
-	.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
-	.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+	{ /* class_tid: 1, thor, table: mac_addr_cache.non_gre_rd */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_GENERIC_TABLE,
+	.resource_sub_type =
+		BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_MAC_ADDR_CACHE,
+	.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 = 5,
+		.cond_nums = 0 },
+	.tbl_opcode = BNXT_ULP_GENERIC_TBL_OPC_READ,
+	.gen_tbl_lkup_type = BNXT_ULP_GENERIC_TBL_LKUP_TYPE_HASH,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE,
+	.key_start_idx = 597,
+	.blob_key_bit_size = 73,
+	.key_bit_size = 73,
+	.key_num_fields = 5,
+	.ident_start_idx = 4,
+	.ident_nums = 0
 	},
-	{
-	.description = "rsvd0",
-	.field_bit_size = 8,
-	.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
-	.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+	{ /* class_tid: 1, thor, table: control.non_gre_mac */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_CTRL_TABLE,
+	.direction = TF_DIR_RX,
+	.execute_info = {
+		.cond_true_goto  = 1,
+		.cond_false_goto = 3,
+		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
+		.cond_start_idx = 5,
+		.cond_nums = 1 },
+	.fdb_opcode = BNXT_ULP_FDB_OPC_ALLOC_RID_REGFILE,
+	.fdb_operand = BNXT_ULP_RF_IDX_RID,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE
 	},
-	{
-	.description = "decap_func",
-	.field_bit_size = 5,
-	.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
-	.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+	{ /* class_tid: 1, thor, table: l2_cntxt_tcam.0 */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,
+	.resource_type = TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_HIGH,
+	.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 = 6,
+		.cond_nums = 0 },
+	.tbl_opcode = BNXT_ULP_TCAM_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_RF_IDX_L2_CNTXT_TCAM_INDEX_0,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_RID_REGFILE,
+	.fdb_operand = BNXT_ULP_RF_IDX_RID,
+	.pri_opcode  = BNXT_ULP_PRI_OPC_CONST,
+	.pri_operand = 0,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE,
+	.key_start_idx = 602,
+	.blob_key_bit_size = 213,
+	.key_bit_size = 213,
+	.key_num_fields = 21,
+	.result_start_idx = 268,
+	.result_bit_size = 43,
+	.result_num_fields = 6,
+	.ident_start_idx = 4,
+	.ident_nums = 0
 	},
-	{
-	.description = "meter",
-	.field_bit_size = 10,
-	.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
-	.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+	{ /* class_tid: 1, thor, table: mac_addr_cache.wr */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_GENERIC_TABLE,
+	.resource_sub_type =
+		BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_MAC_ADDR_CACHE,
+	.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 = 6,
+		.cond_nums = 0 },
+	.tbl_opcode = BNXT_ULP_GENERIC_TBL_OPC_WRITE,
+	.gen_tbl_lkup_type = BNXT_ULP_GENERIC_TBL_LKUP_TYPE_HASH,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE,
+	.key_start_idx = 623,
+	.blob_key_bit_size = 73,
+	.key_bit_size = 73,
+	.key_num_fields = 5,
+	.result_start_idx = 274,
+	.result_bit_size = 62,
+	.result_num_fields = 4
 	},
-	{
-	.description = "stats_op",
-	.field_bit_size = 1,
-	.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
-	.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+	{ /* class_tid: 1, thor, table: control.icmpv4_test */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_CTRL_TABLE,
+	.direction = TF_DIR_RX,
+	.execute_info = {
+		.cond_true_goto  = 1,
+		.cond_false_goto = 8,
+		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
+		.cond_start_idx = 6,
+		.cond_nums = 2 },
+	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE
 	},
-	{
-	.description = "stats_ptr",
+	{ /* class_tid: 1, thor, table: profile_tcam_cache.icmpv4_rd */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_GENERIC_TABLE,
+	.resource_sub_type =
+		BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_PROFILE_TCAM,
+	.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 = 8,
+		.cond_nums = 0 },
+	.tbl_opcode = BNXT_ULP_GENERIC_TBL_OPC_READ,
+	.gen_tbl_lkup_type = BNXT_ULP_GENERIC_TBL_LKUP_TYPE_INDEX,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE,
+	.key_start_idx = 628,
+	.blob_key_bit_size = 14,
+	.key_bit_size = 14,
+	.key_num_fields = 3,
+	.ident_start_idx = 4,
+	.ident_nums = 0
+	},
+	{ /* class_tid: 1, thor, table: control.icmpv4 */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_CTRL_TABLE,
+	.direction = TF_DIR_RX,
+	.execute_info = {
+		.cond_true_goto  = 1,
+		.cond_false_goto = 4,
+		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
+		.cond_start_idx = 8,
+		.cond_nums = 1 },
+	.fdb_opcode = BNXT_ULP_FDB_OPC_ALLOC_RID_REGFILE,
+	.fdb_operand = BNXT_ULP_RF_IDX_RID,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE
+	},
+	{ /* class_tid: 1, thor, table: fkb_select.icmpv4 */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
+	.resource_type = TF_TBL_TYPE_WC_FKB,
+	.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 = 9,
+		.cond_nums = 0 },
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_WR_GLB_REGFILE,
+	.tbl_operand = BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_KEY_ID_0,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE,
+	.result_start_idx = 278,
+	.result_bit_size = 106,
+	.result_num_fields = 106
+	},
+	{ /* class_tid: 1, thor, table: profile_tcam.icmpv4 */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,
+	.resource_type = TF_TCAM_TBL_TYPE_PROF_TCAM,
+	.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 = 9,
+		.cond_nums = 0 },
+	.tbl_opcode = BNXT_ULP_TCAM_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_RF_IDX_PROFILE_TCAM_INDEX_0,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_RID_REGFILE,
+	.fdb_operand = BNXT_ULP_RF_IDX_RID,
+	.pri_opcode  = BNXT_ULP_PRI_OPC_CONST,
+	.pri_operand = 0,
+	.mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE,
+	.key_start_idx = 631,
+	.blob_key_bit_size = 94,
+	.key_bit_size = 94,
+	.key_num_fields = 43,
+	.result_start_idx = 384,
+	.result_bit_size = 33,
+	.result_num_fields = 8,
+	.ident_start_idx = 4,
+	.ident_nums = 1
+	},
+	{ /* class_tid: 1, thor, table: profile_tcam_cache.icmpv4_wr */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_GENERIC_TABLE,
+	.resource_sub_type =
+		BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_PROFILE_TCAM,
+	.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 = 9,
+		.cond_nums = 0 },
+	.tbl_opcode = BNXT_ULP_GENERIC_TBL_OPC_WRITE,
+	.gen_tbl_lkup_type = BNXT_ULP_GENERIC_TBL_LKUP_TYPE_INDEX,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE,
+	.key_start_idx = 674,
+	.blob_key_bit_size = 14,
+	.key_bit_size = 14,
+	.key_num_fields = 3,
+	.result_start_idx = 392,
+	.result_bit_size = 82,
+	.result_num_fields = 7
+	},
+	{ /* class_tid: 1, thor, table: wm.icmpv4 */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,
+	.resource_type = TF_TCAM_TBL_TYPE_WC_TCAM_HIGH,
+	.direction = TF_DIR_RX,
+	.execute_info = {
+		.cond_true_goto  = 17,
+		.cond_false_goto = 1,
+		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
+		.cond_start_idx = 9,
+		.cond_nums = 1 },
+	.tbl_opcode = BNXT_ULP_TCAM_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_RF_IDX_WC_TCAM_INDEX_0,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
+	.mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
+	.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_YES,
+	.shared_session = BNXT_ULP_SHARED_SESSION_YES,
+	.byte_order = BNXT_ULP_BYTE_ORDER_BE,
+	.key_start_idx = 677,
+	.blob_key_bit_size = 0,
+	.key_bit_size = 0,
+	.key_num_fields = 114,
+	.result_start_idx = 399,
+	.result_bit_size = 38,
+	.result_num_fields = 5
+	},
+	{ /* class_tid: 1, thor, table: wm.icmpv4_low */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,
+	.resource_type = TF_TCAM_TBL_TYPE_WC_TCAM_LOW,
+	.direction = TF_DIR_RX,
+	.execute_info = {
+		.cond_true_goto  = 16,
+		.cond_false_goto = 1,
+		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_TRUE,
+		.cond_start_idx = 10,
+		.cond_nums = 0 },
+	.tbl_opcode = BNXT_ULP_TCAM_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_RF_IDX_WC_TCAM_INDEX_0,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
+	.mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
+	.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_YES,
+	.shared_session = BNXT_ULP_SHARED_SESSION_YES,
+	.byte_order = BNXT_ULP_BYTE_ORDER_BE,
+	.key_start_idx = 791,
+	.blob_key_bit_size = 0,
+	.key_bit_size = 0,
+	.key_num_fields = 114,
+	.result_start_idx = 404,
+	.result_bit_size = 38,
+	.result_num_fields = 5
+	},
+	{ /* class_tid: 1, thor, table: control.icmpv6_test */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_CTRL_TABLE,
+	.direction = TF_DIR_RX,
+	.execute_info = {
+		.cond_true_goto  = 1,
+		.cond_false_goto = 8,
+		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
+		.cond_start_idx = 10,
+		.cond_nums = 2 },
+	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE
+	},
+	{ /* class_tid: 1, thor, table: profile_tcam_cache.icmpv6_rd */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_GENERIC_TABLE,
+	.resource_sub_type =
+		BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_PROFILE_TCAM,
+	.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 = 12,
+		.cond_nums = 0 },
+	.tbl_opcode = BNXT_ULP_GENERIC_TBL_OPC_READ,
+	.gen_tbl_lkup_type = BNXT_ULP_GENERIC_TBL_LKUP_TYPE_INDEX,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE,
+	.key_start_idx = 905,
+	.blob_key_bit_size = 14,
+	.key_bit_size = 14,
+	.key_num_fields = 3,
+	.ident_start_idx = 5,
+	.ident_nums = 0
+	},
+	{ /* class_tid: 1, thor, table: control.icmpv6 */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_CTRL_TABLE,
+	.direction = TF_DIR_RX,
+	.execute_info = {
+		.cond_true_goto  = 1,
+		.cond_false_goto = 4,
+		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
+		.cond_start_idx = 12,
+		.cond_nums = 1 },
+	.fdb_opcode = BNXT_ULP_FDB_OPC_ALLOC_RID_REGFILE,
+	.fdb_operand = BNXT_ULP_RF_IDX_RID,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE
+	},
+	{ /* class_tid: 1, thor, table: fkb_select.icmpv6 */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
+	.resource_type = TF_TBL_TYPE_WC_FKB,
+	.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 = 13,
+		.cond_nums = 0 },
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_WR_GLB_REGFILE,
+	.tbl_operand = BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_KEY_ID_0,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE,
+	.result_start_idx = 409,
+	.result_bit_size = 106,
+	.result_num_fields = 106
+	},
+	{ /* class_tid: 1, thor, table: profile_tcam.icmpv6 */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,
+	.resource_type = TF_TCAM_TBL_TYPE_PROF_TCAM,
+	.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 = 13,
+		.cond_nums = 0 },
+	.tbl_opcode = BNXT_ULP_TCAM_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_RF_IDX_PROFILE_TCAM_INDEX_0,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_RID_REGFILE,
+	.fdb_operand = BNXT_ULP_RF_IDX_RID,
+	.pri_opcode  = BNXT_ULP_PRI_OPC_CONST,
+	.pri_operand = 0,
+	.mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE,
+	.key_start_idx = 908,
+	.blob_key_bit_size = 94,
+	.key_bit_size = 94,
+	.key_num_fields = 43,
+	.result_start_idx = 515,
+	.result_bit_size = 33,
+	.result_num_fields = 8,
+	.ident_start_idx = 5,
+	.ident_nums = 1
+	},
+	{ /* class_tid: 1, thor, table: profile_tcam_cache.icmpv6_wr */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_GENERIC_TABLE,
+	.resource_sub_type =
+		BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_PROFILE_TCAM,
+	.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 = 13,
+		.cond_nums = 0 },
+	.tbl_opcode = BNXT_ULP_GENERIC_TBL_OPC_WRITE,
+	.gen_tbl_lkup_type = BNXT_ULP_GENERIC_TBL_LKUP_TYPE_INDEX,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE,
+	.key_start_idx = 951,
+	.blob_key_bit_size = 14,
+	.key_bit_size = 14,
+	.key_num_fields = 3,
+	.result_start_idx = 523,
+	.result_bit_size = 82,
+	.result_num_fields = 7
+	},
+	{ /* class_tid: 1, thor, table: wm.icmpv6 */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,
+	.resource_type = TF_TCAM_TBL_TYPE_WC_TCAM_HIGH,
+	.direction = TF_DIR_RX,
+	.execute_info = {
+		.cond_true_goto  = 9,
+		.cond_false_goto = 1,
+		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
+		.cond_start_idx = 13,
+		.cond_nums = 1 },
+	.tbl_opcode = BNXT_ULP_TCAM_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_RF_IDX_WC_TCAM_INDEX_0,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
+	.mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
+	.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_YES,
+	.shared_session = BNXT_ULP_SHARED_SESSION_YES,
+	.byte_order = BNXT_ULP_BYTE_ORDER_BE,
+	.key_start_idx = 954,
+	.blob_key_bit_size = 0,
+	.key_bit_size = 0,
+	.key_num_fields = 114,
+	.result_start_idx = 530,
+	.result_bit_size = 38,
+	.result_num_fields = 5
+	},
+	{ /* class_tid: 1, thor, table: wm.icmpv6_low */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,
+	.resource_type = TF_TCAM_TBL_TYPE_WC_TCAM_LOW,
+	.direction = TF_DIR_RX,
+	.execute_info = {
+		.cond_true_goto  = 8,
+		.cond_false_goto = 1,
+		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_TRUE,
+		.cond_start_idx = 14,
+		.cond_nums = 0 },
+	.tbl_opcode = BNXT_ULP_TCAM_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_RF_IDX_WC_TCAM_INDEX_0,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
+	.mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
+	.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_YES,
+	.shared_session = BNXT_ULP_SHARED_SESSION_YES,
+	.byte_order = BNXT_ULP_BYTE_ORDER_BE,
+	.key_start_idx = 1068,
+	.blob_key_bit_size = 0,
+	.key_bit_size = 0,
+	.key_num_fields = 114,
+	.result_start_idx = 535,
+	.result_bit_size = 38,
+	.result_num_fields = 5
+	},
+	{ /* class_tid: 1, thor, table: profile_tcam_cache.l3_l4_rd */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_GENERIC_TABLE,
+	.resource_sub_type =
+		BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_PROFILE_TCAM,
+	.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 = 14,
+		.cond_nums = 0 },
+	.tbl_opcode = BNXT_ULP_GENERIC_TBL_OPC_READ,
+	.gen_tbl_lkup_type = BNXT_ULP_GENERIC_TBL_LKUP_TYPE_INDEX,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE,
+	.key_start_idx = 1182,
+	.blob_key_bit_size = 14,
+	.key_bit_size = 14,
+	.key_num_fields = 3,
+	.ident_start_idx = 6,
+	.ident_nums = 0
+	},
+	{ /* class_tid: 1, thor, table: control.l3_l4 */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_CTRL_TABLE,
+	.direction = TF_DIR_RX,
+	.execute_info = {
+		.cond_true_goto  = 1,
+		.cond_false_goto = 4,
+		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
+		.cond_start_idx = 14,
+		.cond_nums = 1 },
+	.fdb_opcode = BNXT_ULP_FDB_OPC_ALLOC_RID_REGFILE,
+	.fdb_operand = BNXT_ULP_RF_IDX_RID,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE
+	},
+	{ /* class_tid: 1, thor, table: fkb_select.l3_l4_wm */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
+	.resource_type = TF_TBL_TYPE_WC_FKB,
+	.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 = 15,
+		.cond_nums = 0 },
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_WR_GLB_REGFILE,
+	.tbl_operand = BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_KEY_ID_0,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE,
+	.result_start_idx = 540,
+	.result_bit_size = 106,
+	.result_num_fields = 106
+	},
+	{ /* class_tid: 1, thor, table: profile_tcam.l3_l4 */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,
+	.resource_type = TF_TCAM_TBL_TYPE_PROF_TCAM,
+	.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 = 15,
+		.cond_nums = 0 },
+	.tbl_opcode = BNXT_ULP_TCAM_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_RF_IDX_PROFILE_TCAM_INDEX_0,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_RID_REGFILE,
+	.fdb_operand = BNXT_ULP_RF_IDX_RID,
+	.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_NO,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE,
+	.key_start_idx = 1185,
+	.blob_key_bit_size = 94,
+	.key_bit_size = 94,
+	.key_num_fields = 43,
+	.result_start_idx = 646,
+	.result_bit_size = 33,
+	.result_num_fields = 8,
+	.ident_start_idx = 6,
+	.ident_nums = 0
+	},
+	{ /* class_tid: 1, thor, table: profile_tcam_cache.wr */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_GENERIC_TABLE,
+	.resource_type = TF_TCAM_TBL_TYPE_PROF_TCAM,
+	.resource_sub_type =
+		BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_PROFILE_TCAM,
+	.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 = 15,
+		.cond_nums = 0 },
+	.tbl_opcode = BNXT_ULP_GENERIC_TBL_OPC_WRITE,
+	.gen_tbl_lkup_type = BNXT_ULP_GENERIC_TBL_LKUP_TYPE_INDEX,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE,
+	.key_start_idx = 1228,
+	.blob_key_bit_size = 14,
+	.key_bit_size = 14,
+	.key_num_fields = 3,
+	.result_start_idx = 654,
+	.result_bit_size = 82,
+	.result_num_fields = 7
+	},
+	{ /* class_tid: 1, thor, table: wm.l4 */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,
+	.resource_type = TF_TCAM_TBL_TYPE_WC_TCAM_HIGH,
+	.direction = TF_DIR_RX,
+	.execute_info = {
+		.cond_true_goto  = 2,
+		.cond_false_goto = 1,
+		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
+		.cond_start_idx = 15,
+		.cond_nums = 1 },
+	.tbl_opcode = BNXT_ULP_TCAM_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_RF_IDX_WC_TCAM_INDEX_0,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
+	.mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
+	.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_YES,
+	.shared_session = BNXT_ULP_SHARED_SESSION_YES,
+	.byte_order = BNXT_ULP_BYTE_ORDER_BE,
+	.key_start_idx = 1231,
+	.blob_key_bit_size = 0,
+	.key_bit_size = 0,
+	.key_num_fields = 114,
+	.result_start_idx = 661,
+	.result_bit_size = 38,
+	.result_num_fields = 5
+	},
+	{ /* class_tid: 1, thor, table: wm.l4_low */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,
+	.resource_type = TF_TCAM_TBL_TYPE_WC_TCAM_LOW,
+	.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 = 16,
+		.cond_nums = 0 },
+	.tbl_opcode = BNXT_ULP_TCAM_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_RF_IDX_WC_TCAM_INDEX_0,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
+	.mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
+	.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_YES,
+	.shared_session = BNXT_ULP_SHARED_SESSION_YES,
+	.byte_order = BNXT_ULP_BYTE_ORDER_BE,
+	.key_start_idx = 1345,
+	.blob_key_bit_size = 0,
+	.key_bit_size = 0,
+	.key_num_fields = 114,
+	.result_start_idx = 666,
+	.result_bit_size = 38,
+	.result_num_fields = 5
+	},
+	{ /* class_tid: 1, thor, table: control.check_rss_action */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_CTRL_TABLE,
+	.direction = TF_DIR_RX,
+	.execute_info = {
+		.cond_true_goto  = 1,
+		.cond_false_goto = 0,
+		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
+		.cond_start_idx = 16,
+		.cond_nums = 1 },
+	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE
+	},
+	{ /* class_tid: 1, thor, table: control.rss_config */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_CTRL_TABLE,
+	.direction = TF_DIR_RX,
+	.execute_info = {
+		.cond_true_goto  = 0,
+		.cond_false_goto = 0,
+		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_TRUE,
+		.cond_start_idx = 17,
+		.cond_nums = 0 },
+	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
+	.func_info = {
+		.func_opc = BNXT_ULP_FUNC_OPC_RSS_CONFIG,
+		.func_dst_opr = BNXT_ULP_RF_IDX_CC },
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE
+	},
+	{ /* class_tid: 2, thor, table: port_table.rd */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_GENERIC_TABLE,
+	.resource_sub_type =
+		BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_PORT_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 = 17,
+		.cond_nums = 0 },
+	.tbl_opcode = BNXT_ULP_GENERIC_TBL_OPC_READ,
+	.gen_tbl_lkup_type = BNXT_ULP_GENERIC_TBL_LKUP_TYPE_INDEX,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE,
+	.key_start_idx = 1459,
+	.blob_key_bit_size = 10,
+	.key_bit_size = 10,
+	.key_num_fields = 1,
+	.ident_start_idx = 6,
+	.ident_nums = 3
+	},
+	{ /* class_tid: 2, thor, table: mac_addr_cache.rd */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_GENERIC_TABLE,
+	.resource_sub_type =
+		BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_MAC_ADDR_CACHE,
+	.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 = 17,
+		.cond_nums = 0 },
+	.tbl_opcode = BNXT_ULP_GENERIC_TBL_OPC_READ,
+	.gen_tbl_lkup_type = BNXT_ULP_GENERIC_TBL_LKUP_TYPE_HASH,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE,
+	.key_start_idx = 1460,
+	.blob_key_bit_size = 73,
+	.key_bit_size = 73,
+	.key_num_fields = 5,
+	.ident_start_idx = 9,
+	.ident_nums = 0
+	},
+	{ /* class_tid: 2, thor, table: control.0 */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_CTRL_TABLE,
+	.direction = TF_DIR_RX,
+	.execute_info = {
+		.cond_true_goto  = 1,
+		.cond_false_goto = 3,
+		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
+		.cond_start_idx = 17,
+		.cond_nums = 1 },
+	.fdb_opcode = BNXT_ULP_FDB_OPC_ALLOC_RID_REGFILE,
+	.fdb_operand = BNXT_ULP_RF_IDX_RID,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE
+	},
+	{ /* class_tid: 2, thor, table: l2_cntxt_tcam.0 */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,
+	.resource_type = TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_HIGH,
+	.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 = 18,
+		.cond_nums = 0 },
+	.tbl_opcode = BNXT_ULP_TCAM_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_RF_IDX_L2_CNTXT_TCAM_INDEX_0,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_RID_REGFILE,
+	.fdb_operand = BNXT_ULP_RF_IDX_RID,
+	.pri_opcode  = BNXT_ULP_PRI_OPC_CONST,
+	.pri_operand = 0,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE,
+	.key_start_idx = 1465,
+	.blob_key_bit_size = 213,
+	.key_bit_size = 213,
+	.key_num_fields = 21,
+	.result_start_idx = 671,
+	.result_bit_size = 43,
+	.result_num_fields = 6,
+	.ident_start_idx = 9,
+	.ident_nums = 1
+	},
+	{ /* class_tid: 2, thor, table: mac_addr_cache.wr */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_GENERIC_TABLE,
+	.resource_sub_type =
+		BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_MAC_ADDR_CACHE,
+	.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 = 18,
+		.cond_nums = 0 },
+	.tbl_opcode = BNXT_ULP_GENERIC_TBL_OPC_WRITE,
+	.gen_tbl_lkup_type = BNXT_ULP_GENERIC_TBL_LKUP_TYPE_HASH,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE,
+	.key_start_idx = 1486,
+	.blob_key_bit_size = 73,
+	.key_bit_size = 73,
+	.key_num_fields = 5,
+	.result_start_idx = 677,
+	.result_bit_size = 62,
+	.result_num_fields = 4
+	},
+	{ /* class_tid: 2, thor, table: profile_tcam_cache.l3_l4_rd */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_GENERIC_TABLE,
+	.resource_sub_type =
+		BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_PROFILE_TCAM,
+	.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 = 18,
+		.cond_nums = 0 },
+	.tbl_opcode = BNXT_ULP_GENERIC_TBL_OPC_READ,
+	.gen_tbl_lkup_type = BNXT_ULP_GENERIC_TBL_LKUP_TYPE_INDEX,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE,
+	.key_start_idx = 1491,
+	.blob_key_bit_size = 14,
+	.key_bit_size = 14,
+	.key_num_fields = 3,
+	.ident_start_idx = 10,
+	.ident_nums = 0
+	},
+	{ /* class_tid: 2, thor, table: control.l3_l4 */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_CTRL_TABLE,
+	.direction = TF_DIR_RX,
+	.execute_info = {
+		.cond_true_goto  = 1,
+		.cond_false_goto = 4,
+		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
+		.cond_start_idx = 18,
+		.cond_nums = 1 },
+	.fdb_opcode = BNXT_ULP_FDB_OPC_ALLOC_RID_REGFILE,
+	.fdb_operand = BNXT_ULP_RF_IDX_RID,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE
+	},
+	{ /* class_tid: 2, thor, table: fkb_select.l3_l4_wm */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
+	.resource_type = TF_TBL_TYPE_WC_FKB,
+	.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 = 19,
+		.cond_nums = 0 },
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_WR_GLB_REGFILE,
+	.tbl_operand = BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_KEY_ID_0,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE,
+	.result_start_idx = 681,
+	.result_bit_size = 106,
+	.result_num_fields = 106
+	},
+	{ /* class_tid: 2, thor, table: profile_tcam.l3_l4 */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,
+	.resource_type = TF_TCAM_TBL_TYPE_PROF_TCAM,
+	.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 = 19,
+		.cond_nums = 0 },
+	.tbl_opcode = BNXT_ULP_TCAM_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_RF_IDX_PROFILE_TCAM_INDEX_0,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_RID_REGFILE,
+	.fdb_operand = BNXT_ULP_RF_IDX_RID,
+	.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_NO,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE,
+	.key_start_idx = 1494,
+	.blob_key_bit_size = 94,
+	.key_bit_size = 94,
+	.key_num_fields = 43,
+	.result_start_idx = 787,
+	.result_bit_size = 33,
+	.result_num_fields = 8,
+	.ident_start_idx = 10,
+	.ident_nums = 0
+	},
+	{ /* class_tid: 2, thor, table: profile_tcam_cache.wr */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_GENERIC_TABLE,
+	.resource_type = TF_TCAM_TBL_TYPE_PROF_TCAM,
+	.resource_sub_type =
+		BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_PROFILE_TCAM,
+	.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 = 19,
+		.cond_nums = 0 },
+	.tbl_opcode = BNXT_ULP_GENERIC_TBL_OPC_WRITE,
+	.gen_tbl_lkup_type = BNXT_ULP_GENERIC_TBL_LKUP_TYPE_INDEX,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE,
+	.key_start_idx = 1537,
+	.blob_key_bit_size = 14,
+	.key_bit_size = 14,
+	.key_num_fields = 3,
+	.result_start_idx = 795,
+	.result_bit_size = 82,
+	.result_num_fields = 7
+	},
+	{ /* class_tid: 2, thor, table: wm.l4 */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,
+	.resource_type = TF_TCAM_TBL_TYPE_WC_TCAM,
+	.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 = 19,
+		.cond_nums = 0 },
+	.tbl_opcode = BNXT_ULP_TCAM_TBL_OPC_ALLOC_WR_REGFILE,
+	.tbl_operand = BNXT_ULP_RF_IDX_WC_TCAM_INDEX_0,
+	.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,
+	.byte_order = BNXT_ULP_BYTE_ORDER_BE,
+	.key_start_idx = 1540,
+	.blob_key_bit_size = 0,
+	.key_bit_size = 0,
+	.key_num_fields = 114,
+	.result_start_idx = 802,
+	.result_bit_size = 38,
+	.result_num_fields = 5
+	},
+	{ /* class_tid: 2, thor, table: control.check_rss_action */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_CTRL_TABLE,
+	.direction = TF_DIR_RX,
+	.execute_info = {
+		.cond_true_goto  = 1,
+		.cond_false_goto = 0,
+		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
+		.cond_start_idx = 19,
+		.cond_nums = 1 },
+	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE
+	},
+	{ /* class_tid: 2, thor, table: control.rss_config */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_CTRL_TABLE,
+	.direction = TF_DIR_RX,
+	.execute_info = {
+		.cond_true_goto  = 0,
+		.cond_false_goto = 0,
+		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_TRUE,
+		.cond_start_idx = 20,
+		.cond_nums = 0 },
+	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
+	.func_info = {
+		.func_opc = BNXT_ULP_FUNC_OPC_RSS_CONFIG,
+		.func_dst_opr = BNXT_ULP_RF_IDX_CC },
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE
+	},
+	{ /* class_tid: 3, thor, table: control.0 */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_CTRL_TABLE,
+	.direction = TF_DIR_RX,
+	.execute_info = {
+		.cond_true_goto  = 0,
+		.cond_false_goto = 0,
+		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_TRUE,
+		.cond_start_idx = 20,
+		.cond_nums = 0 },
+	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE
+	},
+	{ /* class_tid: 4, thor, table: control.get_parent_mac_addr */
+	.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 = 20,
+		.cond_nums = 0 },
+	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
+	.func_info = {
+		.func_opc = BNXT_ULP_FUNC_OPC_GET_PARENT_MAC_ADDR,
+		.func_dst_opr = BNXT_ULP_RF_IDX_DRV_FUNC_PARENT_MAC },
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE
+	},
+	{ /* class_tid: 4, thor, table: control.0 */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_CTRL_TABLE,
+	.direction = TF_DIR_RX,
+	.execute_info = {
+		.cond_true_goto  = 1,
+		.cond_false_goto = 3,
+		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
+		.cond_start_idx = 20,
+		.cond_nums = 1 },
+	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
+	.func_info = {
+		.func_opc = BNXT_ULP_FUNC_OPC_EQ,
+		.func_src1 = BNXT_ULP_FUNC_SRC_COMP_FIELD,
+		.func_opr1 = BNXT_ULP_CF_IDX_PHY_PORT_VPORT,
+		.func_src2 = BNXT_ULP_FUNC_SRC_CONST,
+		.func_opr2 = 1,
+		.func_dst_opr = BNXT_ULP_RF_IDX_CC },
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE
+	},
+	{ /* class_tid: 4, thor, table: int_full_act_record.0 */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
+	.resource_type = TF_TBL_TYPE_FULL_ACT_RECORD,
+	.resource_sub_type =
+		BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_NORMAL,
+	.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 = 21,
+		.cond_nums = 0 },
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_WR_GLB_REGFILE,
+	.tbl_operand = BNXT_ULP_GLB_RF_IDX_APP_GLB_AREC_PTR_0,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
+	.mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
+	.shared_session = BNXT_ULP_SHARED_SESSION_YES,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE,
+	.result_start_idx = 807,
+	.result_bit_size = 128,
+	.result_num_fields = 17
+	},
+	{ /* class_tid: 4, thor, table: port_table.wr_0 */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_GENERIC_TABLE,
+	.resource_sub_type =
+		BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_PORT_TABLE,
+	.direction = TF_DIR_RX,
+	.execute_info = {
+		.cond_true_goto  = 3,
+		.cond_false_goto = 1,
+		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_TRUE,
+		.cond_start_idx = 21,
+		.cond_nums = 0 },
+	.tbl_opcode = BNXT_ULP_GENERIC_TBL_OPC_WRITE,
+	.gen_tbl_lkup_type = BNXT_ULP_GENERIC_TBL_LKUP_TYPE_INDEX,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE,
+	.key_start_idx = 1654,
+	.blob_key_bit_size = 10,
+	.key_bit_size = 10,
+	.key_num_fields = 1,
+	.result_start_idx = 824,
+	.result_bit_size = 152,
+	.result_num_fields = 5
+	},
+	{ /* class_tid: 4, thor, table: int_full_act_record.1 */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
+	.resource_type = TF_TBL_TYPE_FULL_ACT_RECORD,
+	.resource_sub_type =
+		BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_NORMAL,
+	.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 = 21,
+		.cond_nums = 0 },
+	.tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_WR_GLB_REGFILE,
+	.tbl_operand = BNXT_ULP_GLB_RF_IDX_APP_GLB_AREC_PTR_1,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
+	.mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
+	.shared_session = BNXT_ULP_SHARED_SESSION_YES,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE,
+	.result_start_idx = 829,
+	.result_bit_size = 128,
+	.result_num_fields = 17
+	},
+	{ /* class_tid: 4, thor, table: port_table.wr_1 */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_GENERIC_TABLE,
+	.resource_sub_type =
+		BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_PORT_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 = 21,
+		.cond_nums = 0 },
+	.tbl_opcode = BNXT_ULP_GENERIC_TBL_OPC_WRITE,
+	.gen_tbl_lkup_type = BNXT_ULP_GENERIC_TBL_LKUP_TYPE_INDEX,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE,
+	.key_start_idx = 1655,
+	.blob_key_bit_size = 10,
+	.key_bit_size = 10,
+	.key_num_fields = 1,
+	.result_start_idx = 846,
+	.result_bit_size = 152,
+	.result_num_fields = 5
+	},
+	{ /* class_tid: 4, thor, table: port_table.rd */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_GENERIC_TABLE,
+	.resource_sub_type =
+		BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_PORT_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 = 21,
+		.cond_nums = 0 },
+	.tbl_opcode = BNXT_ULP_GENERIC_TBL_OPC_READ,
+	.gen_tbl_lkup_type = BNXT_ULP_GENERIC_TBL_LKUP_TYPE_INDEX,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE,
+	.key_start_idx = 1656,
+	.blob_key_bit_size = 10,
+	.key_bit_size = 10,
+	.key_num_fields = 1,
+	.ident_start_idx = 10,
+	.ident_nums = 1
+	},
+	{ /* class_tid: 4, thor, table: parif_def_arec_ptr.ing_0 */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_IF_TABLE,
+	.resource_type = TF_IF_TBL_TYPE_PROF_PARIF_DFLT_ACT_REC_PTR,
+	.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 = 21,
+		.cond_nums = 0 },
+	.tbl_opcode = BNXT_ULP_IF_TBL_OPC_WR_COMP_FIELD,
+	.tbl_operand = BNXT_ULP_CF_IDX_PHY_PORT_PARIF,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE,
+	.result_start_idx = 851,
+	.result_bit_size = 32,
+	.result_num_fields = 1
+	},
+	{ /* class_tid: 4, thor, table: parif_def_err_arec_ptr.ing_0 */
+	.resource_func = BNXT_ULP_RESOURCE_FUNC_IF_TABLE,
+	.resource_type = TF_IF_TBL_TYPE_PROF_PARIF_ERR_ACT_REC_PTR,
+	.direction = TF_DIR_RX,
+	.execute_info = {
+		.cond_true_goto  = 0,
+		.cond_false_goto = 0,
+		.cond_list_opcode = BNXT_ULP_COND_LIST_OPC_TRUE,
+		.cond_start_idx = 21,
+		.cond_nums = 0 },
+	.tbl_opcode = BNXT_ULP_IF_TBL_OPC_WR_COMP_FIELD,
+	.tbl_operand = BNXT_ULP_CF_IDX_PHY_PORT_PARIF,
+	.fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
+	.byte_order = BNXT_ULP_BYTE_ORDER_LE,
+	.result_start_idx = 852,
+	.result_bit_size = 32,
+	.result_num_fields = 1
+	}
+};
+
+struct bnxt_ulp_mapper_cond_info ulp_thor_class_cond_list[] = {
+	/* cond_execute: class_tid: 1, control.check_gre */
+	{
+	.cond_opcode = BNXT_ULP_COND_OPC_HDR_BIT_IS_SET,
+	.cond_operand = BNXT_ULP_HDR_BIT_T_GRE
+	},
+	/* cond_execute: class_tid: 1, control.gre_hit */
+	{
+	.cond_opcode = BNXT_ULP_COND_OPC_RF_IS_SET,
+	.cond_operand = BNXT_ULP_RF_IDX_GENERIC_TBL_MISS
+	},
+	/* cond_execute: class_tid: 1, wm.gre */
+	{
+	.cond_opcode = BNXT_ULP_COND_OPC_CF_IS_SET,
+	.cond_operand = BNXT_ULP_CF_IDX_WC_IS_HA_HIGH_REG
+	},
+	/* cond_execute: class_tid: 1, control.gre_frag_mac_hit */
+	{
+	.cond_opcode = BNXT_ULP_COND_OPC_RF_IS_SET,
+	.cond_operand = BNXT_ULP_RF_IDX_GENERIC_TBL_MISS
+	},
+	/* cond_execute: class_tid: 1, wm.gre_frag */
+	{
+	.cond_opcode = BNXT_ULP_COND_OPC_CF_IS_SET,
+	.cond_operand = BNXT_ULP_CF_IDX_WC_IS_HA_HIGH_REG
+	},
+	/* cond_execute: class_tid: 1, control.non_gre_mac */
+	{
+	.cond_opcode = BNXT_ULP_COND_OPC_RF_IS_SET,
+	.cond_operand = BNXT_ULP_RF_IDX_GENERIC_TBL_MISS
+	},
+	/* cond_execute: class_tid: 1, control.icmpv4_test */
+	{
+	.cond_opcode = BNXT_ULP_COND_OPC_HDR_BIT_IS_SET,
+	.cond_operand = BNXT_ULP_HDR_BIT_O_IPV4
+	},
+	{
+	.cond_opcode = BNXT_ULP_COND_OPC_HDR_BIT_IS_SET,
+	.cond_operand = BNXT_ULP_HDR_BIT_O_ICMP
+	},
+	/* cond_execute: class_tid: 1, control.icmpv4 */
+	{
+	.cond_opcode = BNXT_ULP_COND_OPC_RF_IS_SET,
+	.cond_operand = BNXT_ULP_RF_IDX_GENERIC_TBL_MISS
+	},
+	/* cond_execute: class_tid: 1, wm.icmpv4 */
+	{
+	.cond_opcode = BNXT_ULP_COND_OPC_CF_IS_SET,
+	.cond_operand = BNXT_ULP_CF_IDX_WC_IS_HA_HIGH_REG
+	},
+	/* cond_execute: class_tid: 1, control.icmpv6_test */
+	{
+	.cond_opcode = BNXT_ULP_COND_OPC_HDR_BIT_IS_SET,
+	.cond_operand = BNXT_ULP_HDR_BIT_O_IPV6
+	},
+	{
+	.cond_opcode = BNXT_ULP_COND_OPC_HDR_BIT_IS_SET,
+	.cond_operand = BNXT_ULP_HDR_BIT_O_ICMP
+	},
+	/* cond_execute: class_tid: 1, control.icmpv6 */
+	{
+	.cond_opcode = BNXT_ULP_COND_OPC_RF_IS_SET,
+	.cond_operand = BNXT_ULP_RF_IDX_GENERIC_TBL_MISS
+	},
+	/* cond_execute: class_tid: 1, wm.icmpv6 */
+	{
+	.cond_opcode = BNXT_ULP_COND_OPC_CF_IS_SET,
+	.cond_operand = BNXT_ULP_CF_IDX_WC_IS_HA_HIGH_REG
+	},
+	/* cond_execute: class_tid: 1, control.l3_l4 */
+	{
+	.cond_opcode = BNXT_ULP_COND_OPC_RF_IS_SET,
+	.cond_operand = BNXT_ULP_RF_IDX_GENERIC_TBL_MISS
+	},
+	/* cond_execute: class_tid: 1, wm.l4 */
+	{
+	.cond_opcode = BNXT_ULP_COND_OPC_CF_IS_SET,
+	.cond_operand = BNXT_ULP_CF_IDX_WC_IS_HA_HIGH_REG
+	},
+	/* cond_execute: class_tid: 1, control.check_rss_action */
+	{
+	.cond_opcode = BNXT_ULP_COND_OPC_ACT_BIT_IS_SET,
+	.cond_operand = BNXT_ULP_ACT_BIT_RSS
+	},
+	/* cond_execute: class_tid: 2, control.0 */
+	{
+	.cond_opcode = BNXT_ULP_COND_OPC_RF_IS_SET,
+	.cond_operand = BNXT_ULP_RF_IDX_GENERIC_TBL_MISS
+	},
+	/* cond_execute: class_tid: 2, control.l3_l4 */
+	{
+	.cond_opcode = BNXT_ULP_COND_OPC_RF_IS_SET,
+	.cond_operand = BNXT_ULP_RF_IDX_GENERIC_TBL_MISS
+	},
+	/* cond_execute: class_tid: 2, control.check_rss_action */
+	{
+	.cond_opcode = BNXT_ULP_COND_OPC_ACT_BIT_IS_SET,
+	.cond_operand = BNXT_ULP_ACT_BIT_RSS
+	},
+	/* cond_execute: class_tid: 4, control.0 */
+	{
+	.cond_opcode = BNXT_ULP_COND_OPC_RF_IS_SET,
+	.cond_operand = BNXT_ULP_RF_IDX_CC
+	}
+};
+
+struct bnxt_ulp_mapper_key_info ulp_thor_class_key_info_list[] = {
+	/* class_tid: 1, thor, table: port_table.rd */
+	{
+	.field_info_mask = {
+		.description = "dev.port_id",
+		.field_bit_size = 10,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff,
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "dev.port_id",
+		.field_bit_size = 10,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CF,
+		.field_opr1 = {
+		(BNXT_ULP_CF_IDX_DEV_PORT_ID >> 8) & 0xff,
+		BNXT_ULP_CF_IDX_DEV_PORT_ID & 0xff}
+		}
+	},
+	/* class_tid: 1, thor, table: l2_cntxt_tcam_cache.gre_rd */
+	{
+	.field_info_mask = {
+		.description = "svif",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_HF,
+		.field_opr1 = {
+		(BNXT_ULP_GLB_HF_ID_SVIF_INDEX >> 8) & 0xff,
+		BNXT_ULP_GLB_HF_ID_SVIF_INDEX & 0xff}
+		},
+	.field_info_spec = {
+		.description = "svif",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_HF,
+		.field_opr1 = {
+		(BNXT_ULP_GLB_HF_ID_SVIF_INDEX >> 8) & 0xff,
+		BNXT_ULP_GLB_HF_ID_SVIF_INDEX & 0xff}
+		}
+	},
+	/* class_tid: 1, thor, table: l2_cntxt_tcam.gre */
+	{
+	.field_info_mask = {
+		.description = "etype",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "etype",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ivlan_tpid_sel",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l2_ivlan_tpid_sel",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ivlan_vid",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l2_ivlan_vid",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ovlan_tpid_sel",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l2_ovlan_tpid_sel",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ovlan_vid",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l2_ovlan_vid",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "two_vtags",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "two_vtags",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "vtag_present",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "vtag_present",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "mac1_addr",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "mac1_addr",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "mac0_addr",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "mac0_addr",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tunnel_id",
+		.field_bit_size = 24,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tunnel_id",
+		.field_bit_size = 24,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tun_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "tun_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr1 = {
+		ULP_THOR_SYM_TUN_HDR_TYPE_GRE}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "llc",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "llc",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "roce",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "roce",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "metadata",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "metadata",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "svif",
+		.field_bit_size = 11,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_HF,
+		.field_opr1 = {
+		(BNXT_ULP_GLB_HF_ID_SVIF_INDEX >> 8) & 0xff,
+		BNXT_ULP_GLB_HF_ID_SVIF_INDEX & 0xff}
+		},
+	.field_info_spec = {
+		.description = "svif",
+		.field_bit_size = 11,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_HF,
+		.field_opr1 = {
+		(BNXT_ULP_GLB_HF_ID_SVIF_INDEX >> 8) & 0xff,
+		BNXT_ULP_GLB_HF_ID_SVIF_INDEX & 0xff}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "parif",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "parif",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "spif",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "spif",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "loopback",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "loopback",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "recycle_cnt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "recycle_cnt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "mpass_cnt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "mpass_cnt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr1 = {
+		1}
+		},
+	.field_info_spec = {
+		.description = "valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr1 = {
+		1}
+		}
+	},
+	/* class_tid: 1, thor, table: l2_cntxt_tcam_cache.gre_wr */
+	{
+	.field_info_mask = {
+		.description = "svif",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_HF,
+		.field_opr1 = {
+		(BNXT_ULP_GLB_HF_ID_SVIF_INDEX >> 8) & 0xff,
+		BNXT_ULP_GLB_HF_ID_SVIF_INDEX & 0xff}
+		},
+	.field_info_spec = {
+		.description = "svif",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_HF,
+		.field_opr1 = {
+		(BNXT_ULP_GLB_HF_ID_SVIF_INDEX >> 8) & 0xff,
+		BNXT_ULP_GLB_HF_ID_SVIF_INDEX & 0xff}
+		}
+	},
+	/* class_tid: 1, thor, table: profile_tcam.gre */
+	{
+	.field_info_mask = {
+		.description = "l4_hdr_is_udp_tcp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l4_hdr_is_udp_tcp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l4_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4_hdr_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l4_hdr_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l4_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "ieh",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "ieh",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3_ipv6_cmp_dst",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l3_ipv6_cmp_dst",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3_ipv6_cmp_src",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l3_ipv6_cmp_src",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3_hdr_isIP",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l3_hdr_isIP",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l3_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3_hdr_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l3_hdr_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l3_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_two_vtags",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l2_two_vtags",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_vtag_present",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l2_vtag_present",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_uc_mc_bc",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l2_uc_mc_bc",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_hdr_type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l2_hdr_type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_hdr_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l2_hdr_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l2_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tun_hdr_flags",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tun_hdr_flags",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tun_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tun_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tun_hdr_err",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tun_hdr_err",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tun_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tun_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4_hdr_is_udp_tcp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl4_hdr_is_udp_tcp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl4_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4_hdr_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl4_hdr_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl4_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3_ipv6_cmp_dst",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl3_ipv6_cmp_dst",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3_ipv6_cmp_src",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl3_ipv6_cmp_src",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3_hdr_isIP",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl3_hdr_isIP",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl3_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3_hdr_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl3_hdr_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl3_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_two_vtags",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl2_two_vtags",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_vtag_present",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl2_vtag_present",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_uc_mc_bc",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl2_uc_mc_bc",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_hdr_type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl2_hdr_type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl2_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "hrec_next",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "hrec_next",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "prof_func_id",
+		.field_bit_size = 7,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "prof_func_id",
+		.field_bit_size = 7,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_GLB_RF,
+		.field_opr1 = {
+		(BNXT_ULP_GLB_RF_IDX_APP_GLB_PROF_FUNC_ID_1 >> 8) & 0xff,
+		BNXT_ULP_GLB_RF_IDX_APP_GLB_PROF_FUNC_ID_1 & 0xff}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "agg_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "agg_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "metadata",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "metadata",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "pkt_type_0",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "pkt_type_0",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "pkt_type_1",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "pkt_type_1",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr1 = {
+		1}
+		},
+	.field_info_spec = {
+		.description = "valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr1 = {
+		1}
+		}
+	},
+	/* class_tid: 1, thor, table: wm.gre */
+	{
+	.field_info_mask = {
+		.description = "wc_profile_id",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "wc_profile_id",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_GLB_RF,
+		.field_opr1 = {
+		(BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_PROFILE_ID_2 >> 8) & 0xff,
+		BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_PROFILE_ID_2 & 0xff}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_cntxt_id",
+		.field_bit_size = 10,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff,
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "l2_cntxt_id",
+		.field_bit_size = 10,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1_THEN_SRC2_ELSE_SRC3,
+		.field_src1 = BNXT_ULP_FIELD_SRC_RF,
+		.field_opr1 = {
+		(BNXT_ULP_RF_IDX_PHY_PORT >> 8) & 0xff,
+		BNXT_ULP_RF_IDX_PHY_PORT & 0xff},
+		.field_src2 = BNXT_ULP_FIELD_SRC_GLB_RF,
+		.field_opr2 = {
+			(BNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_1 >> 8) & 0xff,
+			BNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_1 & 0xff},
+		.field_src3 = BNXT_ULP_FIELD_SRC_GLB_RF,
+		.field_opr3 = {
+		(BNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_0 >> 8) & 0xff,
+		BNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_0 & 0xff}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "parif",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "parif",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "spif",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "spif",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "svif",
+		.field_bit_size = 11,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "svif",
+		.field_bit_size = 11,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "lcos",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "lcos",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "meta",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "meta",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "rcyc_cnt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "rcyc_cnt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "loopback",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "loopback",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_l2type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_l2type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_dmac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_dmac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_smac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_smac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_dt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_dt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_sa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_sa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_nvt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_nvt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ovp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ovp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ovd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ovd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ovv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ovv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ovt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ovt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ivp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ivp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ivd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ivd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ivv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ivv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ivt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ivt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_etype",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_etype",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.l3type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.l3type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.sip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.sip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.sip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.sip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.sip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.sip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.dip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.dip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.dip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.dip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.dip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.dip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ttl",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ttl",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.prot",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "tl3.prot",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr1 = {
+		47}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.fid.ipv4",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.fid.ipv4",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.fid.ipv6",
+		.field_bit_size = 20,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.fid.ipv6",
+		.field_bit_size = 20,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.qos",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.qos",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_nonext",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_nonext",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_esp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_esp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_auth",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_auth",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_dest",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_dest",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_rthdr",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_rthdr",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_hop",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_hop",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_1frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_1frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.df",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.df",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.l3err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.l3err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.l4type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.l4type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.src",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.src",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.dst",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.dst",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.flags",
+		.field_bit_size = 9,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.flags",
+		.field_bit_size = 9,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.seq",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.seq",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.pa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.pa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.opt",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.opt",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.tcpts",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.tcpts",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tuntype",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tuntype",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tflags",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tflags",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tids",
+		.field_bit_size = 24,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tids",
+		.field_bit_size = 24,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tid",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tid",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tctxts",
+		.field_bit_size = 24,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tctxts",
+		.field_bit_size = 24,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tctxt",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tctxt",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tqos",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tqos",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "terr",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "terr",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_l2type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_l2type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_dmac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_dmac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_smac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_smac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_dt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_dt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_sa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_sa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_nvt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_nvt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ovp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ovp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ovd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ovd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ovv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ovv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ovt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ovt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ivp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ivp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ivd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ivd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ivv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ivv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ivt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ivt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_etype",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_etype",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.l3type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.l3type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.sip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.sip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.sip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.sip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.sip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.sip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.dip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.dip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.dip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.dip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.dip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.dip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ttl",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ttl",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.prot",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l3.prot",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.fid.ipv4",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.fid.ipv4",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.fid.ipv6",
+		.field_bit_size = 20,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.fid.ipv6",
+		.field_bit_size = 20,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.qos",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.qos",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_nonext",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_nonext",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_esp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_esp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_auth",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_auth",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_dest",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_dest",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_rthdr",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_rthdr",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_hop",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_hop",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_1frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_1frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.df",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.df",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.l3err.ipv4",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.l3err.ipv4",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.l3err.ipv6",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.l3err.ipv6",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.l4type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.l4type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.src",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.src",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.dst",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l4.dst",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.flags",
+		.field_bit_size = 9,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.flags",
+		.field_bit_size = 9,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.seq",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.seq",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.ack",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.ack",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.win",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.win",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.pa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.pa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.opt",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.opt",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.tcpts",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.tcpts",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.tsval",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.tsval",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.txecr",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.txecr",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	/* class_tid: 1, thor, table: wm.gre_low */
+	{
+	.field_info_mask = {
+		.description = "wc_profile_id",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "wc_profile_id",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_GLB_RF,
+		.field_opr1 = {
+		(BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_PROFILE_ID_2 >> 8) & 0xff,
+		BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_PROFILE_ID_2 & 0xff}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_cntxt_id",
+		.field_bit_size = 10,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff,
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "l2_cntxt_id",
+		.field_bit_size = 10,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1_THEN_SRC2_ELSE_SRC3,
+		.field_src1 = BNXT_ULP_FIELD_SRC_RF,
+		.field_opr1 = {
+		(BNXT_ULP_RF_IDX_PHY_PORT >> 8) & 0xff,
+		BNXT_ULP_RF_IDX_PHY_PORT & 0xff},
+		.field_src2 = BNXT_ULP_FIELD_SRC_GLB_RF,
+		.field_opr2 = {
+			(BNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_1 >> 8) & 0xff,
+			BNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_1 & 0xff},
+		.field_src3 = BNXT_ULP_FIELD_SRC_GLB_RF,
+		.field_opr3 = {
+		(BNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_0 >> 8) & 0xff,
+		BNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_0 & 0xff}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "parif",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "parif",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "spif",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "spif",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "svif",
+		.field_bit_size = 11,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "svif",
+		.field_bit_size = 11,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "lcos",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "lcos",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "meta",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "meta",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "rcyc_cnt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "rcyc_cnt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "loopback",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "loopback",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_l2type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_l2type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_dmac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_dmac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_smac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_smac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_dt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_dt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_sa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_sa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_nvt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_nvt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ovp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ovp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ovd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ovd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ovv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ovv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ovt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ovt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ivp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ivp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ivd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ivd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ivv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ivv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ivt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ivt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_etype",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_etype",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.l3type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.l3type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.sip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.sip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.sip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.sip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.sip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.sip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.dip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.dip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.dip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.dip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.dip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.dip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ttl",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ttl",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.prot",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "tl3.prot",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr1 = {
+		47}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.fid.ipv4",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.fid.ipv4",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.fid.ipv6",
+		.field_bit_size = 20,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.fid.ipv6",
+		.field_bit_size = 20,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.qos",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.qos",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_nonext",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_nonext",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_esp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_esp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_auth",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_auth",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_dest",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_dest",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_rthdr",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_rthdr",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_hop",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_hop",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_1frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_1frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.df",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.df",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.l3err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.l3err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.l4type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.l4type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.src",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.src",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.dst",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.dst",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.flags",
+		.field_bit_size = 9,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.flags",
+		.field_bit_size = 9,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.seq",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.seq",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.pa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.pa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.opt",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.opt",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.tcpts",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.tcpts",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tuntype",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tuntype",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tflags",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tflags",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tids",
+		.field_bit_size = 24,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tids",
+		.field_bit_size = 24,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tid",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tid",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tctxts",
+		.field_bit_size = 24,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tctxts",
+		.field_bit_size = 24,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tctxt",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tctxt",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tqos",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tqos",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "terr",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "terr",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_l2type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_l2type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_dmac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_dmac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_smac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_smac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_dt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_dt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_sa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_sa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_nvt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_nvt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ovp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ovp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ovd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ovd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ovv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ovv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ovt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ovt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ivp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ivp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ivd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ivd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ivv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ivv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ivt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ivt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_etype",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_etype",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.l3type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.l3type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.sip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.sip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.sip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.sip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.sip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.sip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.dip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.dip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.dip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.dip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.dip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.dip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ttl",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ttl",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.prot",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l3.prot",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.fid.ipv4",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.fid.ipv4",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.fid.ipv6",
+		.field_bit_size = 20,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.fid.ipv6",
+		.field_bit_size = 20,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.qos",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.qos",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_nonext",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_nonext",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_esp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_esp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_auth",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_auth",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_dest",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_dest",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_rthdr",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_rthdr",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_hop",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_hop",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_1frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_1frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.df",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.df",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.l3err.ipv4",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.l3err.ipv4",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.l3err.ipv6",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.l3err.ipv6",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.l4type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.l4type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.src",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.src",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.dst",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l4.dst",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.flags",
+		.field_bit_size = 9,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.flags",
+		.field_bit_size = 9,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.seq",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.seq",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.ack",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.ack",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.win",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.win",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.pa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.pa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.opt",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.opt",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.tcpts",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.tcpts",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.tsval",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.tsval",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.txecr",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.txecr",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	/* class_tid: 1, thor, table: mac_addr_cache.gre_frag_rd */
+	{
+	.field_info_mask = {
+		.description = "svif",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_HF,
+		.field_opr1 = {
+		(BNXT_ULP_GLB_HF_ID_SVIF_INDEX >> 8) & 0xff,
+		BNXT_ULP_GLB_HF_ID_SVIF_INDEX & 0xff}
+		},
+	.field_info_spec = {
+		.description = "svif",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_HF,
+		.field_opr1 = {
+		(BNXT_ULP_GLB_HF_ID_SVIF_INDEX >> 8) & 0xff,
+		BNXT_ULP_GLB_HF_ID_SVIF_INDEX & 0xff}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tun_hdr",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr1 = {
+		ULP_THOR_SYM_TUN_HDR_TYPE_NONE}
+		},
+	.field_info_spec = {
+		.description = "tun_hdr",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr1 = {
+		ULP_THOR_SYM_TUN_HDR_TYPE_NONE}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "one_tag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "one_tag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "vid",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "vid",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "mac_addr",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff,
+			0xff,
+			0xff,
+			0xff,
+			0xff,
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "mac_addr",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_RF,
+		.field_opr1 = {
+		(BNXT_ULP_RF_IDX_DRV_FUNC_PARENT_MAC >> 8) & 0xff,
+		BNXT_ULP_RF_IDX_DRV_FUNC_PARENT_MAC & 0xff}
+		}
+	},
+	/* class_tid: 1, thor, table: l2_cntxt_tcam.0 */
+	{
+	.field_info_mask = {
+		.description = "etype",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "etype",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ivlan_tpid_sel",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l2_ivlan_tpid_sel",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ivlan_vid",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l2_ivlan_vid",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ovlan_tpid_sel",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l2_ovlan_tpid_sel",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ovlan_vid",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l2_ovlan_vid",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "two_vtags",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "two_vtags",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "vtag_present",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "vtag_present",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "mac1_addr",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "mac1_addr",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "mac0_addr",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff,
+			0xff,
+			0xff,
+			0xff,
+			0xff,
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "mac0_addr",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1_THEN_SRC2_ELSE_SRC3,
+		.field_src1 = BNXT_ULP_FIELD_SRC_FIELD_BIT,
+		.field_opr1 = {
+		(BNXT_ULP_GLB_HF_ID_O_ETH_DMAC >> 8) & 0xff,
+		BNXT_ULP_GLB_HF_ID_O_ETH_DMAC & 0xff},
+		.field_src2 = BNXT_ULP_FIELD_SRC_HF,
+		.field_opr2 = {
+			(BNXT_ULP_GLB_HF_ID_O_ETH_DMAC >> 8) & 0xff,
+			BNXT_ULP_GLB_HF_ID_O_ETH_DMAC & 0xff},
+		.field_src3 = BNXT_ULP_FIELD_SRC_RF,
+		.field_opr3 = {
+		(BNXT_ULP_RF_IDX_DRV_FUNC_PARENT_MAC >> 8) & 0xff,
+		BNXT_ULP_RF_IDX_DRV_FUNC_PARENT_MAC & 0xff}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tunnel_id",
+		.field_bit_size = 24,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tunnel_id",
+		.field_bit_size = 24,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tun_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr1 = {
+		ULP_THOR_SYM_TUN_HDR_TYPE_NONE}
+		},
+	.field_info_spec = {
+		.description = "tun_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr1 = {
+		ULP_THOR_SYM_TUN_HDR_TYPE_NONE}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "llc",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "llc",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "roce",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "roce",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "metadata",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "metadata",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "svif",
+		.field_bit_size = 11,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_HF,
+		.field_opr1 = {
+		(BNXT_ULP_GLB_HF_ID_SVIF_INDEX >> 8) & 0xff,
+		BNXT_ULP_GLB_HF_ID_SVIF_INDEX & 0xff}
+		},
+	.field_info_spec = {
+		.description = "svif",
+		.field_bit_size = 11,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_HF,
+		.field_opr1 = {
+		(BNXT_ULP_GLB_HF_ID_SVIF_INDEX >> 8) & 0xff,
+		BNXT_ULP_GLB_HF_ID_SVIF_INDEX & 0xff}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "parif",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "parif",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "spif",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "spif",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "loopback",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "loopback",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "recycle_cnt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "recycle_cnt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "mpass_cnt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr1 = {
+		2}
+		},
+	.field_info_spec = {
+		.description = "mpass_cnt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr1 = {
+		1}
+		},
+	.field_info_spec = {
+		.description = "valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr1 = {
+		1}
+		}
+	},
+	/* class_tid: 1, thor, table: mac_addr_cache.gre_frag_wr */
+	{
+	.field_info_mask = {
+		.description = "svif",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_HF,
+		.field_opr1 = {
+		(BNXT_ULP_GLB_HF_ID_SVIF_INDEX >> 8) & 0xff,
+		BNXT_ULP_GLB_HF_ID_SVIF_INDEX & 0xff}
+		},
+	.field_info_spec = {
+		.description = "svif",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_HF,
+		.field_opr1 = {
+		(BNXT_ULP_GLB_HF_ID_SVIF_INDEX >> 8) & 0xff,
+		BNXT_ULP_GLB_HF_ID_SVIF_INDEX & 0xff}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tun_hdr",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr1 = {
+		ULP_THOR_SYM_TUN_HDR_TYPE_NONE}
+		},
+	.field_info_spec = {
+		.description = "tun_hdr",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr1 = {
+		ULP_THOR_SYM_TUN_HDR_TYPE_NONE}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "one_tag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "one_tag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "vid",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "vid",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "mac_addr",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff,
+			0xff,
+			0xff,
+			0xff,
+			0xff,
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "mac_addr",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_RF,
+		.field_opr1 = {
+		(BNXT_ULP_RF_IDX_DRV_FUNC_PARENT_MAC >> 8) & 0xff,
+		BNXT_ULP_RF_IDX_DRV_FUNC_PARENT_MAC & 0xff}
+		}
+	},
+	/* class_tid: 1, thor, table: profile_tcam.gre_frag */
+	{
+	.field_info_mask = {
+		.description = "l4_hdr_is_udp_tcp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l4_hdr_is_udp_tcp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l4_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4_hdr_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l4_hdr_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l4_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "ieh",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr1 = {
+		16}
+		},
+	.field_info_spec = {
+		.description = "ieh",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr1 = {
+		16}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3_ipv6_cmp_dst",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l3_ipv6_cmp_dst",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3_ipv6_cmp_src",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l3_ipv6_cmp_src",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3_hdr_isIP",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l3_hdr_isIP",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l3_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3_hdr_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l3_hdr_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l3_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_two_vtags",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l2_two_vtags",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_vtag_present",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l2_vtag_present",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_uc_mc_bc",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l2_uc_mc_bc",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_hdr_type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l2_hdr_type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_hdr_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l2_hdr_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "l2_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr1 = {
+		ULP_THOR_SYM_L2_HDR_VALID_YES}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tun_hdr_flags",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tun_hdr_flags",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tun_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tun_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tun_hdr_err",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tun_hdr_err",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tun_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "tun_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4_hdr_is_udp_tcp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl4_hdr_is_udp_tcp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl4_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4_hdr_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl4_hdr_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "tl4_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3_ipv6_cmp_dst",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl3_ipv6_cmp_dst",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3_ipv6_cmp_src",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl3_ipv6_cmp_src",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3_hdr_isIP",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl3_hdr_isIP",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl3_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3_hdr_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl3_hdr_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "tl3_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_two_vtags",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl2_two_vtags",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_vtag_present",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl2_vtag_present",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_uc_mc_bc",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl2_uc_mc_bc",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_hdr_type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl2_hdr_type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "tl2_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "hrec_next",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "hrec_next",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "prof_func_id",
+		.field_bit_size = 7,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "prof_func_id",
+		.field_bit_size = 7,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_GLB_RF,
+		.field_opr1 = {
+		(BNXT_ULP_GLB_RF_IDX_APP_GLB_PROF_FUNC_ID_0 >> 8) & 0xff,
+		BNXT_ULP_GLB_RF_IDX_APP_GLB_PROF_FUNC_ID_0 & 0xff}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "agg_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "agg_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "metadata",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "metadata",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "pkt_type_0",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "pkt_type_0",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "pkt_type_1",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "pkt_type_1",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr1 = {
+		1}
+		},
+	.field_info_spec = {
+		.description = "valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr1 = {
+		1}
+		}
+	},
+	/* class_tid: 1, thor, table: wm.gre_frag */
+	{
+	.field_info_mask = {
+		.description = "wc_profile_id",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "wc_profile_id",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_GLB_RF,
+		.field_opr1 = {
+		(BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_PROFILE_ID_0 >> 8) & 0xff,
+		BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_PROFILE_ID_0 & 0xff}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_cntxt_id",
+		.field_bit_size = 10,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff,
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "l2_cntxt_id",
+		.field_bit_size = 10,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1_THEN_SRC2_ELSE_SRC3,
+		.field_src1 = BNXT_ULP_FIELD_SRC_RF,
+		.field_opr1 = {
+		(BNXT_ULP_RF_IDX_PHY_PORT >> 8) & 0xff,
+		BNXT_ULP_RF_IDX_PHY_PORT & 0xff},
+		.field_src2 = BNXT_ULP_FIELD_SRC_GLB_RF,
+		.field_opr2 = {
+			(BNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_1 >> 8) & 0xff,
+			BNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_1 & 0xff},
+		.field_src3 = BNXT_ULP_FIELD_SRC_GLB_RF,
+		.field_opr3 = {
+		(BNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_0 >> 8) & 0xff,
+		BNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_0 & 0xff}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "parif",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "parif",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "spif",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "spif",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "svif",
+		.field_bit_size = 11,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "svif",
+		.field_bit_size = 11,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "lcos",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "lcos",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "meta",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "meta",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "rcyc_cnt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "rcyc_cnt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "loopback",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "loopback",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_l2type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_l2type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_dmac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_dmac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_smac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_smac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_dt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_dt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_sa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_sa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_nvt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_nvt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ovp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ovp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ovd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ovd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ovv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ovv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ovt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ovt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ivp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ivp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ivd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ivd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ivv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ivv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ivt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ivt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_etype",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_etype",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.l3type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.l3type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.sip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.sip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.sip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.sip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.sip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.sip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.dip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.dip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.dip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.dip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.dip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.dip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ttl",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ttl",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.prot",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl3.prot",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.fid.ipv4",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.fid.ipv4",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.fid.ipv6",
+		.field_bit_size = 20,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.fid.ipv6",
+		.field_bit_size = 20,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.qos",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.qos",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_nonext",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_nonext",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_esp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_esp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_auth",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_auth",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_dest",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_dest",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_rthdr",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_rthdr",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_hop",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_hop",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_1frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_1frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.df",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.df",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.l3err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.l3err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.l4type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.l4type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.src",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.src",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.dst",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.dst",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.flags",
+		.field_bit_size = 9,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.flags",
+		.field_bit_size = 9,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.seq",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.seq",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.pa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.pa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.opt",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.opt",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.tcpts",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.tcpts",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tuntype",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tuntype",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tflags",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tflags",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tids",
+		.field_bit_size = 24,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tids",
+		.field_bit_size = 24,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tid",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tid",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tctxts",
+		.field_bit_size = 24,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tctxts",
+		.field_bit_size = 24,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tctxt",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tctxt",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tqos",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tqos",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "terr",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "terr",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_l2type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_l2type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_dmac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_dmac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_smac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_smac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_dt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_dt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_sa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_sa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_nvt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_nvt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ovp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ovp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ovd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ovd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ovv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ovv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ovt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ovt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ivp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ivp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ivd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ivd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ivv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ivv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ivt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ivt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_etype",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_etype",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.l3type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.l3type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.sip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.sip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.sip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.sip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.sip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.sip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.dip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.dip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.dip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.dip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.dip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.dip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ttl",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ttl",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.prot",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "l3.prot",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr1 = {
+		47}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.fid.ipv4",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.fid.ipv4",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.fid.ipv6",
+		.field_bit_size = 20,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.fid.ipv6",
+		.field_bit_size = 20,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.qos",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.qos",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_nonext",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_nonext",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_esp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_esp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_auth",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_auth",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_dest",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_dest",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_rthdr",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_rthdr",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_hop",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_hop",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_1frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_1frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.df",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.df",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.l3err.ipv4",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.l3err.ipv4",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.l3err.ipv6",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.l3err.ipv6",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.l4type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.l4type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.src",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.src",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.dst",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l4.dst",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.flags",
+		.field_bit_size = 9,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.flags",
+		.field_bit_size = 9,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.seq",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.seq",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.ack",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.ack",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.win",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.win",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.pa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.pa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.opt",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.opt",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.tcpts",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.tcpts",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.tsval",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.tsval",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.txecr",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.txecr",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	/* class_tid: 1, thor, table: wm.gre_frag_low */
+	{
+	.field_info_mask = {
+		.description = "wc_profile_id",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "wc_profile_id",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_GLB_RF,
+		.field_opr1 = {
+		(BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_PROFILE_ID_0 >> 8) & 0xff,
+		BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_PROFILE_ID_0 & 0xff}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_cntxt_id",
+		.field_bit_size = 10,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff,
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "l2_cntxt_id",
+		.field_bit_size = 10,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1_THEN_SRC2_ELSE_SRC3,
+		.field_src1 = BNXT_ULP_FIELD_SRC_RF,
+		.field_opr1 = {
+		(BNXT_ULP_RF_IDX_PHY_PORT >> 8) & 0xff,
+		BNXT_ULP_RF_IDX_PHY_PORT & 0xff},
+		.field_src2 = BNXT_ULP_FIELD_SRC_GLB_RF,
+		.field_opr2 = {
+			(BNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_1 >> 8) & 0xff,
+			BNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_1 & 0xff},
+		.field_src3 = BNXT_ULP_FIELD_SRC_GLB_RF,
+		.field_opr3 = {
+		(BNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_0 >> 8) & 0xff,
+		BNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_0 & 0xff}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "parif",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "parif",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "spif",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "spif",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "svif",
+		.field_bit_size = 11,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "svif",
+		.field_bit_size = 11,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "lcos",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "lcos",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "meta",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "meta",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "rcyc_cnt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "rcyc_cnt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "loopback",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "loopback",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_l2type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_l2type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_dmac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_dmac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_smac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_smac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_dt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_dt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_sa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_sa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_nvt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_nvt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ovp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ovp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ovd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ovd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ovv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ovv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ovt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ovt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ivp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ivp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ivd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ivd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ivv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ivv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ivt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ivt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_etype",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_etype",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.l3type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.l3type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.sip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.sip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.sip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.sip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.sip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.sip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.dip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.dip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.dip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.dip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.dip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.dip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ttl",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ttl",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.prot",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl3.prot",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.fid.ipv4",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.fid.ipv4",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.fid.ipv6",
+		.field_bit_size = 20,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.fid.ipv6",
+		.field_bit_size = 20,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.qos",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.qos",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_nonext",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_nonext",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_esp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_esp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_auth",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_auth",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_dest",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_dest",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_rthdr",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_rthdr",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_hop",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_hop",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_1frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_1frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.df",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.df",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.l3err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.l3err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.l4type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.l4type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.src",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.src",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.dst",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.dst",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.flags",
+		.field_bit_size = 9,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.flags",
+		.field_bit_size = 9,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.seq",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.seq",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.pa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.pa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.opt",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.opt",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.tcpts",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.tcpts",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tuntype",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tuntype",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tflags",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tflags",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tids",
+		.field_bit_size = 24,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tids",
+		.field_bit_size = 24,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tid",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tid",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tctxts",
+		.field_bit_size = 24,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tctxts",
+		.field_bit_size = 24,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tctxt",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tctxt",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tqos",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tqos",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "terr",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "terr",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_l2type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_l2type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_dmac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_dmac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_smac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_smac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_dt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_dt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_sa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_sa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_nvt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_nvt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ovp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ovp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ovd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ovd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ovv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ovv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ovt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ovt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ivp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ivp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ivd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ivd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ivv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ivv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ivt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ivt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_etype",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_etype",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.l3type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.l3type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.sip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.sip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.sip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.sip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.sip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.sip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.dip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.dip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.dip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.dip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.dip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.dip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ttl",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ttl",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.prot",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "l3.prot",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr1 = {
+		47}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.fid.ipv4",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.fid.ipv4",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.fid.ipv6",
+		.field_bit_size = 20,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.fid.ipv6",
+		.field_bit_size = 20,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.qos",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.qos",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_nonext",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_nonext",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_esp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_esp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_auth",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_auth",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_dest",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_dest",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_rthdr",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_rthdr",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_hop",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_hop",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_1frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_1frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.df",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.df",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.l3err.ipv4",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.l3err.ipv4",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.l3err.ipv6",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.l3err.ipv6",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.l4type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.l4type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.src",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.src",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.dst",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l4.dst",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.flags",
+		.field_bit_size = 9,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.flags",
+		.field_bit_size = 9,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.seq",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.seq",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.ack",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.ack",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.win",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.win",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.pa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.pa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.opt",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.opt",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.tcpts",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.tcpts",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.tsval",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.tsval",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.txecr",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.txecr",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	/* class_tid: 1, thor, table: mac_addr_cache.non_gre_rd */
+	{
+	.field_info_mask = {
+		.description = "svif",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_HF,
+		.field_opr1 = {
+		(BNXT_ULP_GLB_HF_ID_SVIF_INDEX >> 8) & 0xff,
+		BNXT_ULP_GLB_HF_ID_SVIF_INDEX & 0xff}
+		},
+	.field_info_spec = {
+		.description = "svif",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_HF,
+		.field_opr1 = {
+		(BNXT_ULP_GLB_HF_ID_SVIF_INDEX >> 8) & 0xff,
+		BNXT_ULP_GLB_HF_ID_SVIF_INDEX & 0xff}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tun_hdr",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr1 = {
+		ULP_THOR_SYM_TUN_HDR_TYPE_NONE}
+		},
+	.field_info_spec = {
+		.description = "tun_hdr",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr1 = {
+		ULP_THOR_SYM_TUN_HDR_TYPE_NONE}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "one_tag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "one_tag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "vid",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "vid",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "mac_addr",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1_THEN_SRC2_ELSE_SRC3,
+		.field_src1 = BNXT_ULP_FIELD_SRC_FIELD_BIT,
+		.field_opr1 = {
+		(BNXT_ULP_GLB_HF_ID_O_ETH_DMAC >> 8) & 0xff,
+		BNXT_ULP_GLB_HF_ID_O_ETH_DMAC & 0xff},
+		.field_src2 = BNXT_ULP_FIELD_SRC_HF,
+		.field_opr2 = {
+			(BNXT_ULP_GLB_HF_ID_O_ETH_DMAC >> 8) & 0xff,
+			BNXT_ULP_GLB_HF_ID_O_ETH_DMAC & 0xff},
+		.field_src3 = BNXT_ULP_FIELD_SRC_RF,
+		.field_opr3 = {
+		(BNXT_ULP_RF_IDX_DRV_FUNC_PARENT_MAC >> 8) & 0xff,
+		BNXT_ULP_RF_IDX_DRV_FUNC_PARENT_MAC & 0xff}
+		},
+	.field_info_spec = {
+		.description = "mac_addr",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1_THEN_SRC2_ELSE_SRC3,
+		.field_src1 = BNXT_ULP_FIELD_SRC_FIELD_BIT,
+		.field_opr1 = {
+		(BNXT_ULP_GLB_HF_ID_O_ETH_DMAC >> 8) & 0xff,
+		BNXT_ULP_GLB_HF_ID_O_ETH_DMAC & 0xff},
+		.field_src2 = BNXT_ULP_FIELD_SRC_HF,
+		.field_opr2 = {
+			(BNXT_ULP_GLB_HF_ID_O_ETH_DMAC >> 8) & 0xff,
+			BNXT_ULP_GLB_HF_ID_O_ETH_DMAC & 0xff},
+		.field_src3 = BNXT_ULP_FIELD_SRC_RF,
+		.field_opr3 = {
+		(BNXT_ULP_RF_IDX_DRV_FUNC_PARENT_MAC >> 8) & 0xff,
+		BNXT_ULP_RF_IDX_DRV_FUNC_PARENT_MAC & 0xff}
+		}
+	},
+	/* class_tid: 1, thor, table: l2_cntxt_tcam.0 */
+	{
+	.field_info_mask = {
+		.description = "etype",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "etype",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ivlan_tpid_sel",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l2_ivlan_tpid_sel",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ivlan_vid",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l2_ivlan_vid",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ovlan_tpid_sel",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l2_ovlan_tpid_sel",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ovlan_vid",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l2_ovlan_vid",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "two_vtags",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "two_vtags",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "vtag_present",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "vtag_present",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "mac1_addr",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "mac1_addr",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "mac0_addr",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff,
+			0xff,
+			0xff,
+			0xff,
+			0xff,
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "mac0_addr",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1_THEN_SRC2_ELSE_SRC3,
+		.field_src1 = BNXT_ULP_FIELD_SRC_FIELD_BIT,
+		.field_opr1 = {
+		(BNXT_ULP_GLB_HF_ID_O_ETH_DMAC >> 8) & 0xff,
+		BNXT_ULP_GLB_HF_ID_O_ETH_DMAC & 0xff},
+		.field_src2 = BNXT_ULP_FIELD_SRC_HF,
+		.field_opr2 = {
+			(BNXT_ULP_GLB_HF_ID_O_ETH_DMAC >> 8) & 0xff,
+			BNXT_ULP_GLB_HF_ID_O_ETH_DMAC & 0xff},
+		.field_src3 = BNXT_ULP_FIELD_SRC_RF,
+		.field_opr3 = {
+		(BNXT_ULP_RF_IDX_DRV_FUNC_PARENT_MAC >> 8) & 0xff,
+		BNXT_ULP_RF_IDX_DRV_FUNC_PARENT_MAC & 0xff}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tunnel_id",
+		.field_bit_size = 24,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tunnel_id",
+		.field_bit_size = 24,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tun_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr1 = {
+		ULP_THOR_SYM_TUN_HDR_TYPE_NONE}
+		},
+	.field_info_spec = {
+		.description = "tun_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr1 = {
+		ULP_THOR_SYM_TUN_HDR_TYPE_NONE}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "llc",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "llc",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "roce",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "roce",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "metadata",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "metadata",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "svif",
+		.field_bit_size = 11,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_HF,
+		.field_opr1 = {
+		(BNXT_ULP_GLB_HF_ID_SVIF_INDEX >> 8) & 0xff,
+		BNXT_ULP_GLB_HF_ID_SVIF_INDEX & 0xff}
+		},
+	.field_info_spec = {
+		.description = "svif",
+		.field_bit_size = 11,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_HF,
+		.field_opr1 = {
+		(BNXT_ULP_GLB_HF_ID_SVIF_INDEX >> 8) & 0xff,
+		BNXT_ULP_GLB_HF_ID_SVIF_INDEX & 0xff}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "parif",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "parif",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "spif",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "spif",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "loopback",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "loopback",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "recycle_cnt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "recycle_cnt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "mpass_cnt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr1 = {
+		2}
+		},
+	.field_info_spec = {
+		.description = "mpass_cnt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr1 = {
+		1}
+		},
+	.field_info_spec = {
+		.description = "valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr1 = {
+		1}
+		}
+	},
+	/* class_tid: 1, thor, table: mac_addr_cache.wr */
+	{
+	.field_info_mask = {
+		.description = "svif",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_HF,
+		.field_opr1 = {
+		(BNXT_ULP_GLB_HF_ID_SVIF_INDEX >> 8) & 0xff,
+		BNXT_ULP_GLB_HF_ID_SVIF_INDEX & 0xff}
+		},
+	.field_info_spec = {
+		.description = "svif",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_HF,
+		.field_opr1 = {
+		(BNXT_ULP_GLB_HF_ID_SVIF_INDEX >> 8) & 0xff,
+		BNXT_ULP_GLB_HF_ID_SVIF_INDEX & 0xff}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tun_hdr",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr1 = {
+		ULP_THOR_SYM_TUN_HDR_TYPE_NONE}
+		},
+	.field_info_spec = {
+		.description = "tun_hdr",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr1 = {
+		ULP_THOR_SYM_TUN_HDR_TYPE_NONE}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "one_tag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "one_tag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "vid",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "vid",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "mac_addr",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1_THEN_SRC2_ELSE_SRC3,
+		.field_src1 = BNXT_ULP_FIELD_SRC_FIELD_BIT,
+		.field_opr1 = {
+		(BNXT_ULP_GLB_HF_ID_O_ETH_DMAC >> 8) & 0xff,
+		BNXT_ULP_GLB_HF_ID_O_ETH_DMAC & 0xff},
+		.field_src2 = BNXT_ULP_FIELD_SRC_HF,
+		.field_opr2 = {
+			(BNXT_ULP_GLB_HF_ID_O_ETH_DMAC >> 8) & 0xff,
+			BNXT_ULP_GLB_HF_ID_O_ETH_DMAC & 0xff},
+		.field_src3 = BNXT_ULP_FIELD_SRC_RF,
+		.field_opr3 = {
+		(BNXT_ULP_RF_IDX_DRV_FUNC_PARENT_MAC >> 8) & 0xff,
+		BNXT_ULP_RF_IDX_DRV_FUNC_PARENT_MAC & 0xff}
+		},
+	.field_info_spec = {
+		.description = "mac_addr",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1_THEN_SRC2_ELSE_SRC3,
+		.field_src1 = BNXT_ULP_FIELD_SRC_FIELD_BIT,
+		.field_opr1 = {
+		(BNXT_ULP_GLB_HF_ID_O_ETH_DMAC >> 8) & 0xff,
+		BNXT_ULP_GLB_HF_ID_O_ETH_DMAC & 0xff},
+		.field_src2 = BNXT_ULP_FIELD_SRC_HF,
+		.field_opr2 = {
+			(BNXT_ULP_GLB_HF_ID_O_ETH_DMAC >> 8) & 0xff,
+			BNXT_ULP_GLB_HF_ID_O_ETH_DMAC & 0xff},
+		.field_src3 = BNXT_ULP_FIELD_SRC_RF,
+		.field_opr3 = {
+		(BNXT_ULP_RF_IDX_DRV_FUNC_PARENT_MAC >> 8) & 0xff,
+		BNXT_ULP_RF_IDX_DRV_FUNC_PARENT_MAC & 0xff}
+		}
+	},
+	/* class_tid: 1, thor, table: profile_tcam_cache.icmpv4_rd */
+	{
+	.field_info_mask = {
+		.description = "recycle_cnt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "recycle_cnt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "prof_func_id",
+		.field_bit_size = 7,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "prof_func_id",
+		.field_bit_size = 7,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_GLB_RF,
+		.field_opr1 = {
+		(BNXT_ULP_GLB_RF_IDX_APP_GLB_PROF_FUNC_ID_0 >> 8) & 0xff,
+		BNXT_ULP_GLB_RF_IDX_APP_GLB_PROF_FUNC_ID_0 & 0xff}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "hdr_sig_id",
+		.field_bit_size = 5,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "hdr_sig_id",
+		.field_bit_size = 5,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CF,
+		.field_opr1 = {
+		(BNXT_ULP_CF_IDX_HDR_SIG_ID >> 8) & 0xff,
+		BNXT_ULP_CF_IDX_HDR_SIG_ID & 0xff}
+		}
+	},
+	/* class_tid: 1, thor, table: profile_tcam.icmpv4 */
+	{
+	.field_info_mask = {
+		.description = "l4_hdr_is_udp_tcp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l4_hdr_is_udp_tcp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "l4_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr1 = {
+		ULP_THOR_SYM_L4_HDR_TYPE_ICMP}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4_hdr_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l4_hdr_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "l4_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr1 = {
+		ULP_THOR_SYM_L4_HDR_VALID_YES}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "ieh",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "ieh",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3_ipv6_cmp_dst",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l3_ipv6_cmp_dst",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3_ipv6_cmp_src",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l3_ipv6_cmp_src",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3_hdr_isIP",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l3_hdr_isIP",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "l3_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3_hdr_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l3_hdr_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "l3_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr1 = {
+		ULP_THOR_SYM_L3_HDR_VALID_YES}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_two_vtags",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l2_two_vtags",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_vtag_present",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l2_vtag_present",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_uc_mc_bc",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l2_uc_mc_bc",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_hdr_type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l2_hdr_type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_hdr_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l2_hdr_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "l2_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr1 = {
+		ULP_THOR_SYM_L2_HDR_VALID_YES}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tun_hdr_flags",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tun_hdr_flags",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tun_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tun_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tun_hdr_err",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tun_hdr_err",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tun_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "tun_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4_hdr_is_udp_tcp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl4_hdr_is_udp_tcp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl4_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4_hdr_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl4_hdr_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "tl4_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3_ipv6_cmp_dst",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl3_ipv6_cmp_dst",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3_ipv6_cmp_src",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl3_ipv6_cmp_src",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3_hdr_isIP",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl3_hdr_isIP",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl3_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3_hdr_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl3_hdr_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "tl3_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_two_vtags",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl2_two_vtags",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_vtag_present",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl2_vtag_present",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_uc_mc_bc",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl2_uc_mc_bc",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_hdr_type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl2_hdr_type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "tl2_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "hrec_next",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "hrec_next",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "prof_func_id",
+		.field_bit_size = 7,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "prof_func_id",
+		.field_bit_size = 7,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_GLB_RF,
+		.field_opr1 = {
+		(BNXT_ULP_GLB_RF_IDX_APP_GLB_PROF_FUNC_ID_0 >> 8) & 0xff,
+		BNXT_ULP_GLB_RF_IDX_APP_GLB_PROF_FUNC_ID_0 & 0xff}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "agg_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "agg_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "metadata",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "metadata",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "pkt_type_0",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "pkt_type_0",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "pkt_type_1",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "pkt_type_1",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr1 = {
+		1}
+		},
+	.field_info_spec = {
+		.description = "valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr1 = {
+		1}
+		}
+	},
+	/* class_tid: 1, thor, table: profile_tcam_cache.icmpv4_wr */
+	{
+	.field_info_mask = {
+		.description = "recycle_cnt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "recycle_cnt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "prof_func_id",
+		.field_bit_size = 7,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "prof_func_id",
+		.field_bit_size = 7,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_GLB_RF,
+		.field_opr1 = {
+		(BNXT_ULP_GLB_RF_IDX_APP_GLB_PROF_FUNC_ID_0 >> 8) & 0xff,
+		BNXT_ULP_GLB_RF_IDX_APP_GLB_PROF_FUNC_ID_0 & 0xff}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "hdr_sig_id",
+		.field_bit_size = 5,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "hdr_sig_id",
+		.field_bit_size = 5,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CF,
+		.field_opr1 = {
+		(BNXT_ULP_CF_IDX_HDR_SIG_ID >> 8) & 0xff,
+		BNXT_ULP_CF_IDX_HDR_SIG_ID & 0xff}
+		}
+	},
+	/* class_tid: 1, thor, table: wm.icmpv4 */
+	{
+	.field_info_mask = {
+		.description = "wc_profile_id",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "wc_profile_id",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_GLB_RF,
+		.field_opr1 = {
+		(BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_PROFILE_ID_0 >> 8) & 0xff,
+		BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_PROFILE_ID_0 & 0xff}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_cntxt_id",
+		.field_bit_size = 10,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff,
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "l2_cntxt_id",
+		.field_bit_size = 10,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1_THEN_SRC2_ELSE_SRC3,
+		.field_src1 = BNXT_ULP_FIELD_SRC_RF,
+		.field_opr1 = {
+		(BNXT_ULP_RF_IDX_PHY_PORT >> 8) & 0xff,
+		BNXT_ULP_RF_IDX_PHY_PORT & 0xff},
+		.field_src2 = BNXT_ULP_FIELD_SRC_GLB_RF,
+		.field_opr2 = {
+			(BNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_1 >> 8) & 0xff,
+			BNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_1 & 0xff},
+		.field_src3 = BNXT_ULP_FIELD_SRC_GLB_RF,
+		.field_opr3 = {
+		(BNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_0 >> 8) & 0xff,
+		BNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_0 & 0xff}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "parif",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "parif",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "spif",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "spif",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "svif",
+		.field_bit_size = 11,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "svif",
+		.field_bit_size = 11,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "lcos",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "lcos",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "meta",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "meta",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "rcyc_cnt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "rcyc_cnt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "loopback",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "loopback",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_l2type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_l2type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_dmac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_dmac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_smac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_smac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_dt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_dt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_sa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_sa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_nvt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_nvt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ovp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ovp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ovd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ovd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ovv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ovv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ovt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ovt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ivp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ivp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ivd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ivd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ivv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ivv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ivt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ivt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_etype",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_etype",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.l3type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.l3type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.sip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.sip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.sip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.sip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.sip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.sip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.dip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.dip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.dip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.dip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.dip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.dip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ttl",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ttl",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.prot",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl3.prot",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.fid.ipv4",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.fid.ipv4",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.fid.ipv6",
+		.field_bit_size = 20,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.fid.ipv6",
+		.field_bit_size = 20,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.qos",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.qos",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_nonext",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_nonext",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_esp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_esp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_auth",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_auth",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_dest",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_dest",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_rthdr",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_rthdr",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_hop",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_hop",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_1frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_1frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.df",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.df",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.l3err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.l3err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.l4type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.l4type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.src",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.src",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.dst",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.dst",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.flags",
+		.field_bit_size = 9,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.flags",
+		.field_bit_size = 9,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.seq",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.seq",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.pa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.pa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.opt",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.opt",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.tcpts",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.tcpts",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tuntype",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tuntype",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tflags",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tflags",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tids",
+		.field_bit_size = 24,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tids",
+		.field_bit_size = 24,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tid",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tid",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tctxts",
+		.field_bit_size = 24,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tctxts",
+		.field_bit_size = 24,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tctxt",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tctxt",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tqos",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tqos",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "terr",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "terr",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_l2type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_l2type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_dmac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_dmac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_smac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_smac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_dt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_dt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_sa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_sa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_nvt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_nvt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ovp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ovp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ovd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ovd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ovv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ovv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ovt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ovt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ivp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ivp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ivd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ivd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ivv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ivv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ivt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ivt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_etype",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_etype",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.l3type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.l3type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.sip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.sip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.sip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.sip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.sip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.sip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.dip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.dip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.dip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.dip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.dip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.dip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ttl",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ttl",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.prot",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "l3.prot",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1_THEN_SRC2_ELSE_SRC3,
+		.field_src1 = BNXT_ULP_FIELD_SRC_HDR_BIT,
+		.field_opr1 = {
+		((uint64_t)BNXT_ULP_HDR_BIT_O_IPV4 >> 56) & 0xff,
+		((uint64_t)BNXT_ULP_HDR_BIT_O_IPV4 >> 48) & 0xff,
+		((uint64_t)BNXT_ULP_HDR_BIT_O_IPV4 >> 40) & 0xff,
+		((uint64_t)BNXT_ULP_HDR_BIT_O_IPV4 >> 32) & 0xff,
+		((uint64_t)BNXT_ULP_HDR_BIT_O_IPV4 >> 24) & 0xff,
+		((uint64_t)BNXT_ULP_HDR_BIT_O_IPV4 >> 16) & 0xff,
+		((uint64_t)BNXT_ULP_HDR_BIT_O_IPV4 >> 8) & 0xff,
+		(uint64_t)BNXT_ULP_HDR_BIT_O_IPV4 & 0xff},
+		.field_src2 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr2 = {
+			1},
+		.field_src3 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr3 = {
+		58}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.fid.ipv4",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.fid.ipv4",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.fid.ipv6",
+		.field_bit_size = 20,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.fid.ipv6",
+		.field_bit_size = 20,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.qos",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.qos",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_nonext",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_nonext",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_esp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_esp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_auth",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_auth",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_dest",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_dest",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_rthdr",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_rthdr",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_hop",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_hop",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_1frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_1frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.df",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.df",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.l3err.ipv4",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.l3err.ipv4",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.l3err.ipv6",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.l3err.ipv6",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.l4type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.l4type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.src",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.src",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.dst",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l4.dst",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.flags",
+		.field_bit_size = 9,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.flags",
+		.field_bit_size = 9,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.seq",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.seq",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.ack",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.ack",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.win",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.win",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.pa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.pa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.opt",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.opt",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.tcpts",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.tcpts",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.tsval",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.tsval",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.txecr",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.txecr",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	/* class_tid: 1, thor, table: wm.icmpv4_low */
+	{
+	.field_info_mask = {
+		.description = "wc_profile_id",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "wc_profile_id",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_GLB_RF,
+		.field_opr1 = {
+		(BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_PROFILE_ID_0 >> 8) & 0xff,
+		BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_PROFILE_ID_0 & 0xff}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_cntxt_id",
+		.field_bit_size = 10,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff,
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "l2_cntxt_id",
+		.field_bit_size = 10,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1_THEN_SRC2_ELSE_SRC3,
+		.field_src1 = BNXT_ULP_FIELD_SRC_RF,
+		.field_opr1 = {
+		(BNXT_ULP_RF_IDX_PHY_PORT >> 8) & 0xff,
+		BNXT_ULP_RF_IDX_PHY_PORT & 0xff},
+		.field_src2 = BNXT_ULP_FIELD_SRC_GLB_RF,
+		.field_opr2 = {
+			(BNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_1 >> 8) & 0xff,
+			BNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_1 & 0xff},
+		.field_src3 = BNXT_ULP_FIELD_SRC_GLB_RF,
+		.field_opr3 = {
+		(BNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_0 >> 8) & 0xff,
+		BNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_0 & 0xff}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "parif",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "parif",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "spif",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "spif",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "svif",
+		.field_bit_size = 11,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "svif",
+		.field_bit_size = 11,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "lcos",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "lcos",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "meta",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "meta",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "rcyc_cnt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "rcyc_cnt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "loopback",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "loopback",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_l2type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_l2type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_dmac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_dmac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_smac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_smac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_dt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_dt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_sa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_sa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_nvt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_nvt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ovp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ovp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ovd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ovd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ovv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ovv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ovt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ovt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ivp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ivp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ivd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ivd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ivv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ivv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ivt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ivt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_etype",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_etype",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.l3type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.l3type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.sip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.sip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.sip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.sip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.sip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.sip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.dip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.dip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.dip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.dip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.dip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.dip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ttl",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ttl",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.prot",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl3.prot",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.fid.ipv4",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.fid.ipv4",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.fid.ipv6",
+		.field_bit_size = 20,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.fid.ipv6",
+		.field_bit_size = 20,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.qos",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.qos",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_nonext",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_nonext",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_esp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_esp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_auth",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_auth",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_dest",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_dest",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_rthdr",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_rthdr",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_hop",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_hop",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_1frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_1frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.df",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.df",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.l3err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.l3err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.l4type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.l4type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.src",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.src",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.dst",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.dst",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.flags",
+		.field_bit_size = 9,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.flags",
+		.field_bit_size = 9,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.seq",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.seq",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.pa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.pa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.opt",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.opt",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.tcpts",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.tcpts",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tuntype",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tuntype",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tflags",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tflags",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tids",
+		.field_bit_size = 24,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tids",
+		.field_bit_size = 24,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tid",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tid",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tctxts",
+		.field_bit_size = 24,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tctxts",
+		.field_bit_size = 24,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tctxt",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tctxt",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tqos",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tqos",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "terr",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "terr",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_l2type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_l2type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_dmac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_dmac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_smac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_smac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_dt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_dt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_sa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_sa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_nvt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_nvt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ovp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ovp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ovd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ovd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ovv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ovv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ovt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ovt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ivp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ivp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ivd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ivd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ivv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ivv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ivt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ivt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_etype",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_etype",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.l3type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.l3type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.sip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.sip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.sip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.sip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.sip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.sip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.dip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.dip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.dip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.dip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.dip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.dip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ttl",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ttl",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.prot",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "l3.prot",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1_THEN_SRC2_ELSE_SRC3,
+		.field_src1 = BNXT_ULP_FIELD_SRC_HDR_BIT,
+		.field_opr1 = {
+		((uint64_t)BNXT_ULP_HDR_BIT_O_IPV4 >> 56) & 0xff,
+		((uint64_t)BNXT_ULP_HDR_BIT_O_IPV4 >> 48) & 0xff,
+		((uint64_t)BNXT_ULP_HDR_BIT_O_IPV4 >> 40) & 0xff,
+		((uint64_t)BNXT_ULP_HDR_BIT_O_IPV4 >> 32) & 0xff,
+		((uint64_t)BNXT_ULP_HDR_BIT_O_IPV4 >> 24) & 0xff,
+		((uint64_t)BNXT_ULP_HDR_BIT_O_IPV4 >> 16) & 0xff,
+		((uint64_t)BNXT_ULP_HDR_BIT_O_IPV4 >> 8) & 0xff,
+		(uint64_t)BNXT_ULP_HDR_BIT_O_IPV4 & 0xff},
+		.field_src2 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr2 = {
+			1},
+		.field_src3 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr3 = {
+		58}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.fid.ipv4",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.fid.ipv4",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.fid.ipv6",
+		.field_bit_size = 20,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.fid.ipv6",
+		.field_bit_size = 20,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.qos",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.qos",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_nonext",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_nonext",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_esp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_esp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_auth",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_auth",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_dest",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_dest",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_rthdr",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_rthdr",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_hop",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_hop",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_1frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_1frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.df",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.df",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.l3err.ipv4",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.l3err.ipv4",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.l3err.ipv6",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.l3err.ipv6",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.l4type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.l4type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.src",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.src",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.dst",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l4.dst",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.flags",
+		.field_bit_size = 9,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.flags",
+		.field_bit_size = 9,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.seq",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.seq",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.ack",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.ack",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.win",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.win",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.pa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.pa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.opt",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.opt",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.tcpts",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.tcpts",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.tsval",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.tsval",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.txecr",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.txecr",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	/* class_tid: 1, thor, table: profile_tcam_cache.icmpv6_rd */
+	{
+	.field_info_mask = {
+		.description = "recycle_cnt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "recycle_cnt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "prof_func_id",
+		.field_bit_size = 7,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "prof_func_id",
+		.field_bit_size = 7,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_GLB_RF,
+		.field_opr1 = {
+		(BNXT_ULP_GLB_RF_IDX_APP_GLB_PROF_FUNC_ID_0 >> 8) & 0xff,
+		BNXT_ULP_GLB_RF_IDX_APP_GLB_PROF_FUNC_ID_0 & 0xff}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "hdr_sig_id",
+		.field_bit_size = 5,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "hdr_sig_id",
+		.field_bit_size = 5,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CF,
+		.field_opr1 = {
+		(BNXT_ULP_CF_IDX_HDR_SIG_ID >> 8) & 0xff,
+		BNXT_ULP_CF_IDX_HDR_SIG_ID & 0xff}
+		}
+	},
+	/* class_tid: 1, thor, table: profile_tcam.icmpv6 */
+	{
+	.field_info_mask = {
+		.description = "l4_hdr_is_udp_tcp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l4_hdr_is_udp_tcp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "l4_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr1 = {
+		ULP_THOR_SYM_L4_HDR_TYPE_ICMP}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4_hdr_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l4_hdr_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "l4_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr1 = {
+		ULP_THOR_SYM_L4_HDR_VALID_YES}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "ieh",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "ieh",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3_ipv6_cmp_dst",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l3_ipv6_cmp_dst",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3_ipv6_cmp_src",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l3_ipv6_cmp_src",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3_hdr_isIP",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l3_hdr_isIP",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "l3_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr1 = {
+		ULP_THOR_SYM_L3_HDR_TYPE_IPV6}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3_hdr_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l3_hdr_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "l3_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr1 = {
+		ULP_THOR_SYM_L3_HDR_VALID_YES}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_two_vtags",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l2_two_vtags",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_vtag_present",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l2_vtag_present",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_uc_mc_bc",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l2_uc_mc_bc",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_hdr_type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l2_hdr_type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_hdr_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l2_hdr_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "l2_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr1 = {
+		ULP_THOR_SYM_L2_HDR_VALID_YES}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tun_hdr_flags",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tun_hdr_flags",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tun_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tun_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tun_hdr_err",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tun_hdr_err",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tun_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "tun_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4_hdr_is_udp_tcp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl4_hdr_is_udp_tcp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl4_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4_hdr_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl4_hdr_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "tl4_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3_ipv6_cmp_dst",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl3_ipv6_cmp_dst",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3_ipv6_cmp_src",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl3_ipv6_cmp_src",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3_hdr_isIP",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl3_hdr_isIP",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl3_hdr_type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3_hdr_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl3_hdr_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "tl3_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_two_vtags",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl2_two_vtags",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_vtag_present",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl2_vtag_present",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_uc_mc_bc",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl2_uc_mc_bc",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_hdr_type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl2_hdr_type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "tl2_hdr_valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "hrec_next",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "hrec_next",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "prof_func_id",
+		.field_bit_size = 7,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "prof_func_id",
+		.field_bit_size = 7,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_GLB_RF,
+		.field_opr1 = {
+		(BNXT_ULP_GLB_RF_IDX_APP_GLB_PROF_FUNC_ID_0 >> 8) & 0xff,
+		BNXT_ULP_GLB_RF_IDX_APP_GLB_PROF_FUNC_ID_0 & 0xff}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "agg_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "agg_error",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "metadata",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "metadata",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "pkt_type_0",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "pkt_type_0",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "pkt_type_1",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "pkt_type_1",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr1 = {
+		1}
+		},
+	.field_info_spec = {
+		.description = "valid",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr1 = {
+		1}
+		}
+	},
+	/* class_tid: 1, thor, table: profile_tcam_cache.icmpv6_wr */
+	{
+	.field_info_mask = {
+		.description = "recycle_cnt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "recycle_cnt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "prof_func_id",
+		.field_bit_size = 7,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "prof_func_id",
+		.field_bit_size = 7,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_GLB_RF,
+		.field_opr1 = {
+		(BNXT_ULP_GLB_RF_IDX_APP_GLB_PROF_FUNC_ID_0 >> 8) & 0xff,
+		BNXT_ULP_GLB_RF_IDX_APP_GLB_PROF_FUNC_ID_0 & 0xff}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "hdr_sig_id",
+		.field_bit_size = 5,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "hdr_sig_id",
+		.field_bit_size = 5,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_CF,
+		.field_opr1 = {
+		(BNXT_ULP_CF_IDX_HDR_SIG_ID >> 8) & 0xff,
+		BNXT_ULP_CF_IDX_HDR_SIG_ID & 0xff}
+		}
+	},
+	/* class_tid: 1, thor, table: wm.icmpv6 */
+	{
+	.field_info_mask = {
+		.description = "wc_profile_id",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "wc_profile_id",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_GLB_RF,
+		.field_opr1 = {
+		(BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_PROFILE_ID_0 >> 8) & 0xff,
+		BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_PROFILE_ID_0 & 0xff}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_cntxt_id",
+		.field_bit_size = 10,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff,
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "l2_cntxt_id",
+		.field_bit_size = 10,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1_THEN_SRC2_ELSE_SRC3,
+		.field_src1 = BNXT_ULP_FIELD_SRC_RF,
+		.field_opr1 = {
+		(BNXT_ULP_RF_IDX_PHY_PORT >> 8) & 0xff,
+		BNXT_ULP_RF_IDX_PHY_PORT & 0xff},
+		.field_src2 = BNXT_ULP_FIELD_SRC_GLB_RF,
+		.field_opr2 = {
+			(BNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_1 >> 8) & 0xff,
+			BNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_1 & 0xff},
+		.field_src3 = BNXT_ULP_FIELD_SRC_GLB_RF,
+		.field_opr3 = {
+		(BNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_0 >> 8) & 0xff,
+		BNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_0 & 0xff}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "parif",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "parif",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "spif",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "spif",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "svif",
+		.field_bit_size = 11,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "svif",
+		.field_bit_size = 11,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "lcos",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "lcos",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "meta",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "meta",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "rcyc_cnt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "rcyc_cnt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "loopback",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "loopback",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_l2type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_l2type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_dmac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_dmac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_smac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_smac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_dt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_dt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_sa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_sa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_nvt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_nvt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ovp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ovp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ovd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ovd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ovv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ovv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ovt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ovt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ivp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ivp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ivd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ivd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ivv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ivv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ivt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ivt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_etype",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_etype",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.l3type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.l3type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.sip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.sip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.sip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.sip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.sip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.sip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.dip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.dip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.dip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.dip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.dip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.dip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ttl",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ttl",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.prot",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl3.prot",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.fid.ipv4",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.fid.ipv4",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.fid.ipv6",
+		.field_bit_size = 20,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.fid.ipv6",
+		.field_bit_size = 20,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.qos",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.qos",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_nonext",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_nonext",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_esp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_esp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_auth",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_auth",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_dest",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_dest",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_rthdr",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_rthdr",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_hop",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_hop",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_1frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_1frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.df",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.df",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.l3err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.l3err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.l4type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.l4type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.src",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.src",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.dst",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.dst",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.flags",
+		.field_bit_size = 9,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.flags",
+		.field_bit_size = 9,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.seq",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.seq",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.pa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.pa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.opt",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.opt",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.tcpts",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.tcpts",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tuntype",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tuntype",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tflags",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tflags",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tids",
+		.field_bit_size = 24,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tids",
+		.field_bit_size = 24,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tid",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tid",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tctxts",
+		.field_bit_size = 24,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tctxts",
+		.field_bit_size = 24,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tctxt",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tctxt",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tqos",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tqos",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "terr",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "terr",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_l2type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_l2type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_dmac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_dmac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_smac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_smac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_dt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_dt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_sa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_sa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_nvt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_nvt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ovp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ovp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ovd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ovd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ovv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ovv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ovt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ovt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ivp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ivp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ivd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ivd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ivv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ivv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ivt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ivt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_etype",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_etype",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.l3type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.l3type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.sip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.sip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.sip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.sip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.sip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.sip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.dip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.dip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.dip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.dip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.dip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.dip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ttl",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ttl",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.prot",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "l3.prot",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1_THEN_SRC2_ELSE_SRC3,
+		.field_src1 = BNXT_ULP_FIELD_SRC_HDR_BIT,
+		.field_opr1 = {
+		((uint64_t)BNXT_ULP_HDR_BIT_O_IPV4 >> 56) & 0xff,
+		((uint64_t)BNXT_ULP_HDR_BIT_O_IPV4 >> 48) & 0xff,
+		((uint64_t)BNXT_ULP_HDR_BIT_O_IPV4 >> 40) & 0xff,
+		((uint64_t)BNXT_ULP_HDR_BIT_O_IPV4 >> 32) & 0xff,
+		((uint64_t)BNXT_ULP_HDR_BIT_O_IPV4 >> 24) & 0xff,
+		((uint64_t)BNXT_ULP_HDR_BIT_O_IPV4 >> 16) & 0xff,
+		((uint64_t)BNXT_ULP_HDR_BIT_O_IPV4 >> 8) & 0xff,
+		(uint64_t)BNXT_ULP_HDR_BIT_O_IPV4 & 0xff},
+		.field_src2 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr2 = {
+			1},
+		.field_src3 = BNXT_ULP_FIELD_SRC_CONST,
+		.field_opr3 = {
+		58}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.fid.ipv4",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.fid.ipv4",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.fid.ipv6",
+		.field_bit_size = 20,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.fid.ipv6",
+		.field_bit_size = 20,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.qos",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.qos",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_nonext",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_nonext",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_esp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_esp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_auth",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_auth",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_dest",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_dest",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_rthdr",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_rthdr",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_hop",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_hop",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.ieh_1frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.ieh_1frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.df",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.df",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.l3err.ipv4",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.l3err.ipv4",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l3.l3err.ipv6",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l3.l3err.ipv6",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.l4type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.l4type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.src",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.src",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.dst",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "l4.dst",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.flags",
+		.field_bit_size = 9,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.flags",
+		.field_bit_size = 9,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.seq",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.seq",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.ack",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.ack",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.win",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.win",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.pa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.pa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.opt",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.opt",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.tcpts",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.tcpts",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.tsval",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.tsval",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.txecr",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.txecr",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l4.err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l4.err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	/* class_tid: 1, thor, table: wm.icmpv6_low */
+	{
+	.field_info_mask = {
+		.description = "wc_profile_id",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "wc_profile_id",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_GLB_RF,
+		.field_opr1 = {
+		(BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_PROFILE_ID_0 >> 8) & 0xff,
+		BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_PROFILE_ID_0 & 0xff}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_cntxt_id",
+		.field_bit_size = 10,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ONES,
+		.field_opr1 = {
+			0xff,
+			0xff}
+		},
+	.field_info_spec = {
+		.description = "l2_cntxt_id",
+		.field_bit_size = 10,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1_THEN_SRC2_ELSE_SRC3,
+		.field_src1 = BNXT_ULP_FIELD_SRC_RF,
+		.field_opr1 = {
+		(BNXT_ULP_RF_IDX_PHY_PORT >> 8) & 0xff,
+		BNXT_ULP_RF_IDX_PHY_PORT & 0xff},
+		.field_src2 = BNXT_ULP_FIELD_SRC_GLB_RF,
+		.field_opr2 = {
+			(BNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_1 >> 8) & 0xff,
+			BNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_1 & 0xff},
+		.field_src3 = BNXT_ULP_FIELD_SRC_GLB_RF,
+		.field_opr3 = {
+		(BNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_0 >> 8) & 0xff,
+		BNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_0 & 0xff}
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "parif",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "parif",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "spif",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "spif",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "svif",
+		.field_bit_size = 11,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "svif",
+		.field_bit_size = 11,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "lcos",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "lcos",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "meta",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "meta",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "rcyc_cnt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "rcyc_cnt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "loopback",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "loopback",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_l2type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_l2type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_dmac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_dmac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_smac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_smac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_dt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_dt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_sa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_sa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_nvt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_nvt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ovp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ovp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ovd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ovd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ovv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ovv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ovt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ovt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ivp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ivp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ivd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ivd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ivv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ivv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_ivt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_ivt",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl2_etype",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl2_etype",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.l3type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.l3type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.sip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.sip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.sip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.sip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.sip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.sip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.dip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.dip.ipv4",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.dip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.dip.ipv6",
+		.field_bit_size = 128,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.dip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.dip_selcmp.ipv6",
+		.field_bit_size = 72,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ttl",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ttl",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.prot",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		},
+	.field_info_spec = {
+		.description = "tl3.prot",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SRC1,
+		.field_src1 = BNXT_ULP_FIELD_SRC_ZERO
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.fid.ipv4",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.fid.ipv4",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.fid.ipv6",
+		.field_bit_size = 20,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.fid.ipv6",
+		.field_bit_size = 20,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.qos",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.qos",
+		.field_bit_size = 8,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_nonext",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_nonext",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_esp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_esp",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_auth",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_auth",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_dest",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_dest",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_rthdr",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_rthdr",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_hop",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_hop",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.ieh_1frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.ieh_1frag",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.df",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.df",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl3.l3err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl3.l3err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.l4type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.l4type",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.src",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.src",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.dst",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.dst",
+		.field_bit_size = 16,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.flags",
+		.field_bit_size = 9,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.flags",
+		.field_bit_size = 9,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.seq",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.seq",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.pa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.pa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.opt",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.opt",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.tcpts",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.tcpts",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tl4.err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tl4.err",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tuntype",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tuntype",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tflags",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tflags",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tids",
+		.field_bit_size = 24,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tids",
+		.field_bit_size = 24,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tid",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tid",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tctxts",
+		.field_bit_size = 24,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tctxts",
+		.field_bit_size = 24,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tctxt",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tctxt",
+		.field_bit_size = 32,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "tqos",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "tqos",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "terr",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "terr",
+		.field_bit_size = 4,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_l2type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_l2type",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_dmac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_dmac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_smac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_smac",
+		.field_bit_size = 48,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_dt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_dt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_sa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_sa",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_nvt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_nvt",
+		.field_bit_size = 2,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ovp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ovp",
+		.field_bit_size = 3,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ovd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ovd",
+		.field_bit_size = 1,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		}
+	},
+	{
+	.field_info_mask = {
+		.description = "l2_ovv",
+		.field_bit_size = 12,
+		.field_opc = BNXT_ULP_FIELD_OPC_SKIP
+		},
+	.field_info_spec = {
+		.description = "l2_ovv",
+		.field_bit_size = 12,
+