mapper_cparms->flow_id = params->fid;
mapper_cparms->parent_flow = params->parent_flow;
mapper_cparms->parent_fid = params->parent_fid;
+ mapper_cparms->fld_bitmap = ¶ms->fld_bitmap;
}
/* Function to create the rte flow. */
#include "ulp_mapper.h"
#include "ulp_flow_db.h"
#include "tf_util.h"
+#include "ulp_template_db_tbl.h"
static struct bnxt_ulp_glb_resource_info *
ulp_mapper_glb_resource_info_list_get(uint32_t *num_entries)
return ulp_glb_template_tbl;
}
+static uint8_t *
+ulp_mapper_glb_field_tbl_get(uint32_t idx)
+{
+ return &ulp_glb_field_tbl[idx];
+}
+
/*
* Get the size of the action property for a given index.
*
return ulp_act_prop_map_table[idx];
}
+static struct bnxt_ulp_mapper_cond_info *
+ulp_mapper_tmpl_reject_list_get(struct bnxt_ulp_mapper_parms *mparms,
+ uint32_t tid,
+ uint32_t *num_tbls,
+ enum bnxt_ulp_cond_list_opc *opc)
+{
+ uint32_t idx;
+ const struct ulp_template_device_tbls *dev_tbls;
+
+ dev_tbls = &mparms->device_params->dev_tbls[mparms->tmpl_type];
+ *num_tbls = dev_tbls->tmpl_list[tid].reject_info.cond_nums;
+ *opc = dev_tbls->tmpl_list[tid].reject_info.cond_list_opcode;
+ idx = dev_tbls->tmpl_list[tid].reject_info.cond_start_idx;
+
+ return &dev_tbls->cond_list[idx];
+}
+
+static struct bnxt_ulp_mapper_cond_info *
+ulp_mapper_tbl_execute_list_get(struct bnxt_ulp_mapper_parms *mparms,
+ struct bnxt_ulp_mapper_tbl_info *tbl,
+ uint32_t *num_tbls,
+ enum bnxt_ulp_cond_list_opc *opc)
+{
+ uint32_t idx;
+ const struct ulp_template_device_tbls *dev_tbls;
+
+ dev_tbls = &mparms->device_params->dev_tbls[mparms->tmpl_type];
+ *num_tbls = tbl->execute_info.cond_nums;
+ *opc = tbl->execute_info.cond_list_opcode;
+ idx = tbl->execute_info.cond_start_idx;
+
+ return &dev_tbls->cond_list[idx];
+}
+
/*
* Get a list of classifier tables that implement the flow
* Gets a device dependent list of tables that implement the class template id
return rc;
}
-/*
- * Function to process the conditional opcode of the mapper table.
- * returns 1 to skip the table.
- * return 0 to continue processing the table.
- *
- * defaults to skip
- */
-static int32_t
-ulp_mapper_tbl_cond_opcode_process(struct bnxt_ulp_mapper_parms *parms,
- struct bnxt_ulp_mapper_tbl_info *tbl)
-{
- int32_t rc = 1;
-
- switch (tbl->cond_opcode) {
- case BNXT_ULP_COND_OPCODE_NOP:
- rc = 0;
- break;
- case BNXT_ULP_COND_OPCODE_COMP_FIELD_IS_SET:
- if (tbl->cond_operand < BNXT_ULP_CF_IDX_LAST &&
- ULP_COMP_FLD_IDX_RD(parms, tbl->cond_operand))
- rc = 0;
- break;
- case BNXT_ULP_COND_OPCODE_ACTION_BIT_IS_SET:
- if (ULP_BITMAP_ISSET(parms->act_bitmap->bits,
- tbl->cond_operand))
- rc = 0;
- break;
- case BNXT_ULP_COND_OPCODE_HDR_BIT_IS_SET:
- if (ULP_BITMAP_ISSET(parms->hdr_bitmap->bits,
- tbl->cond_operand))
- rc = 0;
- break;
- case BNXT_ULP_COND_OPCODE_COMP_FIELD_NOT_SET:
- if (tbl->cond_operand < BNXT_ULP_CF_IDX_LAST &&
- !ULP_COMP_FLD_IDX_RD(parms, tbl->cond_operand))
- rc = 0;
- break;
- case BNXT_ULP_COND_OPCODE_ACTION_BIT_NOT_SET:
- if (!ULP_BITMAP_ISSET(parms->act_bitmap->bits,
- tbl->cond_operand))
- rc = 0;
- break;
- case BNXT_ULP_COND_OPCODE_HDR_BIT_NOT_SET:
- if (!ULP_BITMAP_ISSET(parms->hdr_bitmap->bits,
- tbl->cond_operand))
- rc = 0;
- break;
- default:
- BNXT_TF_DBG(ERR,
- "Invalid arg in mapper tbl for cond opcode\n");
- break;
- }
- return rc;
-}
-
/*
* Function to process the memtype opcode of the mapper table.
* returns 1 to skip the table.
return rc;
}
+/*
+ * Common conditional opcode process routine that is used for both the template
+ * rejection and table conditional execution.
+ */
+static int32_t
+ulp_mapper_cond_opc_process(struct bnxt_ulp_mapper_parms *parms,
+ enum bnxt_ulp_cond_opc opc,
+ uint32_t operand,
+ int32_t *res)
+{
+ int32_t rc = 0;
+ uint8_t *bit;
+ uint32_t idx;
+ uint64_t regval;
+
+ switch (opc) {
+ case BNXT_ULP_COND_OPC_COMP_FIELD_IS_SET:
+ if (operand < BNXT_ULP_CF_IDX_LAST) {
+ *res = ULP_COMP_FLD_IDX_RD(parms, operand);
+ } else {
+ BNXT_TF_DBG(ERR, "comp field out of bounds %d\n",
+ operand);
+ rc = -EINVAL;
+ }
+ break;
+ case BNXT_ULP_COND_OPC_COMP_FIELD_NOT_SET:
+ if (operand < BNXT_ULP_CF_IDX_LAST) {
+ *res = !ULP_COMP_FLD_IDX_RD(parms, operand);
+ } else {
+ BNXT_TF_DBG(ERR, "comp field out of bounds %d\n",
+ operand);
+ rc = -EINVAL;
+ }
+ break;
+ case BNXT_ULP_COND_OPC_ACTION_BIT_IS_SET:
+ if (operand < BNXT_ULP_ACTION_BIT_LAST) {
+ *res = ULP_BITMAP_ISSET(parms->act_bitmap->bits,
+ operand);
+ } else {
+ BNXT_TF_DBG(ERR, "action bit out of bounds %d\n",
+ operand);
+ rc = -EINVAL;
+ }
+ break;
+ case BNXT_ULP_COND_OPC_ACTION_BIT_NOT_SET:
+ if (operand < BNXT_ULP_ACTION_BIT_LAST) {
+ *res = !ULP_BITMAP_ISSET(parms->act_bitmap->bits,
+ operand);
+ } else {
+ BNXT_TF_DBG(ERR, "action bit out of bounds %d\n",
+ operand);
+ rc = -EINVAL;
+ }
+ break;
+ case BNXT_ULP_COND_OPC_HDR_BIT_IS_SET:
+ if (operand < BNXT_ULP_HDR_BIT_LAST) {
+ *res = ULP_BITMAP_ISSET(parms->hdr_bitmap->bits,
+ operand);
+ } else {
+ BNXT_TF_DBG(ERR, "header bit out of bounds %d\n",
+ operand);
+ rc = -EINVAL;
+ }
+ break;
+ case BNXT_ULP_COND_OPC_HDR_BIT_NOT_SET:
+ if (operand < BNXT_ULP_HDR_BIT_LAST) {
+ *res = !ULP_BITMAP_ISSET(parms->hdr_bitmap->bits,
+ operand);
+ } else {
+ BNXT_TF_DBG(ERR, "header bit out of bounds %d\n",
+ operand);
+ rc = -EINVAL;
+ }
+ break;
+ case BNXT_ULP_COND_OPC_FIELD_BIT_IS_SET:
+ idx = (parms->class_tid << BNXT_ULP_GLB_FIELD_TBL_SHIFT) |
+ operand;
+ bit = ulp_mapper_glb_field_tbl_get(idx);
+ if (!bit) {
+ BNXT_TF_DBG(ERR, "invalid ulp_glb_field_tbl idx %d\n",
+ idx);
+ return -EINVAL;
+ }
+ *res = ULP_BITMAP_ISSET(parms->fld_bitmap->bits, (1 << *bit));
+ break;
+ case BNXT_ULP_COND_OPC_FIELD_BIT_NOT_SET:
+ idx = (parms->class_tid << BNXT_ULP_GLB_FIELD_TBL_SHIFT) |
+ operand;
+ bit = ulp_mapper_glb_field_tbl_get(idx);
+ if (!bit) {
+ BNXT_TF_DBG(ERR, "invalid ulp_glb_field_tbl idx %d\n",
+ idx);
+ return -EINVAL;
+ }
+ *res = !ULP_BITMAP_ISSET(parms->fld_bitmap->bits, (1 << *bit));
+ break;
+ case BNXT_ULP_COND_OPC_REGFILE_IS_SET:
+ if (!ulp_regfile_read(parms->regfile, operand, ®val)) {
+ BNXT_TF_DBG(ERR, "regfile[%d] read oob\n", operand);
+ return -EINVAL;
+ }
+ *res = regval != 0;
+ break;
+ case BNXT_ULP_COND_OPC_REGFILE_NOT_SET:
+ if (!ulp_regfile_read(parms->regfile, operand, ®val)) {
+ BNXT_TF_DBG(ERR, "regfile[%d] read oob\n", operand);
+ return -EINVAL;
+ }
+ *res = regval == 0;
+ break;
+ default:
+ BNXT_TF_DBG(ERR, "Invalid conditional opcode %d\n", opc);
+ rc = -EINVAL;
+ break;
+ }
+ return (rc);
+}
+
+/*
+ * Processes a list of conditions and returns both a status and result of the
+ * list. The status must be checked prior to verifying the result.
+ *
+ * returns 0 for success, negative on failure
+ * returns res = 1 for true, res = 0 for false.
+ */
+static int32_t
+ulp_mapper_cond_opc_list_process(struct bnxt_ulp_mapper_parms *parms,
+ enum bnxt_ulp_cond_list_opc list_opc,
+ struct bnxt_ulp_mapper_cond_info *list,
+ uint32_t num,
+ int32_t *res)
+{
+ uint32_t i;
+ int32_t rc = 0, trc;
+
+ switch (list_opc) {
+ case BNXT_ULP_COND_LIST_OPC_AND:
+ /* AND Defaults to true. */
+ *res = 1;
+ break;
+ case BNXT_ULP_COND_LIST_OPC_OR:
+ /* OR Defaults to false. */
+ *res = 0;
+ break;
+ case BNXT_ULP_COND_LIST_OPC_TRUE:
+ *res = 1;
+ return rc;
+ case BNXT_ULP_COND_LIST_OPC_FALSE:
+ *res = 0;
+ return rc;
+ default:
+ BNXT_TF_DBG(ERR, "Invalid conditional list opcode %d\n",
+ list_opc);
+ return -EINVAL;
+ }
+
+ for (i = 0; i < num; i++) {
+ rc = ulp_mapper_cond_opc_process(parms,
+ list[i].cond_opcode,
+ list[i].cond_operand,
+ &trc);
+ if (rc)
+ return rc;
+
+ if (list_opc == BNXT_ULP_COND_LIST_OPC_AND) {
+ /* early return if result is ever zero */
+ if (!trc) {
+ *res = trc;
+ return rc;
+ }
+ } else {
+ /* early return if result is ever non-zero */
+ if (trc) {
+ *res = trc;
+ return rc;
+ }
+ }
+ }
+
+ return rc;
+}
+
static int32_t
ulp_mapper_tbls_process(struct bnxt_ulp_mapper_parms *parms, uint32_t tid)
{
+ struct bnxt_ulp_mapper_cond_info *cond_tbls = NULL;
+ enum bnxt_ulp_cond_list_opc cond_opc;
struct bnxt_ulp_mapper_tbl_info *tbls;
- uint32_t num_tbls, i;
- int32_t rc = -EINVAL;
+ struct bnxt_ulp_mapper_tbl_info *tbl;
+ uint32_t num_tbls, i, num_cond_tbls;
+ int32_t rc = -EINVAL, cond_rc = 0;
+
+ cond_tbls = ulp_mapper_tmpl_reject_list_get(parms, tid,
+ &num_cond_tbls,
+ &cond_opc);
+ /*
+ * Process the reject list if exists, otherwise assume that the
+ * template is allowed.
+ */
+ if (cond_tbls && num_cond_tbls) {
+ rc = ulp_mapper_cond_opc_list_process(parms,
+ cond_opc,
+ cond_tbls,
+ num_cond_tbls,
+ &cond_rc);
+ if (rc)
+ return rc;
+
+ /* Reject the template if True */
+ if (cond_rc) {
+ BNXT_TF_DBG(ERR, "%s Template %d rejected.\n",
+ (parms->tmpl_type ==
+ BNXT_ULP_TEMPLATE_TYPE_CLASS) ?
+ "class" : "action", tid);
+ return -EINVAL;
+ }
+ }
tbls = ulp_mapper_tbl_list_get(parms, tid, &num_tbls);
if (!tbls || !num_tbls) {
BNXT_TF_DBG(ERR, "No %s tables for %d:%d\n",
- (parms->tmpl_type = BNXT_ULP_TEMPLATE_TYPE_CLASS) ?
+ (parms->tmpl_type == BNXT_ULP_TEMPLATE_TYPE_CLASS) ?
"class" : "action", parms->dev_id, tid);
return -EINVAL;
}
for (i = 0; i < num_tbls; i++) {
- struct bnxt_ulp_mapper_tbl_info *tbl = &tbls[i];
+ tbl = &tbls[i];
+ /* Handle the table level opcodes to determine if required. */
if (ulp_mapper_tbl_memtype_opcode_process(parms, tbl))
continue;
- if (ulp_mapper_tbl_cond_opcode_process(parms, tbl))
+ cond_tbls = ulp_mapper_tbl_execute_list_get(parms, tbl,
+ &num_cond_tbls,
+ &cond_opc);
+ rc = ulp_mapper_cond_opc_list_process(parms, cond_opc,
+ cond_tbls, num_cond_tbls,
+ &cond_rc);
+ if (rc) {
+ BNXT_TF_DBG(ERR, "Failed to process cond opc list "
+ "(%d)\n", rc);
+ return rc;
+ }
+ /* Skip the table if False */
+ if (!cond_rc)
continue;
switch (tbl->resource_func) {
struct ulp_rte_act_bitmap *act_bitmap;
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;
struct ulp_regfile *regfile;
struct tf *tfp;
uint32_t *comp_fld;
struct ulp_rte_act_bitmap *act;
struct ulp_rte_act_prop *act_prop;
+ struct ulp_rte_field_bitmap *fld_bitmap;
uint32_t class_tid;
uint32_t act_tid;
uint16_t func_id;
#define BNXT_ULP_CACHE_TBL_IDENT_MAX_NUM 2
#define BNXT_ULP_GLB_RESOURCE_TBL_MAX_SZ 8
#define BNXT_ULP_GLB_TEMPLATE_TBL_MAX_SZ 1
+#define BNXT_ULP_GLB_FIELD_TBL_SHIFT 7
enum bnxt_ulp_action_bit {
BNXT_ULP_ACTION_BIT_MARK = 0x0000000000000001,
BNXT_ULP_CF_IDX_LAST = 46
};
-enum bnxt_ulp_cond_opcode {
- BNXT_ULP_COND_OPCODE_NOP = 0,
- BNXT_ULP_COND_OPCODE_COMP_FIELD_IS_SET = 1,
- BNXT_ULP_COND_OPCODE_ACTION_BIT_IS_SET = 2,
- BNXT_ULP_COND_OPCODE_HDR_BIT_IS_SET = 3,
- BNXT_ULP_COND_OPCODE_COMP_FIELD_NOT_SET = 4,
- BNXT_ULP_COND_OPCODE_ACTION_BIT_NOT_SET = 5,
- BNXT_ULP_COND_OPCODE_HDR_BIT_NOT_SET = 6,
- BNXT_ULP_COND_OPCODE_LAST = 7
+enum bnxt_ulp_cond_list_opc {
+ BNXT_ULP_COND_LIST_OPC_TRUE = 0,
+ BNXT_ULP_COND_LIST_OPC_FALSE = 1,
+ BNXT_ULP_COND_LIST_OPC_OR = 2,
+ BNXT_ULP_COND_LIST_OPC_AND = 3,
+ BNXT_ULP_COND_LIST_OPC_LAST = 4
+};
+
+enum bnxt_ulp_cond_opc {
+ BNXT_ULP_COND_OPC_COMP_FIELD_IS_SET = 0,
+ BNXT_ULP_COND_OPC_COMP_FIELD_NOT_SET = 1,
+ BNXT_ULP_COND_OPC_ACTION_BIT_IS_SET = 2,
+ BNXT_ULP_COND_OPC_ACTION_BIT_NOT_SET = 3,
+ BNXT_ULP_COND_OPC_HDR_BIT_IS_SET = 4,
+ BNXT_ULP_COND_OPC_HDR_BIT_NOT_SET = 5,
+ BNXT_ULP_COND_OPC_FIELD_BIT_IS_SET = 6,
+ BNXT_ULP_COND_OPC_FIELD_BIT_NOT_SET = 7,
+ BNXT_ULP_COND_OPC_REGFILE_IS_SET = 8,
+ BNXT_ULP_COND_OPC_REGFILE_NOT_SET = 9,
+ BNXT_ULP_COND_OPC_LAST = 10
};
enum bnxt_ulp_critical_resource {
.resource_type = TF_TBL_TYPE_ACT_STATS_64,
.resource_sub_type =
BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TYPE_INT_COUNT,
- .cond_opcode = BNXT_ULP_COND_OPCODE_ACTION_BIT_IS_SET,
+ .cond_opcode = BNXT_ULP_COND_OPC_ACTION_BIT_IS_SET,
.cond_operand = BNXT_ULP_ACTION_BIT_COUNT,
.direction = TF_DIR_RX,
.srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO,
.resource_type = TF_TBL_TYPE_ACT_MODIFY_IPV4,
.resource_sub_type =
BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TYPE_NORMAL,
- .cond_opcode = BNXT_ULP_COND_OPCODE_ACTION_BIT_IS_SET,
+ .cond_opcode = BNXT_ULP_COND_OPC_ACTION_BIT_IS_SET,
.cond_operand = BNXT_ULP_ACTION_BIT_SET_IPV4_SRC,
.direction = TF_DIR_RX,
.srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO,
.resource_type = TF_TBL_TYPE_ACT_MODIFY_IPV4,
.resource_sub_type =
BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TYPE_NORMAL,
- .cond_opcode = BNXT_ULP_COND_OPCODE_ACTION_BIT_IS_SET,
+ .cond_opcode = BNXT_ULP_COND_OPC_ACTION_BIT_IS_SET,
.cond_operand = BNXT_ULP_ACTION_BIT_SET_IPV4_DST,
.direction = TF_DIR_RX,
.srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO,
.resource_type = TF_TBL_TYPE_ACT_STATS_64,
.resource_sub_type =
BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TYPE_INT_COUNT,
- .cond_opcode = BNXT_ULP_COND_OPCODE_ACTION_BIT_IS_SET,
+ .cond_opcode = BNXT_ULP_COND_OPC_ACTION_BIT_IS_SET,
.cond_operand = BNXT_ULP_ACTION_BIT_COUNT,
.direction = TF_DIR_RX,
.srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO,
.resource_type = TF_TBL_TYPE_ACT_STATS_64,
.resource_sub_type =
BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TYPE_INT_COUNT,
- .cond_opcode = BNXT_ULP_COND_OPCODE_ACTION_BIT_IS_SET,
+ .cond_opcode = BNXT_ULP_COND_OPC_ACTION_BIT_IS_SET,
.cond_operand = BNXT_ULP_ACTION_BIT_COUNT,
.direction = TF_DIR_RX,
.srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO,
.resource_type = TF_TBL_TYPE_ACT_STATS_64,
.resource_sub_type =
BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TYPE_INT_COUNT,
- .cond_opcode = BNXT_ULP_COND_OPCODE_ACTION_BIT_IS_SET,
+ .cond_opcode = BNXT_ULP_COND_OPC_ACTION_BIT_IS_SET,
.cond_operand = BNXT_ULP_ACTION_BIT_COUNT,
.direction = TF_DIR_TX,
.srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO,
.resource_type = TF_TBL_TYPE_ACT_SP_SMAC_IPV4,
.resource_sub_type =
BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TYPE_NORMAL,
- .cond_opcode = BNXT_ULP_COND_OPCODE_COMP_FIELD_IS_SET,
+ .cond_opcode = BNXT_ULP_COND_OPC_COMP_FIELD_IS_SET,
.cond_operand = BNXT_ULP_CF_IDX_ACT_ENCAP_IPV4_FLAG,
.direction = TF_DIR_TX,
.srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_SEARCH_IF_HIT_SKIP,
.resource_type = TF_TBL_TYPE_ACT_SP_SMAC_IPV6,
.resource_sub_type =
BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TYPE_NORMAL,
- .cond_opcode = BNXT_ULP_COND_OPCODE_COMP_FIELD_IS_SET,
+ .cond_opcode = BNXT_ULP_COND_OPC_COMP_FIELD_IS_SET,
.cond_operand = BNXT_ULP_CF_IDX_ACT_ENCAP_IPV6_FLAG,
.direction = TF_DIR_TX,
.srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_SEARCH_IF_HIT_SKIP,
.resource_type = TF_TBL_TYPE_ACT_STATS_64,
.resource_sub_type =
BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TYPE_INT_COUNT,
- .cond_opcode = BNXT_ULP_COND_OPCODE_ACTION_BIT_IS_SET,
+ .cond_opcode = BNXT_ULP_COND_OPC_ACTION_BIT_IS_SET,
.cond_operand = BNXT_ULP_ACTION_BIT_COUNT,
.direction = TF_DIR_TX,
.srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO,
.resource_type = TF_TBL_TYPE_ACT_MODIFY_IPV4,
.resource_sub_type =
BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TYPE_NORMAL,
- .cond_opcode = BNXT_ULP_COND_OPCODE_ACTION_BIT_IS_SET,
+ .cond_opcode = BNXT_ULP_COND_OPC_ACTION_BIT_IS_SET,
.cond_operand = BNXT_ULP_ACTION_BIT_SET_IPV4_SRC,
.direction = TF_DIR_TX,
.srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO,
.resource_type = TF_TBL_TYPE_ACT_MODIFY_IPV4,
.resource_sub_type =
BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TYPE_NORMAL,
- .cond_opcode = BNXT_ULP_COND_OPCODE_ACTION_BIT_IS_SET,
+ .cond_opcode = BNXT_ULP_COND_OPC_ACTION_BIT_IS_SET,
.cond_operand = BNXT_ULP_ACTION_BIT_SET_IPV4_DST,
.direction = TF_DIR_TX,
.srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO,
.resource_type = TF_TBL_TYPE_ACT_STATS_64,
.resource_sub_type =
BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TYPE_INT_COUNT,
- .cond_opcode = BNXT_ULP_COND_OPCODE_ACTION_BIT_IS_SET,
+ .cond_opcode = BNXT_ULP_COND_OPC_ACTION_BIT_IS_SET,
.cond_operand = BNXT_ULP_ACTION_BIT_COUNT,
.direction = TF_DIR_TX,
.srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO,
.resource_sub_type =
BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TYPE_NORMAL,
.mem_type_opcode = BNXT_ULP_MEM_TYPE_OPCODE_EXECUTE_IF_INT,
- .cond_opcode = BNXT_ULP_COND_OPCODE_ACTION_BIT_IS_SET,
+ .cond_opcode = BNXT_ULP_COND_OPC_ACTION_BIT_IS_SET,
.cond_operand = BNXT_ULP_ACTION_BIT_PUSH_VLAN,
.direction = TF_DIR_TX,
.srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO,
.resource_sub_type =
BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TYPE_NORMAL,
.mem_type_opcode = BNXT_ULP_MEM_TYPE_OPCODE_EXECUTE_IF_EXT,
- .cond_opcode = BNXT_ULP_COND_OPCODE_ACTION_BIT_NOT_SET,
+ .cond_opcode = BNXT_ULP_COND_OPC_ACTION_BIT_NOT_SET,
.cond_operand = BNXT_ULP_ACTION_BIT_PUSH_VLAN,
.direction = TF_DIR_TX,
.srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO,
.resource_sub_type =
BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TYPE_NORMAL,
.mem_type_opcode = BNXT_ULP_MEM_TYPE_OPCODE_EXECUTE_IF_EXT,
- .cond_opcode = BNXT_ULP_COND_OPCODE_ACTION_BIT_IS_SET,
+ .cond_opcode = BNXT_ULP_COND_OPC_ACTION_BIT_IS_SET,
.cond_operand = BNXT_ULP_ACTION_BIT_PUSH_VLAN,
.direction = TF_DIR_TX,
.srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO,
{ /* class_tid: 2, stingray, table: l2_cntxt_tcam_vfr_0 */
.resource_func = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,
.resource_type = TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_LOW,
- .cond_opcode = BNXT_ULP_COND_OPCODE_COMP_FIELD_IS_SET,
+ .cond_opcode = BNXT_ULP_COND_OPC_COMP_FIELD_IS_SET,
.cond_operand = BNXT_ULP_CF_IDX_VFR_MODE,
.direction = TF_DIR_TX,
.srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO,
.resource_type = TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_LOW,
.resource_sub_type =
BNXT_ULP_RESOURCE_SUB_TYPE_CACHE_TYPE_L2_CNTXT_TCAM,
- .cond_opcode = BNXT_ULP_COND_OPCODE_COMP_FIELD_NOT_SET,
+ .cond_opcode = BNXT_ULP_COND_OPC_COMP_FIELD_NOT_SET,
.cond_operand = BNXT_ULP_CF_IDX_VFR_MODE,
.direction = TF_DIR_TX,
.key_start_idx = 27,
{ /* class_tid: 2, stingray, table: l2_cntxt_tcam_0 */
.resource_func = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,
.resource_type = TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_LOW,
- .cond_opcode = BNXT_ULP_COND_OPCODE_COMP_FIELD_NOT_SET,
+ .cond_opcode = BNXT_ULP_COND_OPC_COMP_FIELD_NOT_SET,
.cond_operand = BNXT_ULP_CF_IDX_VFR_MODE,
.direction = TF_DIR_TX,
.srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO,
.resource_type = TF_TBL_TYPE_ACT_STATS_64,
.resource_sub_type =
BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TYPE_INT_COUNT_ACC,
- .cond_opcode = BNXT_ULP_COND_OPCODE_ACTION_BIT_IS_SET,
+ .cond_opcode = BNXT_ULP_COND_OPC_ACTION_BIT_IS_SET,
.cond_operand = BNXT_ULP_ACTION_BIT_COUNT,
.direction = TF_DIR_RX,
.srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO,
BNXT_ULP_ACT_PROP_SZ_LAST
};
+uint8_t ulp_glb_field_tbl[211] = {
+ [0] = 0,
+ [1] = 0,
+ [2] = 0,
+ [3] = 0,
+ [4] = 0,
+ [5] = 0,
+ [6] = 0,
+ [7] = 0,
+ [8] = 0,
+ [9] = 0,
+ [10] = 0,
+ [11] = 0,
+ [12] = 0,
+ [13] = 0,
+ [14] = 0,
+ [15] = 0,
+ [16] = 0,
+ [17] = 0,
+ [18] = 0,
+ [19] = 0,
+ [20] = 0,
+ [21] = 0,
+ [22] = 0,
+ [23] = 0,
+ [24] = 0,
+ [25] = 0,
+ [26] = 0,
+ [27] = 0,
+ [28] = 0,
+ [29] = 0,
+ [30] = 0,
+ [31] = 0,
+ [32] = 0,
+ [33] = 0,
+ [34] = 0,
+ [35] = 0,
+ [36] = 0,
+ [37] = 0,
+ [38] = 0,
+ [39] = 0,
+ [40] = 0,
+ [41] = 0,
+ [42] = 0,
+ [43] = 0,
+ [44] = 0,
+ [45] = 0,
+ [46] = 0,
+ [47] = 0,
+ [48] = 0,
+ [49] = 0,
+ [50] = 0,
+ [51] = 0,
+ [52] = 0,
+ [53] = 0,
+ [54] = 0,
+ [55] = 0,
+ [56] = 0,
+ [57] = 0,
+ [58] = 0,
+ [59] = 0,
+ [60] = 0,
+ [61] = 0,
+ [62] = 0,
+ [63] = 0,
+ [64] = 0,
+ [65] = 0,
+ [66] = 0,
+ [67] = 0,
+ [68] = 0,
+ [69] = 0,
+ [70] = 0,
+ [71] = 0,
+ [72] = 0,
+ [73] = 0,
+ [74] = 0,
+ [75] = 0,
+ [76] = 0,
+ [77] = 0,
+ [78] = 0,
+ [79] = 0,
+ [80] = 0,
+ [81] = 0,
+ [82] = 0,
+ [83] = 0,
+ [84] = 0,
+ [85] = 0,
+ [86] = 0,
+ [87] = 0,
+ [88] = 0,
+ [89] = 0,
+ [90] = 0,
+ [91] = 0,
+ [92] = 0,
+ [93] = 0,
+ [94] = 0,
+ [95] = 0,
+ [96] = 0,
+ [97] = 0,
+ [98] = 0,
+ [99] = 0,
+ [100] = 0,
+ [101] = 0,
+ [102] = 0,
+ [103] = 0,
+ [104] = 0,
+ [105] = 0,
+ [106] = 0,
+ [107] = 0,
+ [108] = 0,
+ [109] = 0,
+ [110] = 0,
+ [111] = 0,
+ [112] = 0,
+ [113] = 0,
+ [114] = 0,
+ [115] = 0,
+ [116] = 0,
+ [117] = 0,
+ [118] = 0,
+ [119] = 0,
+ [120] = 0,
+ [121] = 0,
+ [122] = 0,
+ [123] = 0,
+ [124] = 0,
+ [125] = 0,
+ [126] = 0,
+ [127] = 0,
+ /* svif.index */
+ [128] = 1,
+ /* o_eth.dmac */
+ [129] = 2,
+ [130] = 0,
+ /* o_eth.smac */
+ [131] = 3,
+ [132] = 0,
+ /* o_eth.type */
+ [133] = 4,
+ [134] = 0,
+ /* o_ipv4.ver */
+ [135] = 11,
+ [136] = 0,
+ /* o_ipv4.tos */
+ [137] = 12,
+ [138] = 0,
+ /* o_ipv4.len */
+ [139] = 13,
+ [140] = 0,
+ /* o_ipv4.frag_id */
+ [141] = 14,
+ [142] = 0,
+ /* o_ipv4.frag_off */
+ [143] = 15,
+ [144] = 0,
+ /* o_ipv4.ttl */
+ [145] = 16,
+ [146] = 0,
+ /* o_ipv4.proto_id */
+ [147] = 17,
+ [148] = 0,
+ /* o_ipv4.csum */
+ [149] = 18,
+ [150] = 0,
+ /* o_ipv4.src_addr */
+ [151] = 19,
+ [152] = 0,
+ /* o_ipv4.dst_addr */
+ [153] = 20,
+ [154] = 0,
+ [155] = 0,
+ [156] = 0,
+ [157] = 0,
+ [158] = 0,
+ [159] = 0,
+ [160] = 0,
+ [161] = 0,
+ [162] = 0,
+ [163] = 0,
+ [164] = 0,
+ [165] = 0,
+ [166] = 0,
+ [167] = 0,
+ [168] = 0,
+ [169] = 0,
+ [170] = 0,
+ [171] = 0,
+ [172] = 0,
+ [173] = 0,
+ [174] = 0,
+ /* o_tcp.src_port */
+ [175] = 21,
+ [176] = 0,
+ /* o_tcp.dst_port */
+ [177] = 22,
+ [178] = 0,
+ /* o_tcp.sent_seq */
+ [179] = 23,
+ [180] = 0,
+ /* o_tcp.recv_ack */
+ [181] = 24,
+ [182] = 0,
+ /* o_tcp.data_off */
+ [183] = 25,
+ [184] = 0,
+ /* o_tcp.tcp_flags */
+ [185] = 26,
+ [186] = 0,
+ /* o_tcp.rx_win */
+ [187] = 27,
+ [188] = 0,
+ /* o_tcp.csum */
+ [189] = 28,
+ [190] = 0,
+ /* o_tcp.urp */
+ [191] = 29,
+ [192] = 0,
+ [193] = 0,
+ [194] = 0,
+ [195] = 0,
+ [196] = 0,
+ [197] = 0,
+ [198] = 0,
+ [199] = 0,
+ [200] = 0,
+ /* oo_vlan.cfi_pri */
+ [201] = 5,
+ /* oi_vlan.cfi_pri */
+ [202] = 8,
+ [203] = 0,
+ [204] = 0,
+ /* oo_vlan.vid */
+ [205] = 6,
+ /* oi_vlan.vid */
+ [206] = 9,
+ [207] = 0,
+ [208] = 0,
+ /* oo_vlan.type */
+ [209] = 7,
+ /* oi_vlan.type */
+ [210] = 10
+};
+
/*
* This structure has to be indexed based on the rte_flow_action_type that is
* part of DPDK. The below array is list of parsing functions for each of the
extern struct
bnxt_ulp_mapper_result_field_info ulp_stingray_act_result_field_list[];
+
+extern uint8_t ulp_glb_field_tbl[];
#endif
.resource_type = TF_TBL_TYPE_ACT_STATS_64,
.resource_sub_type =
BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TYPE_INT_COUNT,
- .cond_opcode = BNXT_ULP_COND_OPCODE_ACTION_BIT_IS_SET,
+ .cond_opcode = BNXT_ULP_COND_OPC_ACTION_BIT_IS_SET,
.cond_operand = BNXT_ULP_ACTION_BIT_COUNT,
.direction = TF_DIR_RX,
.srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO,
.resource_type = TF_TBL_TYPE_ACT_MODIFY_IPV4,
.resource_sub_type =
BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TYPE_NORMAL,
- .cond_opcode = BNXT_ULP_COND_OPCODE_ACTION_BIT_IS_SET,
+ .cond_opcode = BNXT_ULP_COND_OPC_ACTION_BIT_IS_SET,
.cond_operand = BNXT_ULP_ACTION_BIT_SET_IPV4_SRC,
.direction = TF_DIR_RX,
.srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO,
.resource_type = TF_TBL_TYPE_ACT_MODIFY_IPV4,
.resource_sub_type =
BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TYPE_NORMAL,
- .cond_opcode = BNXT_ULP_COND_OPCODE_ACTION_BIT_IS_SET,
+ .cond_opcode = BNXT_ULP_COND_OPC_ACTION_BIT_IS_SET,
.cond_operand = BNXT_ULP_ACTION_BIT_SET_IPV4_DST,
.direction = TF_DIR_RX,
.srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO,
.resource_type = TF_TBL_TYPE_ACT_STATS_64,
.resource_sub_type =
BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TYPE_INT_COUNT,
- .cond_opcode = BNXT_ULP_COND_OPCODE_ACTION_BIT_IS_SET,
+ .cond_opcode = BNXT_ULP_COND_OPC_ACTION_BIT_IS_SET,
.cond_operand = BNXT_ULP_ACTION_BIT_COUNT,
.direction = TF_DIR_RX,
.srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO,
.resource_type = TF_TBL_TYPE_ACT_STATS_64,
.resource_sub_type =
BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TYPE_INT_COUNT,
- .cond_opcode = BNXT_ULP_COND_OPCODE_ACTION_BIT_IS_SET,
+ .cond_opcode = BNXT_ULP_COND_OPC_ACTION_BIT_IS_SET,
.cond_operand = BNXT_ULP_ACTION_BIT_COUNT,
.direction = TF_DIR_RX,
.srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO,
.resource_type = TF_TBL_TYPE_ACT_STATS_64,
.resource_sub_type =
BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TYPE_INT_COUNT,
- .cond_opcode = BNXT_ULP_COND_OPCODE_ACTION_BIT_IS_SET,
+ .cond_opcode = BNXT_ULP_COND_OPC_ACTION_BIT_IS_SET,
.cond_operand = BNXT_ULP_ACTION_BIT_COUNT,
.direction = TF_DIR_TX,
.srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO,
.resource_type = TF_TBL_TYPE_ACT_SP_SMAC_IPV4,
.resource_sub_type =
BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TYPE_NORMAL,
- .cond_opcode = BNXT_ULP_COND_OPCODE_COMP_FIELD_IS_SET,
+ .cond_opcode = BNXT_ULP_COND_OPC_COMP_FIELD_IS_SET,
.cond_operand = BNXT_ULP_CF_IDX_ACT_ENCAP_IPV4_FLAG,
.direction = TF_DIR_TX,
.srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_SEARCH_IF_HIT_SKIP,
.resource_type = TF_TBL_TYPE_ACT_SP_SMAC_IPV6,
.resource_sub_type =
BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TYPE_NORMAL,
- .cond_opcode = BNXT_ULP_COND_OPCODE_COMP_FIELD_IS_SET,
+ .cond_opcode = BNXT_ULP_COND_OPC_COMP_FIELD_IS_SET,
.cond_operand = BNXT_ULP_CF_IDX_ACT_ENCAP_IPV6_FLAG,
.direction = TF_DIR_TX,
.srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_SEARCH_IF_HIT_SKIP,
.resource_type = TF_TBL_TYPE_ACT_STATS_64,
.resource_sub_type =
BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TYPE_INT_COUNT,
- .cond_opcode = BNXT_ULP_COND_OPCODE_ACTION_BIT_IS_SET,
+ .cond_opcode = BNXT_ULP_COND_OPC_ACTION_BIT_IS_SET,
.cond_operand = BNXT_ULP_ACTION_BIT_COUNT,
.direction = TF_DIR_TX,
.srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO,
.resource_type = TF_TBL_TYPE_ACT_MODIFY_IPV4,
.resource_sub_type =
BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TYPE_NORMAL,
- .cond_opcode = BNXT_ULP_COND_OPCODE_ACTION_BIT_IS_SET,
+ .cond_opcode = BNXT_ULP_COND_OPC_ACTION_BIT_IS_SET,
.cond_operand = BNXT_ULP_ACTION_BIT_SET_IPV4_SRC,
.direction = TF_DIR_TX,
.srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO,
.resource_type = TF_TBL_TYPE_ACT_MODIFY_IPV4,
.resource_sub_type =
BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TYPE_NORMAL,
- .cond_opcode = BNXT_ULP_COND_OPCODE_ACTION_BIT_IS_SET,
+ .cond_opcode = BNXT_ULP_COND_OPC_ACTION_BIT_IS_SET,
.cond_operand = BNXT_ULP_ACTION_BIT_SET_IPV4_DST,
.direction = TF_DIR_TX,
.srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO,
.resource_type = TF_TBL_TYPE_ACT_STATS_64,
.resource_sub_type =
BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TYPE_INT_COUNT,
- .cond_opcode = BNXT_ULP_COND_OPCODE_ACTION_BIT_IS_SET,
+ .cond_opcode = BNXT_ULP_COND_OPC_ACTION_BIT_IS_SET,
.cond_operand = BNXT_ULP_ACTION_BIT_COUNT,
.direction = TF_DIR_TX,
.srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO,
.resource_sub_type =
BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TYPE_NORMAL,
.mem_type_opcode = BNXT_ULP_MEM_TYPE_OPCODE_EXECUTE_IF_INT,
- .cond_opcode = BNXT_ULP_COND_OPCODE_ACTION_BIT_IS_SET,
+ .cond_opcode = BNXT_ULP_COND_OPC_ACTION_BIT_IS_SET,
.cond_operand = BNXT_ULP_ACTION_BIT_PUSH_VLAN,
.direction = TF_DIR_TX,
.srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO,
.resource_sub_type =
BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TYPE_NORMAL,
.mem_type_opcode = BNXT_ULP_MEM_TYPE_OPCODE_EXECUTE_IF_EXT,
- .cond_opcode = BNXT_ULP_COND_OPCODE_ACTION_BIT_NOT_SET,
+ .cond_opcode = BNXT_ULP_COND_OPC_ACTION_BIT_NOT_SET,
.cond_operand = BNXT_ULP_ACTION_BIT_PUSH_VLAN,
.direction = TF_DIR_TX,
.srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO,
.resource_sub_type =
BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TYPE_NORMAL,
.mem_type_opcode = BNXT_ULP_MEM_TYPE_OPCODE_EXECUTE_IF_EXT,
- .cond_opcode = BNXT_ULP_COND_OPCODE_ACTION_BIT_IS_SET,
+ .cond_opcode = BNXT_ULP_COND_OPC_ACTION_BIT_IS_SET,
.cond_operand = BNXT_ULP_ACTION_BIT_PUSH_VLAN,
.direction = TF_DIR_TX,
.srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO,
{ /* class_tid: 2, wh_plus, table: l2_cntxt_tcam_vfr_0 */
.resource_func = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,
.resource_type = TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_LOW,
- .cond_opcode = BNXT_ULP_COND_OPCODE_COMP_FIELD_IS_SET,
+ .cond_opcode = BNXT_ULP_COND_OPC_COMP_FIELD_IS_SET,
.cond_operand = BNXT_ULP_CF_IDX_VFR_MODE,
.direction = TF_DIR_TX,
.srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO,
.resource_type = TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_LOW,
.resource_sub_type =
BNXT_ULP_RESOURCE_SUB_TYPE_CACHE_TYPE_L2_CNTXT_TCAM,
- .cond_opcode = BNXT_ULP_COND_OPCODE_COMP_FIELD_NOT_SET,
+ .cond_opcode = BNXT_ULP_COND_OPC_COMP_FIELD_NOT_SET,
.cond_operand = BNXT_ULP_CF_IDX_VFR_MODE,
.direction = TF_DIR_TX,
.key_start_idx = 27,
{ /* class_tid: 2, wh_plus, table: l2_cntxt_tcam_0 */
.resource_func = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,
.resource_type = TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_LOW,
- .cond_opcode = BNXT_ULP_COND_OPCODE_COMP_FIELD_NOT_SET,
+ .cond_opcode = BNXT_ULP_COND_OPC_COMP_FIELD_NOT_SET,
.cond_operand = BNXT_ULP_CF_IDX_VFR_MODE,
.direction = TF_DIR_TX,
.srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO,
.resource_type = TF_TBL_TYPE_ACT_STATS_64,
.resource_sub_type =
BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TYPE_INT_COUNT_ACC,
- .cond_opcode = BNXT_ULP_COND_OPCODE_ACTION_BIT_IS_SET,
+ .cond_opcode = BNXT_ULP_COND_OPC_ACTION_BIT_IS_SET,
.cond_operand = BNXT_ULP_ACTION_BIT_COUNT,
.direction = TF_DIR_RX,
.srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO,
extern struct bnxt_ulp_act_match_info ulp_act_match_list[];
/* Device Specific Tables for mapper */
+struct bnxt_ulp_mapper_cond_info {
+ enum bnxt_ulp_cond_opc cond_opcode;
+ uint32_t cond_operand;
+};
+
+struct bnxt_ulp_mapper_cond_list_info {
+ enum bnxt_ulp_cond_list_opc cond_list_opcode;
+ uint32_t cond_start_idx;
+ uint32_t cond_nums;
+};
+
struct ulp_template_device_tbls {
struct bnxt_ulp_mapper_tbl_list_info *tmpl_list;
struct bnxt_ulp_mapper_tbl_info *tbl_list;
struct bnxt_ulp_mapper_key_field_info *key_field_list;
struct bnxt_ulp_mapper_result_field_info *result_field_list;
struct bnxt_ulp_mapper_ident_info *ident_list;
+ struct bnxt_ulp_mapper_cond_info *cond_list;
};
/* Device specific parameters */
uint32_t device_name;
uint32_t start_tbl_idx;
uint32_t num_tbls;
+ struct bnxt_ulp_mapper_cond_list_info reject_info;
};
struct bnxt_ulp_mapper_tbl_info {
enum bnxt_ulp_resource_func resource_func;
uint32_t resource_type; /* TF_ enum type */
enum bnxt_ulp_resource_sub_type resource_sub_type;
- enum bnxt_ulp_cond_opcode cond_opcode;
- uint32_t cond_operand;
+ struct bnxt_ulp_mapper_cond_list_info execute_info;
+ enum bnxt_ulp_cond_opc cond_opcode;
+ uint32_t cond_operand;
enum bnxt_ulp_mem_type_opcode mem_type_opcode;
uint8_t direction;
uint32_t priority;