xref: /dpdk/drivers/net/bnxt/tf_ulp/ulp_alloc_tbl.h (revision 83f916bddb17f2bed168a1093ff898a08cd3008b)
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