1*83f916bdSKishore Padmanabha /* SPDX-License-Identifier: BSD-3-Clause 2*83f916bdSKishore Padmanabha * Copyright(c) 2014-2023 Broadcom 3*83f916bdSKishore Padmanabha * All rights reserved. 4*83f916bdSKishore Padmanabha */ 5*83f916bdSKishore Padmanabha 6*83f916bdSKishore Padmanabha #ifndef _ULP_ALLOC_TBL_H_ 7*83f916bdSKishore Padmanabha #define _ULP_ALLOC_TBL_H_ 8*83f916bdSKishore Padmanabha 9*83f916bdSKishore Padmanabha #include "bitalloc.h" 10*83f916bdSKishore Padmanabha 11*83f916bdSKishore Padmanabha /* Structure to pass the allocator table values across APIs */ 12*83f916bdSKishore Padmanabha struct ulp_allocator_tbl_entry { 13*83f916bdSKishore Padmanabha const char *alloc_tbl_name; 14*83f916bdSKishore Padmanabha uint16_t num_entries; 15*83f916bdSKishore Padmanabha struct bitalloc *ulp_bitalloc; 16*83f916bdSKishore Padmanabha }; 17*83f916bdSKishore Padmanabha 18*83f916bdSKishore Padmanabha /* Forward declaration */ 19*83f916bdSKishore Padmanabha struct bnxt_ulp_mapper_data; 20*83f916bdSKishore Padmanabha struct ulp_flow_db_res_params; 21*83f916bdSKishore Padmanabha 22*83f916bdSKishore Padmanabha /* 23*83f916bdSKishore Padmanabha * Initialize the allocator table list 24*83f916bdSKishore Padmanabha * 25*83f916bdSKishore Padmanabha * ulp_ctx [in] - Pointer to the ulp context 26*83f916bdSKishore Padmanabha * mapper_data [in] Pointer to the mapper data and the generic table is 27*83f916bdSKishore Padmanabha * part of it 28*83f916bdSKishore Padmanabha * 29*83f916bdSKishore Padmanabha * returns 0 on success 30*83f916bdSKishore Padmanabha */ 31*83f916bdSKishore Padmanabha int32_t 32*83f916bdSKishore Padmanabha ulp_allocator_tbl_list_init(struct bnxt_ulp_context *ulp_ctx, 33*83f916bdSKishore Padmanabha struct bnxt_ulp_mapper_data *mapper_data); 34*83f916bdSKishore Padmanabha 35*83f916bdSKishore Padmanabha /* 36*83f916bdSKishore Padmanabha * Free the allocator table list 37*83f916bdSKishore Padmanabha * 38*83f916bdSKishore Padmanabha * mapper_data [in] Pointer to the mapper data and the generic table is 39*83f916bdSKishore Padmanabha * part of it 40*83f916bdSKishore Padmanabha * 41*83f916bdSKishore Padmanabha * returns 0 on success 42*83f916bdSKishore Padmanabha */ 43*83f916bdSKishore Padmanabha int32_t 44*83f916bdSKishore Padmanabha ulp_allocator_tbl_list_deinit(struct bnxt_ulp_mapper_data *mapper_data); 45*83f916bdSKishore Padmanabha 46*83f916bdSKishore Padmanabha /* 47*83f916bdSKishore Padmanabha * allocate a index from allocator 48*83f916bdSKishore Padmanabha * 49*83f916bdSKishore Padmanabha * mapper_data [in] Pointer to the mapper data and the allocator table is 50*83f916bdSKishore Padmanabha * part of it 51*83f916bdSKishore Padmanabha * 52*83f916bdSKishore Padmanabha * returns index on success or negative number on failure 53*83f916bdSKishore Padmanabha */ 54*83f916bdSKishore Padmanabha int32_t 55*83f916bdSKishore Padmanabha ulp_allocator_tbl_list_alloc(struct bnxt_ulp_mapper_data *mapper_data, 56*83f916bdSKishore Padmanabha uint32_t res_sub_type, uint32_t dir, 57*83f916bdSKishore Padmanabha int32_t *alloc_id); 58*83f916bdSKishore Padmanabha 59*83f916bdSKishore Padmanabha /* 60*83f916bdSKishore Padmanabha * free a index in allocator 61*83f916bdSKishore Padmanabha * 62*83f916bdSKishore Padmanabha * mapper_data [in] Pointer to the mapper data and the allocator table is 63*83f916bdSKishore Padmanabha * part of it 64*83f916bdSKishore Padmanabha * 65*83f916bdSKishore Padmanabha * returns error 66*83f916bdSKishore Padmanabha */ 67*83f916bdSKishore Padmanabha int32_t 68*83f916bdSKishore Padmanabha ulp_allocator_tbl_list_free(struct bnxt_ulp_mapper_data *mapper_data, 69*83f916bdSKishore Padmanabha uint32_t res_sub_type, uint32_t dir, 70*83f916bdSKishore Padmanabha int32_t index); 71*83f916bdSKishore Padmanabha #endif /* _ULP_ALLOC_TBL_H_ */ 72