From: Venkat Duvvuru <venkatkumar.duvvuru@broadcom.com>
To: dev@dpdk.org
Cc: Mike Baucom <michael.baucom@broadcom.com>,
Kishore Padmanabha <kishore.padmanabha@broadcom.com>,
Venkat Duvvuru <venkatkumar.duvvuru@broadcom.com>
Subject: [dpdk-dev] [PATCH v2 19/34] net/bnxt: add support to process action tables
Date: Tue, 14 Apr 2020 01:09:56 +0530 [thread overview]
Message-ID: <1586806811-21736-20-git-send-email-venkatkumar.duvvuru@broadcom.com> (raw)
In-Reply-To: <1586806811-21736-1-git-send-email-venkatkumar.duvvuru@broadcom.com>
From: Mike Baucom <michael.baucom@broadcom.com>
This patch processes the action template. Iterates through the list
of action info templates and processes it.
Signed-off-by: Mike Baucom <michael.baucom@broadcom.com>
Signed-off-by: Kishore Padmanabha <kishore.padmanabha@broadcom.com>
Signed-off-by: Venkat Duvvuru <venkatkumar.duvvuru@broadcom.com>
Reviewed-by: Lance Richardson <lance.richardson@broadcom.com>
---
drivers/net/bnxt/Makefile | 1 +
drivers/net/bnxt/tf_ulp/ulp_flow_db.c | 136 ++++++++++
drivers/net/bnxt/tf_ulp/ulp_flow_db.h | 25 ++
drivers/net/bnxt/tf_ulp/ulp_mapper.c | 364 ++++++++++++++++++++++++++
drivers/net/bnxt/tf_ulp/ulp_mapper.h | 39 +++
drivers/net/bnxt/tf_ulp/ulp_template_db.c | 243 +++++++++++++++++
drivers/net/bnxt/tf_ulp/ulp_template_db.h | 104 ++++++++
drivers/net/bnxt/tf_ulp/ulp_template_struct.h | 48 +++-
8 files changed, 957 insertions(+), 3 deletions(-)
create mode 100644 drivers/net/bnxt/tf_ulp/ulp_mapper.c
create mode 100644 drivers/net/bnxt/tf_ulp/ulp_mapper.h
diff --git a/drivers/net/bnxt/Makefile b/drivers/net/bnxt/Makefile
index 4e0dea1..f464d9e 100644
--- a/drivers/net/bnxt/Makefile
+++ b/drivers/net/bnxt/Makefile
@@ -62,6 +62,7 @@ SRCS-$(CONFIG_RTE_LIBRTE_BNXT_PMD) += tf_ulp/ulp_mark_mgr.c
SRCS-$(CONFIG_RTE_LIBRTE_BNXT_PMD) += tf_ulp/ulp_flow_db.c
SRCS-$(CONFIG_RTE_LIBRTE_BNXT_PMD) += tf_ulp/ulp_template_db.c
SRCS-$(CONFIG_RTE_LIBRTE_BNXT_PMD) += tf_ulp/ulp_utils.c
+SRCS-$(CONFIG_RTE_LIBRTE_BNXT_PMD) += tf_ulp/ulp_mapper.c
#
# Export include files
diff --git a/drivers/net/bnxt/tf_ulp/ulp_flow_db.c b/drivers/net/bnxt/tf_ulp/ulp_flow_db.c
index 3dd39c1..0e7b433 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_flow_db.c
+++ b/drivers/net/bnxt/tf_ulp/ulp_flow_db.c
@@ -7,7 +7,68 @@
#include "bnxt.h"
#include "bnxt_tf_common.h"
#include "ulp_flow_db.h"
+#include "ulp_utils.h"
#include "ulp_template_struct.h"
+#include "ulp_mapper.h"
+
+#define ULP_FLOW_DB_RES_DIR_BIT 31
+#define ULP_FLOW_DB_RES_DIR_MASK 0x80000000
+#define ULP_FLOW_DB_RES_FUNC_BITS 28
+#define ULP_FLOW_DB_RES_FUNC_MASK 0x70000000
+#define ULP_FLOW_DB_RES_NXT_MASK 0x0FFFFFFF
+
+/* Macro to copy the nxt_resource_idx */
+#define ULP_FLOW_DB_RES_NXT_SET(dst, src) {(dst) |= ((src) &\
+ ULP_FLOW_DB_RES_NXT_MASK); }
+#define ULP_FLOW_DB_RES_NXT_RESET(dst) ((dst) &= ~(ULP_FLOW_DB_RES_NXT_MASK))
+
+/*
+ * Helper function to allocate the flow table and initialize
+ * is set.No validation being done in this function.
+ *
+ * flow_tbl [in] Ptr to flow table
+ * idx [in] The index to bit to be set or reset.
+ *
+ * returns 1 on set or 0 if not set.
+ */
+static int32_t
+ulp_flow_db_active_flow_is_set(struct bnxt_ulp_flow_tbl *flow_tbl,
+ uint32_t idx)
+{
+ uint32_t active_index;
+
+ active_index = idx / ULP_INDEX_BITMAP_SIZE;
+ return ULP_INDEX_BITMAP_GET(flow_tbl->active_flow_tbl[active_index],
+ idx);
+}
+
+/*
+ * Helper function to copy the resource params to resource info
+ * No validation being done in this function.
+ *
+ * resource_info [out] Ptr to resource information
+ * params [in] The input params from the caller
+ * returns none
+ */
+static void
+ulp_flow_db_res_params_to_info(struct ulp_fdb_resource_info *resource_info,
+ struct ulp_flow_db_res_params *params)
+{
+ resource_info->nxt_resource_idx |= ((params->direction <<
+ ULP_FLOW_DB_RES_DIR_BIT) &
+ ULP_FLOW_DB_RES_DIR_MASK);
+ resource_info->nxt_resource_idx |= ((params->resource_func <<
+ ULP_FLOW_DB_RES_FUNC_BITS) &
+ ULP_FLOW_DB_RES_FUNC_MASK);
+
+ if (params->resource_func != BNXT_ULP_RESOURCE_FUNC_EM_TABLE) {
+ resource_info->resource_hndl = (uint32_t)params->resource_hndl;
+ resource_info->resource_type = params->resource_type;
+
+ } else {
+ resource_info->resource_em_handle = params->resource_hndl;
+ }
+}
/*
* Helper function to allocate the flow table and initialize
@@ -185,3 +246,78 @@ int32_t ulp_flow_db_deinit(struct bnxt_ulp_context *ulp_ctxt)
return 0;
}
+
+/*
+ * Allocate the flow database entry.
+ * The params->critical_resource has to be set to 0 to allocate a new resource.
+ *
+ * ulp_ctxt [in] Ptr to ulp_context
+ * tbl_idx [in] Specify it is regular or default flow
+ * fid [in] The index to the flow entry
+ * params [in] The contents to be copied into resource
+ *
+ * returns 0 on success and negative on failure.
+ */
+int32_t ulp_flow_db_resource_add(struct bnxt_ulp_context *ulp_ctxt,
+ enum bnxt_ulp_flow_db_tables tbl_idx,
+ uint32_t fid,
+ struct ulp_flow_db_res_params *params)
+{
+ struct bnxt_ulp_flow_db *flow_db;
+ struct bnxt_ulp_flow_tbl *flow_tbl;
+ struct ulp_fdb_resource_info *resource, *fid_resource;
+ uint32_t idx;
+
+ flow_db = bnxt_ulp_cntxt_ptr2_flow_db_get(ulp_ctxt);
+ if (!flow_db) {
+ BNXT_TF_DBG(ERR, "Invalid Arguments\n");
+ return -EINVAL;
+ }
+
+ if (tbl_idx < 0 || tbl_idx >= BNXT_ULP_FLOW_TABLE_MAX) {
+ BNXT_TF_DBG(ERR, "Invalid table index\n");
+ return -EINVAL;
+ }
+ flow_tbl = &flow_db->flow_tbl[tbl_idx];
+
+ /* check for max flows */
+ if (fid >= flow_tbl->num_flows || !fid) {
+ BNXT_TF_DBG(ERR, "Invalid flow index\n");
+ return -EINVAL;
+ }
+
+ /* check if the flow is active or not */
+ if (!ulp_flow_db_active_flow_is_set(flow_tbl, fid)) {
+ BNXT_TF_DBG(ERR, "flow does not exist\n");
+ return -EINVAL;
+ }
+
+ /* check for max resource */
+ if ((flow_tbl->num_flows + 1) >= flow_tbl->tail_index) {
+ BNXT_TF_DBG(ERR, "Flow db has reached max resources\n");
+ return -ENOMEM;
+ }
+ fid_resource = &flow_tbl->flow_resources[fid];
+
+ if (!params->critical_resource) {
+ /* Not the critical_resource so allocate a resource */
+ idx = flow_tbl->flow_tbl_stack[flow_tbl->tail_index];
+ resource = &flow_tbl->flow_resources[idx];
+ flow_tbl->tail_index--;
+
+ /* Update the chain list of resource*/
+ ULP_FLOW_DB_RES_NXT_SET(resource->nxt_resource_idx,
+ fid_resource->nxt_resource_idx);
+ /* update the contents */
+ ulp_flow_db_res_params_to_info(resource, params);
+ ULP_FLOW_DB_RES_NXT_RESET(fid_resource->nxt_resource_idx);
+ ULP_FLOW_DB_RES_NXT_SET(fid_resource->nxt_resource_idx,
+ idx);
+ } else {
+ /* critical resource. Just update the fid resource */
+ ulp_flow_db_res_params_to_info(fid_resource, params);
+ }
+
+ /* all good, return success */
+ return 0;
+}
diff --git a/drivers/net/bnxt/tf_ulp/ulp_flow_db.h b/drivers/net/bnxt/tf_ulp/ulp_flow_db.h
index a2ee8fa..f6055a5 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_flow_db.h
+++ b/drivers/net/bnxt/tf_ulp/ulp_flow_db.h
@@ -53,6 +53,15 @@ struct bnxt_ulp_flow_db {
struct bnxt_ulp_flow_tbl flow_tbl[BNXT_ULP_FLOW_TABLE_MAX];
};
+/* flow db resource params to add resources */
+struct ulp_flow_db_res_params {
+ enum tf_dir direction;
+ enum bnxt_ulp_resource_func resource_func;
+ uint64_t resource_hndl;
+ uint32_t resource_type;
+ uint32_t critical_resource;
+};
+
/*
* Initialize the flow database. Memory is allocated in this
* call and assigned to the flow database.
@@ -74,4 +83,20 @@ int32_t ulp_flow_db_init(struct bnxt_ulp_context *ulp_ctxt);
*/
int32_t ulp_flow_db_deinit(struct bnxt_ulp_context *ulp_ctxt);
+/*
+ * Allocate the flow database entry.
+ * The params->critical_resource has to be set to 0 to allocate a new resource.
+ *
+ * ulp_ctxt [in] Ptr to ulp_context
+ * tbl_idx [in] Specify it is regular or default flow
+ * fid [in] The index to the flow entry
+ * params [in] The contents to be copied into resource
+ *
+ * returns 0 on success and negative on failure.
+ */
+int32_t ulp_flow_db_resource_add(struct bnxt_ulp_context *ulp_ctxt,
+ enum bnxt_ulp_flow_db_tables tbl_idx,
+ uint32_t fid,
+ struct ulp_flow_db_res_params *params);
+
#endif /* _ULP_FLOW_DB_H_ */
diff --git a/drivers/net/bnxt/tf_ulp/ulp_mapper.c b/drivers/net/bnxt/tf_ulp/ulp_mapper.c
new file mode 100644
index 0000000..9cfc382
--- /dev/null
+++ b/drivers/net/bnxt/tf_ulp/ulp_mapper.c
@@ -0,0 +1,364 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2014-2020 Broadcom
+ * All rights reserved.
+ */
+
+#include <rte_log.h>
+#include "bnxt.h"
+#include "ulp_template_db.h"
+#include "ulp_template_struct.h"
+#include "bnxt_tf_common.h"
+#include "ulp_utils.h"
+#include "bnxt_ulp.h"
+#include "tfp.h"
+#include "tf_ext_flow_handle.h"
+#include "ulp_mark_mgr.h"
+#include "ulp_flow_db.h"
+#include "ulp_mapper.h"
+
+int32_t
+ulp_mapper_action_tbls_process(struct bnxt_ulp_mapper_parms *parms);
+
+/*
+ * Get the size of the action property for a given index.
+ *
+ * idx [in] The index for the action property
+ *
+ * returns the size of the action property.
+ */
+static uint32_t
+ulp_mapper_act_prop_size_get(uint32_t idx)
+{
+ if (idx >= BNXT_ULP_ACT_PROP_IDX_LAST)
+ return 0;
+ return ulp_act_prop_map_table[idx];
+}
+
+/*
+ * Get the list of result fields that implement the flow action
+ *
+ * tbl [in] A single table instance to get the results fields
+ * from num_flds [out] The number of data fields in the returned
+ * array
+ * returns array of data fields, or NULL on error
+ */
+static struct bnxt_ulp_mapper_result_field_info *
+ulp_mapper_act_result_fields_get(struct bnxt_ulp_mapper_act_tbl_info *tbl,
+ uint32_t *num_rslt_flds,
+ uint32_t *num_encap_flds)
+{
+ uint32_t idx;
+
+ if (!tbl || !num_rslt_flds || !num_encap_flds)
+ return NULL;
+
+ idx = tbl->result_start_idx;
+ *num_rslt_flds = tbl->result_num_fields;
+ *num_encap_flds = tbl->encap_num_fields;
+
+ /* NOTE: Need template to provide range checking define */
+ return &ulp_act_result_field_list[idx];
+}
+
+static int32_t
+ulp_mapper_result_field_process(struct bnxt_ulp_mapper_parms *parms,
+ struct bnxt_ulp_mapper_result_field_info *fld,
+ struct ulp_blob *blob)
+{
+ uint16_t idx, size_idx;
+ uint8_t *val = NULL;
+ uint64_t regval;
+ uint32_t val_size = 0, field_size = 0;
+
+ switch (fld->result_opcode) {
+ case BNXT_ULP_RESULT_OPC_SET_TO_CONSTANT:
+ val = fld->result_operand;
+ if (!ulp_blob_push(blob, val, fld->field_bit_size)) {
+ BNXT_TF_DBG(ERR, "Failed to add field\n");
+ return -EINVAL;
+ }
+ break;
+ case BNXT_ULP_RESULT_OPC_SET_TO_ACT_PROP:
+ if (!ulp_operand_read(fld->result_operand,
+ (uint8_t *)&idx, sizeof(uint16_t))) {
+ BNXT_TF_DBG(ERR, "operand read failed\n");
+ return -EINVAL;
+ }
+ idx = tfp_be_to_cpu_16(idx);
+
+ if (idx >= BNXT_ULP_ACT_PROP_IDX_LAST) {
+ BNXT_TF_DBG(ERR, "act_prop[%d] oob\n", idx);
+ return -EINVAL;
+ }
+ val = &parms->act_prop->act_details[idx];
+ field_size = ulp_mapper_act_prop_size_get(idx);
+ if (fld->field_bit_size < ULP_BYTE_2_BITS(field_size)) {
+ field_size = field_size -
+ ((fld->field_bit_size + 7) / 8);
+ val += field_size;
+ }
+ if (!ulp_blob_push(blob, val, fld->field_bit_size)) {
+ BNXT_TF_DBG(ERR, "push field failed\n");
+ return -EINVAL;
+ }
+ break;
+ case BNXT_ULP_RESULT_OPC_SET_TO_ACT_PROP_SZ:
+ if (!ulp_operand_read(fld->result_operand,
+ (uint8_t *)&idx, sizeof(uint16_t))) {
+ BNXT_TF_DBG(ERR, "operand read failed\n");
+ return -EINVAL;
+ }
+ idx = tfp_be_to_cpu_16(idx);
+
+ if (idx >= BNXT_ULP_ACT_PROP_IDX_LAST) {
+ BNXT_TF_DBG(ERR, "act_prop[%d] oob\n", idx);
+ return -EINVAL;
+ }
+ val = &parms->act_prop->act_details[idx];
+
+ /* get the size index next */
+ if (!ulp_operand_read(&fld->result_operand[sizeof(uint16_t)],
+ (uint8_t *)&size_idx, sizeof(uint16_t))) {
+ BNXT_TF_DBG(ERR, "operand read failed\n");
+ return -EINVAL;
+ }
+ size_idx = tfp_be_to_cpu_16(size_idx);
+
+ if (size_idx >= BNXT_ULP_ACT_PROP_IDX_LAST) {
+ BNXT_TF_DBG(ERR, "act_prop[%d] oob\n", size_idx);
+ return -EINVAL;
+ }
+ memcpy(&val_size, &parms->act_prop->act_details[size_idx],
+ sizeof(uint32_t));
+ val_size = tfp_be_to_cpu_32(val_size);
+ val_size = ULP_BYTE_2_BITS(val_size);
+ ulp_blob_push_encap(blob, val, val_size);
+ break;
+ case BNXT_ULP_RESULT_OPC_SET_TO_REGFILE:
+ if (!ulp_operand_read(fld->result_operand,
+ (uint8_t *)&idx, sizeof(uint16_t))) {
+ BNXT_TF_DBG(ERR, "operand read failed\n");
+ return -EINVAL;
+ }
+
+ idx = tfp_be_to_cpu_16(idx);
+ /* Uninitialized regfile entries return 0 */
+ if (!ulp_regfile_read(parms->regfile, idx, ®val)) {
+ BNXT_TF_DBG(ERR, "regfile[%d] read oob\n", idx);
+ return -EINVAL;
+ }
+
+ val = ulp_blob_push_64(blob, ®val, fld->field_bit_size);
+ if (!val) {
+ BNXT_TF_DBG(ERR, "push field failed\n");
+ return -EINVAL;
+ }
+ break;
+ default:
+ return -EINVAL;
+ }
+
+ return 0;
+}
+
+/* Function to alloc action record and set the table. */
+static int32_t
+ulp_mapper_action_alloc_and_set(struct bnxt_ulp_mapper_parms *parms,
+ struct ulp_blob *blob)
+{
+ struct ulp_flow_db_res_params fid_parms;
+ struct tf_alloc_tbl_entry_parms alloc_parms = { 0 };
+ struct tf_free_tbl_entry_parms free_parms = { 0 };
+ struct bnxt_ulp_mapper_act_tbl_info *atbls = parms->atbls;
+ int32_t rc = 0;
+ int32_t trc;
+ uint64_t idx;
+
+ /* Set the allocation parameters for the table*/
+ alloc_parms.dir = atbls->direction;
+ alloc_parms.type = atbls->table_type;
+ alloc_parms.search_enable = atbls->srch_b4_alloc;
+ alloc_parms.result = ulp_blob_data_get(blob,
+ &alloc_parms.result_sz_in_bytes);
+ if (!alloc_parms.result) {
+ BNXT_TF_DBG(ERR, "blob is not populated\n");
+ return -EINVAL;
+ }
+
+ rc = tf_alloc_tbl_entry(parms->tfp, &alloc_parms);
+ if (rc) {
+ BNXT_TF_DBG(ERR, "table type= [%d] dir = [%s] alloc failed\n",
+ alloc_parms.type,
+ (alloc_parms.dir == TF_DIR_RX) ? "RX" : "TX");
+ return rc;
+ }
+
+ /* Need to calculate the idx for the result record */
+ /*
+ * TBD: Need to get the stride from tflib instead of having to
+ * understand the constrution of the pointer
+ */
+ uint64_t tmpidx = alloc_parms.idx;
+
+ if (atbls->table_type == TF_TBL_TYPE_EXT)
+ tmpidx = (alloc_parms.idx * TF_ACTION_RECORD_SZ) >> 4;
+ else
+ tmpidx = alloc_parms.idx;
+
+ idx = tfp_cpu_to_be_64(tmpidx);
+
+ /* Store the allocated index for future use in the regfile */
+ rc = ulp_regfile_write(parms->regfile, atbls->regfile_wr_idx, idx);
+ if (!rc) {
+ BNXT_TF_DBG(ERR, "regfile[%d] write failed\n",
+ atbls->regfile_wr_idx);
+ rc = -EINVAL;
+ goto error;
+ }
+
+ /*
+ * The set_tbl_entry API if search is not enabled or searched entry
+ * is not found.
+ */
+ if (!atbls->srch_b4_alloc || !alloc_parms.hit) {
+ struct tf_set_tbl_entry_parms set_parm = { 0 };
+ uint16_t length;
+
+ set_parm.dir = atbls->direction;
+ set_parm.type = atbls->table_type;
+ set_parm.idx = alloc_parms.idx;
+ set_parm.data = ulp_blob_data_get(blob, &length);
+ set_parm.data_sz_in_bytes = length / 8;
+
+ if (set_parm.type == TF_TBL_TYPE_EXT)
+ bnxt_ulp_cntxt_tbl_scope_id_get(parms->ulp_ctx,
+ &set_parm.tbl_scope_id);
+ else
+ set_parm.tbl_scope_id = 0;
+
+ /* set the table entry */
+ rc = tf_set_tbl_entry(parms->tfp, &set_parm);
+ if (rc) {
+ BNXT_TF_DBG(ERR, "table[%d][%s][%d] set failed\n",
+ set_parm.type,
+ (set_parm.dir == TF_DIR_RX) ? "RX" : "TX",
+ set_parm.idx);
+ goto error;
+ }
+ }
+
+ /* Link the resource to the flow in the flow db */
+ memset(&fid_parms, 0, sizeof(fid_parms));
+ fid_parms.direction = atbls->direction;
+ fid_parms.resource_func = atbls->resource_func;
+ fid_parms.resource_type = atbls->table_type;
+ fid_parms.resource_hndl = alloc_parms.idx;
+ fid_parms.critical_resource = 0;
+
+ rc = ulp_flow_db_resource_add(parms->ulp_ctx,
+ parms->tbl_idx,
+ parms->fid,
+ &fid_parms);
+ if (rc) {
+ BNXT_TF_DBG(ERR, "Failed to link resource to flow rc = %d\n",
+ rc);
+ rc = -EINVAL;
+ goto error;
+ }
+
+ return 0;
+error:
+
+ free_parms.dir = alloc_parms.dir;
+ free_parms.type = alloc_parms.type;
+ free_parms.idx = alloc_parms.idx;
+
+ trc = tf_free_tbl_entry(parms->tfp, &free_parms);
+ if (trc)
+ BNXT_TF_DBG(ERR, "Failed to free table entry on failure\n");
+
+ return rc;
+}
+
+/*
+ * Function to process the action Info. Iterate through the list
+ * action info templates and process it.
+ */
+static int32_t
+ulp_mapper_action_info_process(struct bnxt_ulp_mapper_parms *parms,
+ struct bnxt_ulp_mapper_act_tbl_info *tbl)
+{
+ struct ulp_blob blob;
+ struct bnxt_ulp_mapper_result_field_info *flds, *fld;
+ uint32_t num_flds = 0;
+ uint32_t encap_flds = 0;
+ uint32_t i;
+ int32_t rc;
+ uint16_t bit_size;
+
+ if (!tbl || !parms->act_prop || !parms->act_bitmap || !parms->regfile)
+ return -EINVAL;
+
+ /* use the max size if encap is enabled */
+ if (tbl->encap_num_fields)
+ bit_size = BNXT_ULP_FLMP_BLOB_SIZE_IN_BITS;
+ else
+ bit_size = tbl->result_bit_size;
+ if (!ulp_blob_init(&blob, bit_size, parms->order)) {
+ BNXT_TF_DBG(ERR, "action blob init failed\n");
+ return -EINVAL;
+ }
+
+ flds = ulp_mapper_act_result_fields_get(tbl, &num_flds, &encap_flds);
+ if (!flds || !num_flds) {
+ BNXT_TF_DBG(ERR, "Template undefined for action\n");
+ return -EINVAL;
+ }
+
+ for (i = 0; i < (num_flds + encap_flds); i++) {
+ fld = &flds[i];
+ rc = ulp_mapper_result_field_process(parms,
+ fld,
+ &blob);
+ if (rc) {
+ BNXT_TF_DBG(ERR, "Action field failed\n");
+ return rc;
+ }
+ /* set the swap index if 64 bit swap is enabled */
+ if (parms->encap_byte_swap && encap_flds) {
+ if ((i + 1) == num_flds)
+ ulp_blob_encap_swap_idx_set(&blob);
+ /* if 64 bit swap is enabled perform the 64bit swap */
+ if ((i + 1) == (num_flds + encap_flds))
+ ulp_blob_perform_encap_swap(&blob);
+ }
+ }
+
+ rc = ulp_mapper_action_alloc_and_set(parms, &blob);
+ return rc;
+}
+
+/*
+ * Function to process the action template. Iterate through the list
+ * action info templates and process it.
+ */
+int32_t
+ulp_mapper_action_tbls_process(struct bnxt_ulp_mapper_parms *parms)
+{
+ uint32_t i;
+ int32_t rc = 0;
+
+ if (!parms->atbls || !parms->num_atbls) {
+ BNXT_TF_DBG(ERR, "No action tables for template[%d][%d].\n",
+ parms->dev_id, parms->act_tid);
+ return -EINVAL;
+ }
+
+ for (i = 0; i < parms->num_atbls; i++) {
+ rc = ulp_mapper_action_info_process(parms, &parms->atbls[i]);
+ if (rc)
+ return rc;
+ }
+
+ return rc;
+}
diff --git a/drivers/net/bnxt/tf_ulp/ulp_mapper.h b/drivers/net/bnxt/tf_ulp/ulp_mapper.h
new file mode 100644
index 0000000..adbcec2
--- /dev/null
+++ b/drivers/net/bnxt/tf_ulp/ulp_mapper.h
@@ -0,0 +1,39 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2014-2019 Broadcom
+ * All rights reserved.
+ */
+
+#ifndef _ULP_MAPPER_H_
+#define _ULP_MAPPER_H_
+
+#include <tf_core.h>
+#include <rte_log.h>
+#include <rte_flow.h>
+#include <rte_flow_driver.h>
+#include "ulp_template_db.h"
+#include "ulp_template_struct.h"
+#include "bnxt_ulp.h"
+#include "ulp_utils.h"
+
+/* Internal Structure for passing the arguments around */
+struct bnxt_ulp_mapper_parms {
+ uint32_t dev_id;
+ enum bnxt_ulp_byte_order order;
+ uint32_t act_tid;
+ struct bnxt_ulp_mapper_act_tbl_info *atbls;
+ uint32_t num_atbls;
+ uint32_t class_tid;
+ struct bnxt_ulp_mapper_class_tbl_info *ctbls;
+ uint32_t num_ctbls;
+ struct ulp_rte_act_prop *act_prop;
+ struct ulp_rte_act_bitmap *act_bitmap;
+ struct ulp_rte_hdr_field *hdr_field;
+ struct ulp_regfile *regfile;
+ struct tf *tfp;
+ struct bnxt_ulp_context *ulp_ctx;
+ uint8_t encap_byte_swap;
+ uint32_t fid;
+ enum bnxt_ulp_flow_db_tables tbl_idx;
+};
+
+#endif /* _ULP_MAPPER_H_ */
diff --git a/drivers/net/bnxt/tf_ulp/ulp_template_db.c b/drivers/net/bnxt/tf_ulp/ulp_template_db.c
index bc0ffd3..75bf967 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_template_db.c
+++ b/drivers/net/bnxt/tf_ulp/ulp_template_db.c
@@ -11,6 +11,88 @@
#include "ulp_template_db.h"
#include "ulp_template_field_db.h"
#include "ulp_template_struct.h"
+uint32_t ulp_act_prop_map_table[] = {
+ [BNXT_ULP_ACT_PROP_IDX_ENCAP_TUN_SZ] =
+ BNXT_ULP_ACT_PROP_SZ_ENCAP_TUN_SZ,
+ [BNXT_ULP_ACT_PROP_IDX_ENCAP_IP_SZ] =
+ BNXT_ULP_ACT_PROP_SZ_ENCAP_IP_SZ,
+ [BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_SZ] =
+ BNXT_ULP_ACT_PROP_SZ_ENCAP_VTAG_SZ,
+ [BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_TYPE] =
+ BNXT_ULP_ACT_PROP_SZ_ENCAP_VTAG_TYPE,
+ [BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_NUM] =
+ BNXT_ULP_ACT_PROP_SZ_ENCAP_VTAG_NUM,
+ [BNXT_ULP_ACT_PROP_IDX_ENCAP_L3_TYPE] =
+ BNXT_ULP_ACT_PROP_SZ_ENCAP_L3_TYPE,
+ [BNXT_ULP_ACT_PROP_IDX_MPLS_POP_NUM] =
+ BNXT_ULP_ACT_PROP_SZ_MPLS_POP_NUM,
+ [BNXT_ULP_ACT_PROP_IDX_MPLS_PUSH_NUM] =
+ BNXT_ULP_ACT_PROP_SZ_MPLS_PUSH_NUM,
+ [BNXT_ULP_ACT_PROP_IDX_VNIC] =
+ BNXT_ULP_ACT_PROP_SZ_VNIC,
+ [BNXT_ULP_ACT_PROP_IDX_VPORT] =
+ BNXT_ULP_ACT_PROP_SZ_VPORT,
+ [BNXT_ULP_ACT_PROP_IDX_MARK] =
+ BNXT_ULP_ACT_PROP_SZ_MARK,
+ [BNXT_ULP_ACT_PROP_IDX_COUNT] =
+ BNXT_ULP_ACT_PROP_SZ_COUNT,
+ [BNXT_ULP_ACT_PROP_IDX_METER] =
+ BNXT_ULP_ACT_PROP_SZ_METER,
+ [BNXT_ULP_ACT_PROP_IDX_SET_MAC_SRC] =
+ BNXT_ULP_ACT_PROP_SZ_SET_MAC_SRC,
+ [BNXT_ULP_ACT_PROP_IDX_SET_MAC_DST] =
+ BNXT_ULP_ACT_PROP_SZ_SET_MAC_DST,
+ [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_VLAN] =
+ BNXT_ULP_ACT_PROP_SZ_OF_PUSH_VLAN,
+ [BNXT_ULP_ACT_PROP_IDX_OF_SET_VLAN_PCP] =
+ BNXT_ULP_ACT_PROP_SZ_OF_SET_VLAN_PCP,
+ [BNXT_ULP_ACT_PROP_IDX_OF_SET_VLAN_VID] =
+ BNXT_ULP_ACT_PROP_SZ_OF_SET_VLAN_VID,
+ [BNXT_ULP_ACT_PROP_IDX_SET_IPV4_SRC] =
+ BNXT_ULP_ACT_PROP_SZ_SET_IPV4_SRC,
+ [BNXT_ULP_ACT_PROP_IDX_SET_IPV4_DST] =
+ BNXT_ULP_ACT_PROP_SZ_SET_IPV4_DST,
+ [BNXT_ULP_ACT_PROP_IDX_SET_IPV6_SRC] =
+ BNXT_ULP_ACT_PROP_SZ_SET_IPV6_SRC,
+ [BNXT_ULP_ACT_PROP_IDX_SET_IPV6_DST] =
+ BNXT_ULP_ACT_PROP_SZ_SET_IPV6_DST,
+ [BNXT_ULP_ACT_PROP_IDX_SET_TP_SRC] =
+ BNXT_ULP_ACT_PROP_SZ_SET_TP_SRC,
+ [BNXT_ULP_ACT_PROP_IDX_SET_TP_DST] =
+ BNXT_ULP_ACT_PROP_SZ_SET_TP_DST,
+ [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_0] =
+ BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_0,
+ [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_1] =
+ BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_1,
+ [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_2] =
+ BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_2,
+ [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_3] =
+ BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_3,
+ [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_4] =
+ BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_4,
+ [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_5] =
+ BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_5,
+ [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_6] =
+ BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_6,
+ [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_7] =
+ BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_7,
+ [BNXT_ULP_ACT_PROP_IDX_ENCAP_L2_DMAC] =
+ BNXT_ULP_ACT_PROP_SZ_ENCAP_L2_DMAC,
+ [BNXT_ULP_ACT_PROP_IDX_ENCAP_L2_SMAC] =
+ BNXT_ULP_ACT_PROP_SZ_ENCAP_L2_SMAC,
+ [BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG] =
+ BNXT_ULP_ACT_PROP_SZ_ENCAP_VTAG,
+ [BNXT_ULP_ACT_PROP_IDX_ENCAP_IP] =
+ BNXT_ULP_ACT_PROP_SZ_ENCAP_IP,
+ [BNXT_ULP_ACT_PROP_IDX_ENCAP_IP_SRC] =
+ BNXT_ULP_ACT_PROP_SZ_ENCAP_IP_SRC,
+ [BNXT_ULP_ACT_PROP_IDX_ENCAP_UDP] =
+ BNXT_ULP_ACT_PROP_SZ_ENCAP_UDP,
+ [BNXT_ULP_ACT_PROP_IDX_ENCAP_TUN] =
+ BNXT_ULP_ACT_PROP_SZ_ENCAP_TUN,
+ [BNXT_ULP_ACT_PROP_IDX_LAST] =
+ BNXT_ULP_ACT_PROP_SZ_LAST
+};
struct bnxt_ulp_device_params ulp_device_params[] = {
[BNXT_ULP_DEVICE_ID_WH_PLUS] = {
@@ -26,3 +108,164 @@ struct bnxt_ulp_device_params ulp_device_params[] = {
}
};
+struct bnxt_ulp_mapper_result_field_info ulp_act_result_field_list[] = {
+ {
+ .field_bit_size = 14,
+ .result_opcode = BNXT_ULP_RESULT_OPC_SET_TO_CONSTANT,
+ .result_operand = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+ },
+ {
+ .field_bit_size = 1,
+ .result_opcode = BNXT_ULP_RESULT_OPC_SET_TO_CONSTANT,
+ .result_operand = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+ },
+ {
+ .field_bit_size = 1,
+ .result_opcode = BNXT_ULP_RESULT_OPC_SET_TO_CONSTANT,
+ .result_operand = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+ },
+ {
+ .field_bit_size = 1,
+ .result_opcode = BNXT_ULP_RESULT_OPC_SET_TO_CONSTANT,
+ .result_operand = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+ },
+ {
+ .field_bit_size = 1,
+ .result_opcode = BNXT_ULP_RESULT_OPC_SET_TO_CONSTANT,
+ .result_operand = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+ },
+ {
+ .field_bit_size = 1,
+ .result_opcode = BNXT_ULP_RESULT_OPC_SET_TO_CONSTANT,
+ .result_operand = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+ },
+ {
+ .field_bit_size = 8,
+ .result_opcode = BNXT_ULP_RESULT_OPC_SET_TO_CONSTANT,
+ .result_operand = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+ },
+ {
+ .field_bit_size = 1,
+ .result_opcode = BNXT_ULP_RESULT_OPC_SET_TO_CONSTANT,
+ .result_operand = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+ },
+ {
+ .field_bit_size = 1,
+ .result_opcode = BNXT_ULP_RESULT_OPC_SET_TO_CONSTANT,
+ .result_operand = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+ },
+ {
+ .field_bit_size = 11,
+ .result_opcode = BNXT_ULP_RESULT_OPC_SET_TO_CONSTANT,
+ .result_operand = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+ },
+ {
+ .field_bit_size = 1,
+ .result_opcode = BNXT_ULP_RESULT_OPC_SET_TO_CONSTANT,
+ .result_operand = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+ },
+ {
+ .field_bit_size = 10,
+ .result_opcode = BNXT_ULP_RESULT_OPC_SET_TO_CONSTANT,
+ .result_operand = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+ },
+ {
+ .field_bit_size = 16,
+ .result_opcode = BNXT_ULP_RESULT_OPC_SET_TO_CONSTANT,
+ .result_operand = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+ },
+ {
+ .field_bit_size = 10,
+ .result_opcode = BNXT_ULP_RESULT_OPC_SET_TO_CONSTANT,
+ .result_operand = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+ },
+ {
+ .field_bit_size = 16,
+ .result_opcode = BNXT_ULP_RESULT_OPC_SET_TO_CONSTANT,
+ .result_operand = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+ },
+ {
+ .field_bit_size = 10,
+ .result_opcode = BNXT_ULP_RESULT_OPC_SET_TO_CONSTANT,
+ .result_operand = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+ },
+ {
+ .field_bit_size = 1,
+ .result_opcode = BNXT_ULP_RESULT_OPC_SET_TO_CONSTANT,
+ .result_operand = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+ },
+ {
+ .field_bit_size = 1,
+ .result_opcode = BNXT_ULP_RESULT_OPC_SET_TO_CONSTANT,
+ .result_operand = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+ },
+ {
+ .field_bit_size = 1,
+ .result_opcode = BNXT_ULP_RESULT_OPC_SET_TO_CONSTANT,
+ .result_operand = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+ },
+ {
+ .field_bit_size = 1,
+ .result_opcode = BNXT_ULP_RESULT_OPC_SET_TO_CONSTANT,
+ .result_operand = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+ },
+ {
+ .field_bit_size = 4,
+ .result_opcode = BNXT_ULP_RESULT_OPC_SET_TO_CONSTANT,
+ .result_operand = {BNXT_ULP_SYM_DECAP_FUNC_NONE,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+ },
+ {
+ .field_bit_size = 12,
+ .result_opcode = BNXT_ULP_RESULT_OPC_SET_TO_ACT_PROP,
+ .result_operand = {(BNXT_ULP_ACT_PROP_IDX_VNIC >> 8) & 0xff,
+ BNXT_ULP_ACT_PROP_IDX_VNIC & 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+ },
+ {
+ .field_bit_size = 1,
+ .result_opcode = BNXT_ULP_RESULT_OPC_SET_TO_CONSTANT,
+ .result_operand = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+ },
+ {
+ .field_bit_size = 1,
+ .result_opcode = BNXT_ULP_RESULT_OPC_SET_TO_CONSTANT,
+ .result_operand = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+ },
+ {
+ .field_bit_size = 2,
+ .result_opcode = BNXT_ULP_RESULT_OPC_SET_TO_CONSTANT,
+ .result_operand = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+ },
+ {
+ .field_bit_size = 1,
+ .result_opcode = BNXT_ULP_RESULT_OPC_SET_TO_CONSTANT,
+ .result_operand = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+ }
+};
diff --git a/drivers/net/bnxt/tf_ulp/ulp_template_db.h b/drivers/net/bnxt/tf_ulp/ulp_template_db.h
index 1eed828..e52cc3f 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_template_db.h
+++ b/drivers/net/bnxt/tf_ulp/ulp_template_db.h
@@ -39,9 +39,113 @@ enum bnxt_ulp_regfile_index {
BNXT_ULP_REGFILE_INDEX_LAST
};
+enum bnxt_ulp_resource_func {
+ BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE = 0,
+ BNXT_ULP_RESOURCE_FUNC_EM_TABLE = 1,
+ BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE = 2,
+ BNXT_ULP_RESOURCE_FUNC_IDENTIFIER = 3,
+ BNXT_ULP_RESOURCE_FUNC_HW_FID = 4,
+ BNXT_ULP_RESOURCE_FUNC_LAST = 5
+};
+
+enum bnxt_ulp_result_opc {
+ BNXT_ULP_RESULT_OPC_SET_TO_CONSTANT = 0,
+ BNXT_ULP_RESULT_OPC_SET_TO_ACT_PROP = 1,
+ BNXT_ULP_RESULT_OPC_SET_TO_ACT_PROP_SZ = 2,
+ BNXT_ULP_RESULT_OPC_SET_TO_REGFILE = 3,
+ BNXT_ULP_RESULT_OPC_LAST = 4
+};
+
enum bnxt_ulp_sym {
+ BNXT_ULP_SYM_DECAP_FUNC_NONE = 0,
BNXT_ULP_SYM_LITTLE_ENDIAN = 1,
BNXT_ULP_SYM_YES = 1
};
+enum bnxt_ulp_act_prop_sz {
+ BNXT_ULP_ACT_PROP_SZ_ENCAP_TUN_SZ = 4,
+ BNXT_ULP_ACT_PROP_SZ_ENCAP_IP_SZ = 4,
+ BNXT_ULP_ACT_PROP_SZ_ENCAP_VTAG_SZ = 4,
+ BNXT_ULP_ACT_PROP_SZ_ENCAP_VTAG_TYPE = 4,
+ BNXT_ULP_ACT_PROP_SZ_ENCAP_VTAG_NUM = 4,
+ BNXT_ULP_ACT_PROP_SZ_ENCAP_L3_TYPE = 4,
+ BNXT_ULP_ACT_PROP_SZ_MPLS_POP_NUM = 4,
+ BNXT_ULP_ACT_PROP_SZ_MPLS_PUSH_NUM = 4,
+ BNXT_ULP_ACT_PROP_SZ_VNIC = 4,
+ BNXT_ULP_ACT_PROP_SZ_VPORT = 4,
+ BNXT_ULP_ACT_PROP_SZ_MARK = 4,
+ BNXT_ULP_ACT_PROP_SZ_COUNT = 4,
+ BNXT_ULP_ACT_PROP_SZ_METER = 4,
+ BNXT_ULP_ACT_PROP_SZ_SET_MAC_SRC = 8,
+ BNXT_ULP_ACT_PROP_SZ_SET_MAC_DST = 8,
+ BNXT_ULP_ACT_PROP_SZ_OF_PUSH_VLAN = 4,
+ BNXT_ULP_ACT_PROP_SZ_OF_SET_VLAN_PCP = 4,
+ BNXT_ULP_ACT_PROP_SZ_OF_SET_VLAN_VID = 4,
+ BNXT_ULP_ACT_PROP_SZ_SET_IPV4_SRC = 4,
+ BNXT_ULP_ACT_PROP_SZ_SET_IPV4_DST = 4,
+ BNXT_ULP_ACT_PROP_SZ_SET_IPV6_SRC = 16,
+ BNXT_ULP_ACT_PROP_SZ_SET_IPV6_DST = 16,
+ BNXT_ULP_ACT_PROP_SZ_SET_TP_SRC = 4,
+ BNXT_ULP_ACT_PROP_SZ_SET_TP_DST = 4,
+ BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_0 = 4,
+ BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_1 = 4,
+ BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_2 = 4,
+ BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_3 = 4,
+ BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_4 = 4,
+ BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_5 = 4,
+ BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_6 = 4,
+ BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_7 = 4,
+ BNXT_ULP_ACT_PROP_SZ_ENCAP_L2_DMAC = 6,
+ BNXT_ULP_ACT_PROP_SZ_ENCAP_L2_SMAC = 6,
+ BNXT_ULP_ACT_PROP_SZ_ENCAP_VTAG = 8,
+ BNXT_ULP_ACT_PROP_SZ_ENCAP_IP = 32,
+ BNXT_ULP_ACT_PROP_SZ_ENCAP_IP_SRC = 16,
+ BNXT_ULP_ACT_PROP_SZ_ENCAP_UDP = 4,
+ BNXT_ULP_ACT_PROP_SZ_ENCAP_TUN = 32,
+ BNXT_ULP_ACT_PROP_SZ_LAST = 4
+};
+
+enum bnxt_ulp_act_prop_idx {
+ BNXT_ULP_ACT_PROP_IDX_ENCAP_TUN_SZ = 0,
+ BNXT_ULP_ACT_PROP_IDX_ENCAP_IP_SZ = 4,
+ BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_SZ = 8,
+ BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_TYPE = 12,
+ BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_NUM = 16,
+ BNXT_ULP_ACT_PROP_IDX_ENCAP_L3_TYPE = 20,
+ BNXT_ULP_ACT_PROP_IDX_MPLS_POP_NUM = 24,
+ BNXT_ULP_ACT_PROP_IDX_MPLS_PUSH_NUM = 28,
+ BNXT_ULP_ACT_PROP_IDX_VNIC = 32,
+ BNXT_ULP_ACT_PROP_IDX_VPORT = 36,
+ BNXT_ULP_ACT_PROP_IDX_MARK = 40,
+ BNXT_ULP_ACT_PROP_IDX_COUNT = 44,
+ BNXT_ULP_ACT_PROP_IDX_METER = 48,
+ BNXT_ULP_ACT_PROP_IDX_SET_MAC_SRC = 52,
+ BNXT_ULP_ACT_PROP_IDX_SET_MAC_DST = 60,
+ BNXT_ULP_ACT_PROP_IDX_OF_PUSH_VLAN = 68,
+ BNXT_ULP_ACT_PROP_IDX_OF_SET_VLAN_PCP = 72,
+ BNXT_ULP_ACT_PROP_IDX_OF_SET_VLAN_VID = 76,
+ BNXT_ULP_ACT_PROP_IDX_SET_IPV4_SRC = 80,
+ BNXT_ULP_ACT_PROP_IDX_SET_IPV4_DST = 84,
+ BNXT_ULP_ACT_PROP_IDX_SET_IPV6_SRC = 88,
+ BNXT_ULP_ACT_PROP_IDX_SET_IPV6_DST = 104,
+ BNXT_ULP_ACT_PROP_IDX_SET_TP_SRC = 120,
+ BNXT_ULP_ACT_PROP_IDX_SET_TP_DST = 124,
+ BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_0 = 128,
+ BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_1 = 132,
+ BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_2 = 136,
+ BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_3 = 140,
+ BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_4 = 144,
+ BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_5 = 148,
+ BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_6 = 152,
+ BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_7 = 156,
+ BNXT_ULP_ACT_PROP_IDX_ENCAP_L2_DMAC = 160,
+ BNXT_ULP_ACT_PROP_IDX_ENCAP_L2_SMAC = 166,
+ BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG = 172,
+ BNXT_ULP_ACT_PROP_IDX_ENCAP_IP = 180,
+ BNXT_ULP_ACT_PROP_IDX_ENCAP_IP_SRC = 212,
+ BNXT_ULP_ACT_PROP_IDX_ENCAP_UDP = 228,
+ BNXT_ULP_ACT_PROP_IDX_ENCAP_TUN = 232,
+ BNXT_ULP_ACT_PROP_IDX_LAST = 264
+};
+
#endif /* _ULP_TEMPLATE_DB_H_ */
diff --git a/drivers/net/bnxt/tf_ulp/ulp_template_struct.h b/drivers/net/bnxt/tf_ulp/ulp_template_struct.h
index 4b9d0b2..2b0a3d7 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_template_struct.h
+++ b/drivers/net/bnxt/tf_ulp/ulp_template_struct.h
@@ -17,7 +17,15 @@
#include "rte_flow.h"
#include "tf_core.h"
-/* Device specific parameters. */
+/*
+ * structure to hold the action property details
+ * It is a array of 128 bytes
+ */
+struct ulp_rte_act_prop {
+ uint8_t act_details[BNXT_ULP_ACT_PROP_IDX_LAST];
+};
+
+/* Device specific parameters */
struct bnxt_ulp_device_params {
uint8_t description[16];
uint32_t global_fid_enable;
@@ -31,10 +39,44 @@ struct bnxt_ulp_device_params {
uint32_t num_resources_per_flow;
};
+struct bnxt_ulp_mapper_act_tbl_info {
+ enum bnxt_ulp_resource_func resource_func;
+ enum tf_tbl_type table_type;
+ uint8_t direction;
+ uint8_t srch_b4_alloc;
+ uint32_t result_start_idx;
+ uint16_t result_bit_size;
+ uint16_t encap_num_fields;
+ uint16_t result_num_fields;
+
+ enum bnxt_ulp_regfile_index regfile_wr_idx;
+};
+
+struct bnxt_ulp_mapper_result_field_info {
+ uint8_t name[64];
+ enum bnxt_ulp_result_opc result_opcode;
+ uint16_t field_bit_size;
+ uint8_t result_operand[16];
+};
+
/*
- * The ulp_device_params is indexed by the dev_id.
- * This table maintains the device specific parameters.
+ * The ulp_device_params is indexed by the dev_id
+ * This table maintains the device specific parameters
*/
extern struct bnxt_ulp_device_params ulp_device_params[];
+/*
+ * The ulp_data_field_list provides the instructions for creating an action
+ * record. It uses the same structure as the result list, but is only used for
+ * actions.
+ */
+extern
+struct bnxt_ulp_mapper_result_field_info ulp_act_result_field_list[];
+
+/*
+ * The ulp_act_prop_map_table provides the mapping to index and size of action
+ * properties.
+ */
+extern uint32_t ulp_act_prop_map_table[];
+
#endif /* _ULP_TEMPLATE_STRUCT_H_ */
--
2.7.4
next prev parent reply other threads:[~2020-04-13 19:45 UTC|newest]
Thread overview: 154+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-17 15:37 [dpdk-dev] [PATCH 00/33] add support for host based flow table management Venkat Duvvuru
2020-03-17 15:37 ` [dpdk-dev] [PATCH 01/33] net/bnxt: add updated dpdk hsi structure Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 02/33] net/bnxt: update hwrm prep to use ptr Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 03/33] net/bnxt: add truflow message handlers Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 04/33] net/bnxt: add initial tf core session open Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 05/33] net/bnxt: add initial tf core session close support Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 06/33] net/bnxt: add tf core session sram functions Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 07/33] net/bnxt: add initial tf core resource mgmt support Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 08/33] net/bnxt: add resource manager functionality Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 09/33] net/bnxt: add tf core identifier support Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 10/33] net/bnxt: add tf core TCAM support Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 11/33] net/bnxt: add tf core table scope support Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 12/33] net/bnxt: add EM/EEM functionality Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 13/33] net/bnxt: fetch SVIF information from the firmware Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 14/33] net/bnxt: fetch vnic info from DPDK port Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 15/33] net/bnxt: add support for ULP session manager init Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 16/33] net/bnxt: add support for ULP session manager cleanup Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 17/33] net/bnxt: add helper functions for blob/regfile ops Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 18/33] net/bnxt: add support to process action tables Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 19/33] net/bnxt: add support to process key tables Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 20/33] net/bnxt: add support to free key and action tables Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 21/33] net/bnxt: add support to alloc and program key and act tbls Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 22/33] net/bnxt: match rte flow items with flow template patterns Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 23/33] net/bnxt: match rte flow actions with flow template actions Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 24/33] net/bnxt: add support for rte flow item parsing Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 25/33] net/bnxt: add support for rte flow action parsing Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 26/33] net/bnxt: add support for rte flow create driver hook Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 27/33] net/bnxt: add support for rte flow validate " Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 28/33] net/bnxt: add support for rte flow destroy " Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 29/33] net/bnxt: add support for rte flow flush " Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 30/33] net/bnxt: register tf rte flow ops Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 31/33] net/bnxt: disable vector mode when BNXT TRUFLOW is enabled Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 32/33] net/bnxt: add support for injecting mark into packet’s mbuf Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 33/33] config: introduce BNXT TRUFLOW config flag Venkat Duvvuru
2020-04-13 19:39 ` [dpdk-dev] [PATCH v2 00/34] add support for host based flow table management Venkat Duvvuru
2020-04-13 19:39 ` [dpdk-dev] [PATCH v2 01/34] net/bnxt: add updated dpdk hsi structure Venkat Duvvuru
2020-04-13 19:39 ` [dpdk-dev] [PATCH v2 02/34] net/bnxt: update hwrm prep to use ptr Venkat Duvvuru
2020-04-13 19:39 ` [dpdk-dev] [PATCH v2 03/34] net/bnxt: add truflow message handlers Venkat Duvvuru
2020-04-13 19:39 ` [dpdk-dev] [PATCH v2 04/34] net/bnxt: add initial tf core session open Venkat Duvvuru
2020-04-13 19:39 ` [dpdk-dev] [PATCH v2 05/34] net/bnxt: add initial tf core session close support Venkat Duvvuru
2020-04-13 19:39 ` [dpdk-dev] [PATCH v2 06/34] net/bnxt: add tf core session sram functions Venkat Duvvuru
2020-04-13 19:39 ` [dpdk-dev] [PATCH v2 07/34] net/bnxt: add initial tf core resource mgmt support Venkat Duvvuru
2020-04-13 19:39 ` [dpdk-dev] [PATCH v2 08/34] net/bnxt: add resource manager functionality Venkat Duvvuru
2020-04-13 19:39 ` [dpdk-dev] [PATCH v2 09/34] net/bnxt: add tf core identifier support Venkat Duvvuru
2020-04-13 19:39 ` [dpdk-dev] [PATCH v2 10/34] net/bnxt: add tf core TCAM support Venkat Duvvuru
2020-04-13 19:39 ` [dpdk-dev] [PATCH v2 11/34] net/bnxt: add tf core table scope support Venkat Duvvuru
2020-04-13 19:39 ` [dpdk-dev] [PATCH v2 12/34] net/bnxt: add EM/EEM functionality Venkat Duvvuru
2020-04-13 19:39 ` [dpdk-dev] [PATCH v2 13/34] net/bnxt: fetch SVIF information from the firmware Venkat Duvvuru
2020-04-13 19:39 ` [dpdk-dev] [PATCH v2 14/34] net/bnxt: fetch vnic info from DPDK port Venkat Duvvuru
2020-04-13 19:39 ` [dpdk-dev] [PATCH v2 15/34] net/bnxt: add devargs parameter for host memory based TRUFLOW feature Venkat Duvvuru
2020-04-13 19:39 ` [dpdk-dev] [PATCH v2 16/34] net/bnxt: add support for ULP session manager init Venkat Duvvuru
2020-04-13 19:39 ` [dpdk-dev] [PATCH v2 17/34] net/bnxt: add support for ULP session manager cleanup Venkat Duvvuru
2020-04-13 19:39 ` [dpdk-dev] [PATCH v2 18/34] net/bnxt: add helper functions for blob/regfile ops Venkat Duvvuru
2020-04-13 19:39 ` Venkat Duvvuru [this message]
2020-04-13 19:39 ` [dpdk-dev] [PATCH v2 20/34] net/bnxt: add support to process key tables Venkat Duvvuru
2020-04-13 19:39 ` [dpdk-dev] [PATCH v2 21/34] net/bnxt: add support to free key and action tables Venkat Duvvuru
2020-04-13 19:39 ` [dpdk-dev] [PATCH v2 22/34] net/bnxt: add support to alloc and program key and act tbls Venkat Duvvuru
2020-04-13 19:40 ` [dpdk-dev] [PATCH v2 23/34] net/bnxt: match rte flow items with flow template patterns Venkat Duvvuru
2020-04-13 19:40 ` [dpdk-dev] [PATCH v2 24/34] net/bnxt: match rte flow actions with flow template actions Venkat Duvvuru
2020-04-13 19:40 ` [dpdk-dev] [PATCH v2 25/34] net/bnxt: add support for rte flow item parsing Venkat Duvvuru
2020-04-13 19:40 ` [dpdk-dev] [PATCH v2 26/34] net/bnxt: add support for rte flow action parsing Venkat Duvvuru
2020-04-13 19:40 ` [dpdk-dev] [PATCH v2 27/34] net/bnxt: add support for rte flow create driver hook Venkat Duvvuru
2020-04-13 19:40 ` [dpdk-dev] [PATCH v2 28/34] net/bnxt: add support for rte flow validate " Venkat Duvvuru
2020-04-13 19:40 ` [dpdk-dev] [PATCH v2 29/34] net/bnxt: add support for rte flow destroy " Venkat Duvvuru
2020-04-13 19:40 ` [dpdk-dev] [PATCH v2 30/34] net/bnxt: add support for rte flow flush " Venkat Duvvuru
2020-04-13 19:40 ` [dpdk-dev] [PATCH v2 31/34] net/bnxt: register tf rte flow ops Venkat Duvvuru
2020-04-13 19:40 ` [dpdk-dev] [PATCH v2 32/34] net/bnxt: disable vector mode when host based TRUFLOW is enabled Venkat Duvvuru
2020-04-13 19:40 ` [dpdk-dev] [PATCH v2 33/34] net/bnxt: add support for injecting mark into packet’s mbuf Venkat Duvvuru
2020-04-13 19:40 ` [dpdk-dev] [PATCH v2 34/34] net/bnxt: enable meson build on truflow code Venkat Duvvuru
2020-04-13 21:35 ` [dpdk-dev] [PATCH v2 00/34] add support for host based flow table management Thomas Monjalon
2020-04-15 8:56 ` Venkat Duvvuru
2020-04-14 8:12 ` [dpdk-dev] [PATCH v3 " Venkat Duvvuru
2020-04-14 8:12 ` [dpdk-dev] [PATCH v3 01/34] net/bnxt: add updated dpdk hsi structure Venkat Duvvuru
2020-04-14 8:12 ` [dpdk-dev] [PATCH v3 02/34] net/bnxt: update hwrm prep to use ptr Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 03/34] net/bnxt: add truflow message handlers Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 04/34] net/bnxt: add initial tf core session open Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 05/34] net/bnxt: add initial tf core session close support Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 06/34] net/bnxt: add tf core session sram functions Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 07/34] net/bnxt: add initial tf core resource mgmt support Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 08/34] net/bnxt: add resource manager functionality Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 09/34] net/bnxt: add tf core identifier support Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 10/34] net/bnxt: add tf core TCAM support Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 11/34] net/bnxt: add tf core table scope support Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 12/34] net/bnxt: add EM/EEM functionality Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 13/34] net/bnxt: fetch SVIF information from the firmware Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 14/34] net/bnxt: fetch vnic info from DPDK port Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 15/34] net/bnxt: add devargs parameter for host memory based TRUFLOW feature Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 16/34] net/bnxt: add support for ULP session manager init Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 17/34] net/bnxt: add support for ULP session manager cleanup Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 18/34] net/bnxt: add helper functions for blob/regfile ops Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 19/34] net/bnxt: add support to process action tables Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 20/34] net/bnxt: add support to process key tables Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 21/34] net/bnxt: add support to free key and action tables Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 22/34] net/bnxt: add support to alloc and program key and act tbls Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 23/34] net/bnxt: match rte flow items with flow template patterns Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 24/34] net/bnxt: match rte flow actions with flow template actions Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 25/34] net/bnxt: add support for rte flow item parsing Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 26/34] net/bnxt: add support for rte flow action parsing Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 27/34] net/bnxt: add support for rte flow create driver hook Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 28/34] net/bnxt: add support for rte flow validate " Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 29/34] net/bnxt: add support for rte flow destroy " Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 30/34] net/bnxt: add support for rte flow flush " Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 31/34] net/bnxt: register tf rte flow ops Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 32/34] net/bnxt: disable vector mode when host based TRUFLOW is enabled Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 33/34] net/bnxt: add support for injecting mark into packet’s mbuf Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 34/34] net/bnxt: enable meson build on truflow code Venkat Duvvuru
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 00/34] add support for host based flow table management Venkat Duvvuru
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 01/34] net/bnxt: add updated dpdk hsi structure Venkat Duvvuru
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 02/34] net/bnxt: update hwrm prep to use ptr Venkat Duvvuru
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 03/34] net/bnxt: add truflow message handlers Venkat Duvvuru
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 04/34] net/bnxt: add initial tf core session open Venkat Duvvuru
2020-04-16 17:39 ` Ferruh Yigit
2020-04-16 17:47 ` Ajit Khaparde
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 05/34] net/bnxt: add initial tf core session close support Venkat Duvvuru
2020-04-16 17:39 ` Ferruh Yigit
2020-04-16 17:48 ` Ajit Khaparde
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 06/34] net/bnxt: add tf core session sram functions Venkat Duvvuru
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 07/34] net/bnxt: add initial tf core resource mgmt support Venkat Duvvuru
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 08/34] net/bnxt: add resource manager functionality Venkat Duvvuru
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 09/34] net/bnxt: add tf core identifier support Venkat Duvvuru
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 10/34] net/bnxt: add tf core TCAM support Venkat Duvvuru
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 11/34] net/bnxt: add tf core table scope support Venkat Duvvuru
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 12/34] net/bnxt: add EM/EEM functionality Venkat Duvvuru
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 13/34] net/bnxt: fetch SVIF information from the firmware Venkat Duvvuru
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 14/34] net/bnxt: fetch vnic info from DPDK port Venkat Duvvuru
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 15/34] net/bnxt: add devargs parameter for host memory based TRUFLOW feature Venkat Duvvuru
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 16/34] net/bnxt: add support for ULP session manager init Venkat Duvvuru
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 17/34] net/bnxt: add support for ULP session manager cleanup Venkat Duvvuru
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 18/34] net/bnxt: add helper functions for blob/regfile ops Venkat Duvvuru
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 19/34] net/bnxt: add support to process action tables Venkat Duvvuru
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 20/34] net/bnxt: add support to process key tables Venkat Duvvuru
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 21/34] net/bnxt: add support to free key and action tables Venkat Duvvuru
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 22/34] net/bnxt: add support to alloc and program key and act tbls Venkat Duvvuru
2020-04-15 8:19 ` [dpdk-dev] [PATCH v4 23/34] net/bnxt: match rte flow items with flow template patterns Venkat Duvvuru
2020-04-15 8:19 ` [dpdk-dev] [PATCH v4 24/34] net/bnxt: match rte flow actions with flow template actions Venkat Duvvuru
2020-04-15 8:19 ` [dpdk-dev] [PATCH v4 25/34] net/bnxt: add support for rte flow item parsing Venkat Duvvuru
2020-04-15 8:19 ` [dpdk-dev] [PATCH v4 26/34] net/bnxt: add support for rte flow action parsing Venkat Duvvuru
2020-04-15 8:19 ` [dpdk-dev] [PATCH v4 27/34] net/bnxt: add support for rte flow create driver hook Venkat Duvvuru
2020-04-15 8:19 ` [dpdk-dev] [PATCH v4 28/34] net/bnxt: add support for rte flow validate " Venkat Duvvuru
2020-04-15 8:19 ` [dpdk-dev] [PATCH v4 29/34] net/bnxt: add support for rte flow destroy " Venkat Duvvuru
2020-04-15 8:19 ` [dpdk-dev] [PATCH v4 30/34] net/bnxt: add support for rte flow flush " Venkat Duvvuru
2020-04-15 8:19 ` [dpdk-dev] [PATCH v4 31/34] net/bnxt: register tf rte flow ops Venkat Duvvuru
2020-04-15 8:19 ` [dpdk-dev] [PATCH v4 32/34] net/bnxt: disable vector mode when host based TRUFLOW is enabled Venkat Duvvuru
2020-04-15 8:19 ` [dpdk-dev] [PATCH v4 33/34] net/bnxt: add support for injecting mark into packet’s mbuf Venkat Duvvuru
2020-04-15 8:19 ` [dpdk-dev] [PATCH v4 34/34] net/bnxt: enable meson build on truflow code Venkat Duvvuru
2020-04-22 21:27 ` Thomas Monjalon
2020-04-15 15:29 ` [dpdk-dev] [PATCH v4 00/34] add support for host based flow table management Ajit Khaparde
2020-04-16 16:23 ` Ferruh Yigit
2020-04-16 16:38 ` Ajit Khaparde
2020-04-16 17:40 ` Ferruh Yigit
2020-04-16 17:51 ` Ajit Khaparde
2020-04-17 8:37 ` Ferruh Yigit
2020-04-17 11:03 ` Ferruh Yigit
2020-04-17 16:14 ` Ajit Khaparde
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1586806811-21736-20-git-send-email-venkatkumar.duvvuru@broadcom.com \
--to=venkatkumar.duvvuru@broadcom.com \
--cc=dev@dpdk.org \
--cc=kishore.padmanabha@broadcom.com \
--cc=michael.baucom@broadcom.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).