From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 31F0FA0522; Sat, 27 Jun 2020 12:03:03 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 2891F1C02C; Sat, 27 Jun 2020 12:01:29 +0200 (CEST) Received: from rnd-relay.smtp.broadcom.com (rnd-relay.smtp.broadcom.com [192.19.229.170]) by dpdk.org (Postfix) with ESMTP id 6C3191BF7D for ; Sat, 27 Jun 2020 12:00:59 +0200 (CEST) Received: from mail-irv-17.broadcom.com (mail-irv-17.lvn.broadcom.net [10.75.242.48]) by rnd-relay.smtp.broadcom.com (Postfix) with ESMTP id 6919B30C0F2; Sat, 27 Jun 2020 03:00:58 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.10.3 rnd-relay.smtp.broadcom.com 6919B30C0F2 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1593252058; bh=csLRDqmd+YjZ3MGUGVUl6wdSRGktwQ9959Xfc6Ca47o=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Mf/L02JuC+hRdGruUYsSkmyqAvok4YIpj6l/FbaCKgi3UcHWFldAeYKwz1S5lv2yM aYgGGRgp01Yy38G4nRrXha0foiB8/mL7SvECuE6lkQlVRPtz+f9ASXwnDeO6rts4aW +H/m+7j9vEYbYqVP+CCjby4CxlPxKB/IygMVVJbQ= Received: from localhost.localdomain (unknown [10.230.185.215]) by mail-irv-17.broadcom.com (Postfix) with ESMTP id 326B214008B; Sat, 27 Jun 2020 03:00:58 -0700 (PDT) From: Ajit Khaparde To: dev@dpdk.org Cc: Kishore Padmanabha , Somnath Kotur , Mike Baucom Date: Sat, 27 Jun 2020 03:00:35 -0700 Message-Id: <20200627100050.19688-11-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.21.1 (Apple Git-122.3) In-Reply-To: <20200627100050.19688-1-ajit.khaparde@broadcom.com> References: <20200612125024.15989-1-somnath.kotur@broadcom.com> <20200627100050.19688-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-dev] [PATCH v4 10/25] net/bnxt: process action templates X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Kishore Padmanabha Extend index table processing to process action templates. The index table processing is extended to address encapsulation fields so that action template index table can be processed by a common index processing function that can process both class and action index tables. Signed-off-by: Kishore Padmanabha Signed-off-by: Somnath Kotur Reviewed-by: Mike Baucom Reviewed-by: Ajit Khaparde --- drivers/net/bnxt/tf_ulp/ulp_mapper.c | 306 ++++++------------ drivers/net/bnxt/tf_ulp/ulp_mapper.h | 5 +- drivers/net/bnxt/tf_ulp/ulp_template_db.c | 9 +- drivers/net/bnxt/tf_ulp/ulp_template_struct.h | 21 +- 4 files changed, 110 insertions(+), 231 deletions(-) diff --git a/drivers/net/bnxt/tf_ulp/ulp_mapper.c b/drivers/net/bnxt/tf_ulp/ulp_mapper.c index 3d44d61ce..b90177983 100644 --- a/drivers/net/bnxt/tf_ulp/ulp_mapper.c +++ b/drivers/net/bnxt/tf_ulp/ulp_mapper.c @@ -159,7 +159,7 @@ ulp_mapper_act_prop_size_get(uint32_t idx) * * Returns An array of action tables to implement the flow, or NULL on error. */ -static struct bnxt_ulp_mapper_act_tbl_info * +static struct bnxt_ulp_mapper_tbl_info * ulp_mapper_action_tbl_list_get(uint32_t dev_id, uint32_t tid, uint32_t *num_tbls) @@ -196,7 +196,7 @@ ulp_mapper_action_tbl_list_get(uint32_t dev_id, * returns An array of classifier tables to implement the flow, or NULL on * error */ -static struct bnxt_ulp_mapper_class_tbl_info * +static struct bnxt_ulp_mapper_tbl_info * ulp_mapper_class_tbl_list_get(uint32_t dev_id, uint32_t tid, uint32_t *num_tbls) @@ -228,7 +228,7 @@ ulp_mapper_class_tbl_list_get(uint32_t dev_id, * Returns array of Key fields, or NULL on error. */ static struct bnxt_ulp_mapper_class_key_field_info * -ulp_mapper_key_fields_get(struct bnxt_ulp_mapper_class_tbl_info *tbl, +ulp_mapper_key_fields_get(struct bnxt_ulp_mapper_tbl_info *tbl, uint32_t *num_flds) { uint32_t idx; @@ -255,7 +255,7 @@ ulp_mapper_key_fields_get(struct bnxt_ulp_mapper_class_tbl_info *tbl, * Returns array of data fields, or NULL on error. */ static struct bnxt_ulp_mapper_result_field_info * -ulp_mapper_result_fields_get(struct bnxt_ulp_mapper_class_tbl_info *tbl, +ulp_mapper_result_fields_get(struct bnxt_ulp_mapper_tbl_info *tbl, uint32_t *num_flds) { uint32_t idx; @@ -280,7 +280,7 @@ ulp_mapper_result_fields_get(struct bnxt_ulp_mapper_class_tbl_info *tbl, * 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, +ulp_mapper_act_result_fields_get(struct bnxt_ulp_mapper_tbl_info *tbl, uint32_t *num_rslt_flds, uint32_t *num_encap_flds) { @@ -307,7 +307,7 @@ ulp_mapper_act_result_fields_get(struct bnxt_ulp_mapper_act_tbl_info *tbl, * returns array of ident fields, or NULL on error */ static struct bnxt_ulp_mapper_ident_info * -ulp_mapper_ident_fields_get(struct bnxt_ulp_mapper_class_tbl_info *tbl, +ulp_mapper_ident_fields_get(struct bnxt_ulp_mapper_tbl_info *tbl, uint32_t *num_flds) { uint32_t idx; @@ -522,7 +522,7 @@ ulp_mapper_mark_free(struct bnxt_ulp_context *ulp, */ static int32_t ulp_mapper_ident_process(struct bnxt_ulp_mapper_parms *parms, - struct bnxt_ulp_mapper_class_tbl_info *tbl, + struct bnxt_ulp_mapper_tbl_info *tbl, struct bnxt_ulp_mapper_ident_info *ident, uint16_t *val) { @@ -892,125 +892,9 @@ ulp_mapper_keymask_field_process(struct bnxt_ulp_mapper_parms *parms, 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; - uint32_t tbl_scope_id; - - bnxt_ulp_cntxt_tbl_scope_id_get(parms->ulp_ctx, &tbl_scope_id); - - /* Set the allocation parameters for the table*/ - alloc_parms.dir = atbls->direction; - alloc_parms.type = atbls->resource_type; - alloc_parms.search_enable = atbls->srch_b4_alloc; - alloc_parms.result = ulp_blob_data_get(blob, - &alloc_parms.result_sz_in_bytes); - alloc_parms.tbl_scope_id = tbl_scope_id; - 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 */ - uint64_t tmpidx = alloc_parms.idx; - - if (atbls->resource_type == TF_TBL_TYPE_EXT) - tmpidx = TF_ACT_REC_OFFSET_2_PTR(alloc_parms.idx); - 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->resource_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) - set_parm.tbl_scope_id = tbl_scope_id; - - /* 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->resource_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; -} - static int32_t ulp_mapper_mark_gfid_process(struct bnxt_ulp_mapper_parms *parms, - struct bnxt_ulp_mapper_class_tbl_info *tbl, + struct bnxt_ulp_mapper_tbl_info *tbl, uint64_t flow_id) { struct ulp_flow_db_res_params fid_parms; @@ -1053,7 +937,7 @@ ulp_mapper_mark_gfid_process(struct bnxt_ulp_mapper_parms *parms, static int32_t ulp_mapper_mark_act_ptr_process(struct bnxt_ulp_mapper_parms *parms, - struct bnxt_ulp_mapper_class_tbl_info *tbl) + struct bnxt_ulp_mapper_tbl_info *tbl) { struct ulp_flow_db_res_params fid_parms; uint32_t vfr_flag, act_idx, mark, mark_flag; @@ -1100,69 +984,9 @@ ulp_mapper_mark_act_ptr_process(struct bnxt_ulp_mapper_parms *parms, 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, - tbl->direction, - fld, - &blob, - "Action"); - 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; -} - static int32_t ulp_mapper_tcam_tbl_process(struct bnxt_ulp_mapper_parms *parms, - struct bnxt_ulp_mapper_class_tbl_info *tbl) + struct bnxt_ulp_mapper_tbl_info *tbl) { struct bnxt_ulp_mapper_class_key_field_info *kflds; struct ulp_blob key, mask, data; @@ -1391,7 +1215,7 @@ ulp_mapper_tcam_tbl_process(struct bnxt_ulp_mapper_parms *parms, static int32_t ulp_mapper_em_tbl_process(struct bnxt_ulp_mapper_parms *parms, - struct bnxt_ulp_mapper_class_tbl_info *tbl) + struct bnxt_ulp_mapper_tbl_info *tbl) { struct bnxt_ulp_mapper_class_key_field_info *kflds; struct bnxt_ulp_mapper_result_field_info *dflds; @@ -1530,7 +1354,8 @@ ulp_mapper_em_tbl_process(struct bnxt_ulp_mapper_parms *parms, static int32_t ulp_mapper_index_tbl_process(struct bnxt_ulp_mapper_parms *parms, - struct bnxt_ulp_mapper_class_tbl_info *tbl) + struct bnxt_ulp_mapper_tbl_info *tbl, + bool is_class_tbl) { struct bnxt_ulp_mapper_result_field_info *flds; struct ulp_flow_db_res_params fid_parms; @@ -1544,21 +1369,49 @@ ulp_mapper_index_tbl_process(struct bnxt_ulp_mapper_parms *parms, struct tf_free_tbl_entry_parms free_parms = { 0 }; uint32_t tbl_scope_id; struct tf *tfp = bnxt_ulp_cntxt_tfp_get(parms->ulp_ctx); + uint16_t bit_size; + uint32_t encap_flds = 0; - bnxt_ulp_cntxt_tbl_scope_id_get(parms->ulp_ctx, &tbl_scope_id); + /* Get the scope id first */ + rc = bnxt_ulp_cntxt_tbl_scope_id_get(parms->ulp_ctx, &tbl_scope_id); + if (rc) { + BNXT_TF_DBG(ERR, "Failed to get table scope rc=%d\n", rc); + return rc; + } + + /* 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(&data, tbl->result_bit_size, parms->order)) { + /* Initialize the blob data */ + if (!ulp_blob_init(&data, bit_size, + parms->device_params->byte_order)) { BNXT_TF_DBG(ERR, "Failed initial index table blob\n"); return -EINVAL; } - flds = ulp_mapper_result_fields_get(tbl, &num_flds); + /* Get the result fields list */ + if (is_class_tbl) + flds = ulp_mapper_result_fields_get(tbl, &num_flds); + else + 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"); + BNXT_TF_DBG(ERR, "template undefined for the index table\n"); return -EINVAL; } - for (i = 0; i < num_flds; i++) { + /* process the result fields, loop through them */ + for (i = 0; i < (num_flds + encap_flds); i++) { + /* set the swap index if encap swap bit is enabled */ + if (parms->device_params->encap_byte_swap && encap_flds && + ((i + 1) == num_flds)) + ulp_blob_encap_swap_idx_set(&data); + + /* Process the result fields */ rc = ulp_mapper_result_field_process(parms, tbl->direction, &flds[i], @@ -1568,27 +1421,50 @@ ulp_mapper_index_tbl_process(struct bnxt_ulp_mapper_parms *parms, BNXT_TF_DBG(ERR, "data field failed\n"); return rc; } + + /* if encap bit swap is enabled perform the bit swap */ + if (parms->device_params->encap_byte_swap && encap_flds) { + if ((i + 1) == (num_flds + encap_flds)) + ulp_blob_perform_encap_swap(&data); +#ifdef RTE_LIBRTE_BNXT_TRUFLOW_DEBUG + if ((i + 1) == (num_flds + encap_flds)) { + BNXT_TF_DBG(INFO, "Dump fter encap swap\n"); + ulp_mapper_blob_dump(&data); + } +#endif + } } + /* Perform the tf table allocation by filling the alloc params */ aparms.dir = tbl->direction; aparms.type = tbl->resource_type; aparms.search_enable = tbl->srch_b4_alloc; aparms.result = ulp_blob_data_get(&data, &tmplen); - aparms.result_sz_in_bytes = ULP_SZ_BITS2BYTES(tbl->result_bit_size); + aparms.result_sz_in_bytes = ULP_BITS_2_BYTE(tmplen); aparms.tbl_scope_id = tbl_scope_id; /* All failures after the alloc succeeds require a free */ rc = tf_alloc_tbl_entry(tfp, &aparms); if (rc) { BNXT_TF_DBG(ERR, "Alloc table[%d][%s] failed rc=%d\n", - tbl->resource_type, - (tbl->direction == TF_DIR_RX) ? "RX" : "TX", + aparms.type, + (aparms.dir == TF_DIR_RX) ? "RX" : "TX", rc); return rc; } + /* + * calculate the idx for the result record, for external EM the offset + * needs to be shifted accordingly. If external non-inline table types + * are used then need to revisit this logic. + */ + if (aparms.type == TF_TBL_TYPE_EXT) + idx = TF_ACT_REC_OFFSET_2_PTR(aparms.idx); + else + idx = aparms.idx; + /* Always storing values in Regfile in BE */ - idx = tfp_cpu_to_be_64(aparms.idx); + idx = tfp_cpu_to_be_64(idx); rc = ulp_regfile_write(parms->regfile, tbl->regfile_wr_idx, idx); if (!rc) { BNXT_TF_DBG(ERR, "Write regfile[%d] failed\n", @@ -1596,23 +1472,22 @@ ulp_mapper_index_tbl_process(struct bnxt_ulp_mapper_parms *parms, goto error; } - if (!tbl->srch_b4_alloc) { + /* Perform the tf table set by filling the set params */ + if (!tbl->srch_b4_alloc || !aparms.hit) { sparms.dir = tbl->direction; sparms.type = tbl->resource_type; sparms.data = ulp_blob_data_get(&data, &tmplen); - sparms.data_sz_in_bytes = - ULP_SZ_BITS2BYTES(tbl->result_bit_size); + sparms.data_sz_in_bytes = ULP_BITS_2_BYTE(tmplen); sparms.idx = aparms.idx; sparms.tbl_scope_id = tbl_scope_id; rc = tf_set_tbl_entry(tfp, &sparms); if (rc) { BNXT_TF_DBG(ERR, "Set table[%d][%s][%d] failed rc=%d\n", - tbl->resource_type, - (tbl->direction == TF_DIR_RX) ? "RX" : "TX", + sparms.type, + (sparms.dir == TF_DIR_RX) ? "RX" : "TX", sparms.idx, rc); - goto error; } } @@ -1655,7 +1530,7 @@ ulp_mapper_index_tbl_process(struct bnxt_ulp_mapper_parms *parms, static int32_t ulp_mapper_cache_tbl_process(struct bnxt_ulp_mapper_parms *parms, - struct bnxt_ulp_mapper_class_tbl_info *tbl) + struct bnxt_ulp_mapper_tbl_info *tbl) { struct bnxt_ulp_mapper_class_key_field_info *kflds; struct bnxt_ulp_mapper_cache_entry *cache_entry; @@ -1848,6 +1723,7 @@ ulp_mapper_action_tbls_process(struct bnxt_ulp_mapper_parms *parms) { uint32_t i; int32_t rc = 0; + struct bnxt_ulp_mapper_tbl_info *tbl; if (!parms->atbls || !parms->num_atbls) { BNXT_TF_DBG(ERR, "No action tables for template[%d][%d].\n", @@ -1856,9 +1732,21 @@ ulp_mapper_action_tbls_process(struct bnxt_ulp_mapper_parms *parms) } for (i = 0; i < parms->num_atbls; i++) { - rc = ulp_mapper_action_info_process(parms, &parms->atbls[i]); - if (rc) - return rc; + tbl = &parms->atbls[i]; + switch (tbl->resource_func) { + case BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE: + rc = ulp_mapper_index_tbl_process(parms, tbl, false); + break; + default: + BNXT_TF_DBG(ERR, "Unexpected action resource %d\n", + tbl->resource_func); + return -EINVAL; + } + } + if (rc) { + BNXT_TF_DBG(ERR, "Resource type %d failed\n", + tbl->resource_func); + return rc; } return rc; @@ -1881,7 +1769,7 @@ ulp_mapper_class_tbls_process(struct bnxt_ulp_mapper_parms *parms) } for (i = 0; i < parms->num_ctbls; i++) { - struct bnxt_ulp_mapper_class_tbl_info *tbl = &parms->ctbls[i]; + struct bnxt_ulp_mapper_tbl_info *tbl = &parms->ctbls[i]; switch (tbl->resource_func) { case BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE: @@ -1891,7 +1779,7 @@ ulp_mapper_class_tbls_process(struct bnxt_ulp_mapper_parms *parms) rc = ulp_mapper_em_tbl_process(parms, tbl); break; case BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE: - rc = ulp_mapper_index_tbl_process(parms, tbl); + rc = ulp_mapper_index_tbl_process(parms, tbl, true); break; case BNXT_ULP_RESOURCE_FUNC_CACHE_TABLE: rc = ulp_mapper_cache_tbl_process(parms, tbl); diff --git a/drivers/net/bnxt/tf_ulp/ulp_mapper.h b/drivers/net/bnxt/tf_ulp/ulp_mapper.h index b0b895e18..cb13a1c53 100644 --- a/drivers/net/bnxt/tf_ulp/ulp_mapper.h +++ b/drivers/net/bnxt/tf_ulp/ulp_mapper.h @@ -15,7 +15,6 @@ #include "bnxt_ulp.h" #include "ulp_utils.h" -#define ULP_SZ_BITS2BYTES(x) (((x) + 7) / 8) #define ULP_IDENTS_INVALID ((uint16_t)0xffff) /* @@ -57,10 +56,10 @@ 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; + struct bnxt_ulp_mapper_tbl_info *atbls; /* action table */ uint32_t num_atbls; uint32_t class_tid; - struct bnxt_ulp_mapper_class_tbl_info *ctbls; + struct bnxt_ulp_mapper_tbl_info *ctbls; /* class table */ uint32_t num_ctbls; struct ulp_rte_act_prop *act_prop; struct ulp_rte_act_bitmap *act_bitmap; diff --git a/drivers/net/bnxt/tf_ulp/ulp_template_db.c b/drivers/net/bnxt/tf_ulp/ulp_template_db.c index e8b860a71..20bcbb4b0 100644 --- a/drivers/net/bnxt/tf_ulp/ulp_template_db.c +++ b/drivers/net/bnxt/tf_ulp/ulp_template_db.c @@ -587,7 +587,7 @@ struct bnxt_ulp_mapper_tbl_list_info ulp_class_tmpl_list[] = { } }; -struct bnxt_ulp_mapper_class_tbl_info ulp_class_tbl_list[] = { +struct bnxt_ulp_mapper_tbl_info ulp_class_tbl_list[] = { { .resource_func = BNXT_ULP_RESOURCE_FUNC_CACHE_TABLE, .resource_type = TF_TCAM_TBL_TYPE_L2_CTXT_TCAM, @@ -602,6 +602,7 @@ struct bnxt_ulp_mapper_class_tbl_info ulp_class_tbl_list[] = { .result_start_idx = 0, .result_bit_size = 10, .result_num_fields = 1, + .encap_num_fields = 0, .ident_start_idx = 0, .ident_nums = 1, .mark_enable = BNXT_ULP_MARK_ENABLE_NO, @@ -622,6 +623,7 @@ struct bnxt_ulp_mapper_class_tbl_info ulp_class_tbl_list[] = { .result_start_idx = 1, .result_bit_size = 64, .result_num_fields = 13, + .encap_num_fields = 0, .ident_start_idx = 1, .ident_nums = 0, .mark_enable = BNXT_ULP_MARK_ENABLE_NO, @@ -642,6 +644,7 @@ struct bnxt_ulp_mapper_class_tbl_info ulp_class_tbl_list[] = { .result_start_idx = 14, .result_bit_size = 10, .result_num_fields = 1, + .encap_num_fields = 0, .ident_start_idx = 1, .ident_nums = 1, .mark_enable = BNXT_ULP_MARK_ENABLE_NO, @@ -662,6 +665,7 @@ struct bnxt_ulp_mapper_class_tbl_info ulp_class_tbl_list[] = { .result_start_idx = 15, .result_bit_size = 38, .result_num_fields = 8, + .encap_num_fields = 0, .ident_start_idx = 2, .ident_nums = 0, .mark_enable = BNXT_ULP_MARK_ENABLE_NO, @@ -682,6 +686,7 @@ struct bnxt_ulp_mapper_class_tbl_info ulp_class_tbl_list[] = { .result_start_idx = 23, .result_bit_size = 64, .result_num_fields = 9, + .encap_num_fields = 0, .ident_start_idx = 2, .ident_nums = 0, .mark_enable = BNXT_ULP_MARK_ENABLE_YES, @@ -1610,7 +1615,7 @@ struct bnxt_ulp_mapper_tbl_list_info ulp_act_tmpl_list[] = { } }; -struct bnxt_ulp_mapper_act_tbl_info ulp_act_tbl_list[] = { +struct bnxt_ulp_mapper_tbl_info ulp_act_tbl_list[] = { { .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE, .resource_type = TF_TBL_TYPE_EXT, diff --git a/drivers/net/bnxt/tf_ulp/ulp_template_struct.h b/drivers/net/bnxt/tf_ulp/ulp_template_struct.h index eebe0351c..27ad421b5 100644 --- a/drivers/net/bnxt/tf_ulp/ulp_template_struct.h +++ b/drivers/net/bnxt/tf_ulp/ulp_template_struct.h @@ -155,7 +155,7 @@ struct bnxt_ulp_mapper_tbl_list_info { uint32_t num_tbls; }; -struct bnxt_ulp_mapper_class_tbl_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; @@ -175,6 +175,7 @@ struct bnxt_ulp_mapper_class_tbl_info { uint32_t result_start_idx; uint16_t result_bit_size; uint16_t result_num_fields; + uint16_t encap_num_fields; /* Information for accessing the ulp_ident_list */ uint32_t ident_start_idx; @@ -184,20 +185,6 @@ struct bnxt_ulp_mapper_class_tbl_info { enum bnxt_ulp_regfile_index regfile_wr_idx; }; -struct bnxt_ulp_mapper_act_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; - 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_class_key_field_info { uint8_t description[64]; enum bnxt_ulp_mask_opc mask_opcode; @@ -262,8 +249,8 @@ extern struct bnxt_ulp_mapper_tbl_list_info ulp_act_tmpl_list[]; * table entry to include the start index and number of instructions in the * field lists. */ -extern struct bnxt_ulp_mapper_class_tbl_info ulp_class_tbl_list[]; -extern struct bnxt_ulp_mapper_act_tbl_info ulp_act_tbl_list[]; +extern struct bnxt_ulp_mapper_tbl_info ulp_class_tbl_list[]; +extern struct bnxt_ulp_mapper_tbl_info ulp_act_tbl_list[]; /* * The ulp_class_result_field_list provides the instructions for creating result -- 2.21.1 (Apple Git-122.3)