@@ -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
@@ -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.
*/
};
@@ -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()
*
*
*/
@@ -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
@@ -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
@@ -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.
@@ -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.
@@ -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
@@ -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.
*/
@@ -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.
*
@@ -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
new file mode 100644
@@ -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;
+}
new file mode 100644
@@ -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_ */
@@ -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(¶ms, 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)
@@ -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_ */
@@ -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,
@@ -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',
@@ -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) {
@@ -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, ¶ms, count);
+
/* TODO:
* Think about optimizing with try_lock later
*/
@@ -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
@@ -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, ¶ms);
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;
}
@@ -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
@@ -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)
@@ -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");
@@ -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, ®val)) {
- 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, ®val)) {
+ 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, ®val, &shared)) {
+ func_opr, ®val, &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)) {
@@ -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. */
@@ -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;
@@ -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 = ¶m->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. */
@@ -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)
@@ -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 {
@@ -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
};
@@ -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}
+ }
};
@@ -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_si