/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2019-2020 Broadcom
+ * Copyright(c) 2019-2021 Broadcom
* All rights reserved.
*/
* The Table module provides processing of Internal TF table types.
*/
-/**
- * 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;
-};
-
/** Invalid table scope id */
#define TF_TBL_SCOPE_INVALID 0xffffffff
-/**
- * Table Scope Control Block
- *
- * Holds private data for a table scope. Only one instance of a table
- * scope with Internal EM is supported.
- */
-struct tf_tbl_scope_cb {
- uint32_t tbl_scope_id;
- int index;
- 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];
-};
-
/**
* Table configuration parameters
*/
* [in] Type of the allocation
*/
enum tf_tbl_type type;
+ /**
+ * [in] Table scope identifier (ignored unless TF_TBL_TYPE_EXT)
+ */
+ uint32_t tbl_scope_id;
/**
* [out] Idx of allocated entry or found entry (if search_enable)
*/
* [in] Type of the allocation type
*/
enum tf_tbl_type type;
+ /**
+ * [in] Table scope identifier (ignored unless TF_TBL_TYPE_EXT)
+ */
+ uint32_t tbl_scope_id;
/**
* [in] Index to free
*/
*/
uint32_t tbl_scope_id;
/**
- * [in] Enable search for matching entry. If the table type is
- * internal the shadow copy will be searched before
- * alloc. Session must be configured with shadow copy enabled.
- */
- uint8_t search_enable;
- /**
- * [in] Result data to search for (if search_enable)
+ * [in] Result data to search for
*/
uint8_t *result;
/**
- * [in] Result data size in bytes (if search_enable)
+ * [in] Result data size in bytes
*/
uint16_t result_sz_in_bytes;
+ /**
+ * [in] Whether or not to allocate on MISS, 1 is allocate.
+ */
+ uint8_t alloc;
/**
* [out] If search_enable, set if matching entry found
*/
uint8_t hit;
/**
- * [out] Current ref count after allocation (if search_enable)
+ * [out] The status of the search (REJECT, MISS, HIT)
+ */
+ enum tf_search_status search_status;
+ /**
+ * [out] Current ref count after allocation
*/
uint16_t ref_cnt;
/**
- * [out] Idx of allocated entry or found entry (if search_enable)
+ * [out] Idx of allocated entry or found entry
*/
uint32_t idx;
};
* [in] Type of object to set
*/
enum tf_tbl_type type;
+ /**
+ * [in] Table scope identifier (ignored unless TF_TBL_TYPE_EXT)
+ */
+ uint32_t tbl_scope_id;
/**
* [in] Entry data
*/
uint64_t physical_mem_addr;
};
+/**
+ * Table RM database
+ *
+ * Table rm database
+ *
+ */
+struct tbl_rm_db {
+ struct rm_db *tbl_db[TF_DIR_MAX];
+};
+
/**
* @page tbl Table
*
int tf_tbl_bulk_get(struct tf *tfp,
struct tf_tbl_get_bulk_parms *parms);
+/**
+ * Retrieves the allocated resource info
+ *
+ * [in] tfp
+ * Pointer to TF handle, used for HCAPI communication
+ *
+ * [in] parms
+ * Pointer to Table resource info parameters
+ *
+ * Returns
+ * - (0) if successful.
+ * - (-EINVAL) on failure.
+ */
+int
+tf_tbl_get_resc_info(struct tf *tfp,
+ struct tf_tbl_resource_info *tbl);
+
#endif /* TF_TBL_TYPE_H */