X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fbnxt%2Ftf_core%2Ftf_em_common.h;h=7f215adef2752c823cd4807cad1549ee902080a5;hb=83680d371592fcf1b66cbbfecb0fb8b3aa4ccc8d;hp=bf01df9b8db36f5e1b3a3a1632a2ce8af4f5105b;hpb=fc4075b744b2dad7c04051e798b01b3326bed928;p=dpdk.git diff --git a/drivers/net/bnxt/tf_core/tf_em_common.h b/drivers/net/bnxt/tf_core/tf_em_common.h index bf01df9b8d..7f215adef2 100644 --- a/drivers/net/bnxt/tf_core/tf_em_common.h +++ b/drivers/net/bnxt/tf_core/tf_em_common.h @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: BSD-3-Clause - * Copyright(c) 2019-2020 Broadcom + * Copyright(c) 2019-2021 Broadcom * All rights reserved. */ @@ -8,7 +8,7 @@ #include "tf_core.h" #include "tf_session.h" - +#include "ll.h" /** * Function to search for table scope control block structure @@ -23,6 +23,53 @@ */ struct tf_tbl_scope_cb *tbl_scope_cb_find(uint32_t tbl_scope_id); +/** + * Table scope control block content + */ +struct tf_em_caps { + uint32_t flags; + uint32_t supported; + uint32_t max_entries_supported; + uint16_t key_entry_size; + uint16_t record_entry_size; + uint16_t efc_entry_size; +}; + +/** + * EEM data + * + * Link list of ext em data allocated and managed by EEM module + * for a TruFlow session. + */ +struct em_ext_db { + struct ll tbl_scope_ll; + struct rm_db *eem_db[TF_DIR_MAX]; +}; + +/** + * Table Scope Control Block + * + * Holds private data for a table scope. + */ +struct tf_tbl_scope_cb { + /** + * Linked list of tbl_scope + */ + struct ll_entry ll_entry; /* For inserting in link list, must be + * first field of struct. + */ + + uint32_t tbl_scope_id; + + /** The pf or parent pf of the vf used for table scope creation + */ + uint16_t pf; + struct hcapi_cfa_em_ctx_mem_info em_ctx_info[TF_DIR_MAX]; + struct tf_em_caps em_caps[TF_DIR_MAX]; + struct stack ext_act_pool[TF_DIR_MAX]; + uint32_t *ext_act_pool_mem[TF_DIR_MAX]; +}; + /** * Create and initialize a stack to use for action entries * @@ -101,4 +148,53 @@ void *tf_em_get_table_page(struct tf_tbl_scope_cb *tbl_scope_cb, uint32_t offset, enum hcapi_cfa_em_table_type table_type); +/** + * Validates EM number of entries requested + * + * [in] tbl_scope_cb + * Pointer to table scope control block to be populated + * + * [in] parms + * Pointer to input parameters + * + * Returns: + * 0 - Success + * -EINVAL - Parameter error + */ +int tf_em_validate_num_entries(struct tf_tbl_scope_cb *tbl_scope_cb, + struct tf_alloc_tbl_scope_parms *parms); + +/** + * Size the EM table based on capabilities + * + * [in] tbl + * EM table to size + * + * Returns: + * 0 - Success + * - EINVAL - Parameter error + * - ENOMEM - Out of memory + */ +int tf_em_size_table(struct hcapi_cfa_em_table *tbl, + uint32_t page_size); + + +/** + * Look up table scope control block using tbl_scope_id from + * tf_session + * + * [in] tbl_scope_cb + * Pointer to Truflow Handle + * + * [in] tbl_scope_id + * table scope id + * + * Returns: + * - Pointer to the tf_tbl_scope_cb, if found. + * - (NULL) on failure, not found. + */ +struct tf_tbl_scope_cb * +tf_em_ext_common_tbl_scope_find(struct tf *tfp, + uint32_t tbl_scope_id); + #endif /* _TF_EM_COMMON_H_ */