xref: /dpdk/drivers/net/bnxt/tf_core/v3/tfc_msg.h (revision 80317ff6adfde7f618a100098e068ad5512e8e22)
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2022 Broadcom
3  * All rights reserved.
4  */
5 
6 #include <assert.h>
7 
8 #include <stdint.h>
9 #include <stdbool.h>
10 
11 #include "tfc.h"
12 #include "tfo.h"
13 
14 /* HWRM Direct messages */
15 
16 int
17 tfc_msg_tbl_scope_qcaps(struct tfc *tfcp,
18 			bool *tbl_scope_capable,
19 			uint32_t *max_lkup_rec_cnt,
20 			uint32_t *max_act_rec_cnt,
21 			uint8_t	*max_lkup_static_buckets_exp);
22 
23 int tfc_msg_tbl_scope_id_alloc(struct tfc *tfcp, uint16_t fid, bool shared,
24 			       enum cfa_app_type app_type, uint8_t *tsid,
25 			       bool *first);
26 
27 int
28 tfc_msg_backing_store_cfg_v2(struct tfc *tfcp, uint8_t tsid, enum cfa_dir dir,
29 			     enum cfa_region_type region, uint64_t base_addr,
30 			     uint8_t pbl_level, uint32_t pbl_page_sz,
31 			     uint32_t rec_cnt, uint8_t static_bkt_cnt_exp,
32 			     bool cfg_done);
33 
34 int
35 tfc_msg_tbl_scope_deconfig(struct tfc *tfcp, uint8_t tsid);
36 
37 int
38 tfc_msg_tbl_scope_fid_add(struct tfc *tfcp, uint16_t fid,
39 			  uint8_t tsid, uint16_t *fid_cnt);
40 
41 int
42 tfc_msg_tbl_scope_fid_rem(struct tfc *tfcp, uint16_t fid,
43 			  uint8_t tsid, uint16_t *fid_cnt);
44 
45 int
46 tfc_msg_idx_tbl_alloc(struct tfc *tfcp, uint16_t fid, uint16_t sid,
47 		      enum cfa_track_type tt, enum cfa_dir dir,
48 		      enum cfa_resource_subtype_idx_tbl rsubtype,
49 		      uint16_t *id);
50 
51 int
52 tfc_msg_idx_tbl_alloc_set(struct tfc *tfcp, uint16_t fid, uint16_t sid,
53 			  enum cfa_track_type tt, enum cfa_dir dir,
54 			  enum cfa_resource_subtype_idx_tbl subtype,
55 			  const uint32_t *dev_data, uint8_t data_size,
56 			  uint16_t *id);
57 
58 int
59 tfc_msg_idx_tbl_set(struct tfc *tfcp, uint16_t fid,
60 		    uint16_t sid, enum cfa_dir dir,
61 		    enum cfa_resource_subtype_idx_tbl subtype,
62 		    uint16_t id, const uint32_t *dev_data, uint8_t data_size);
63 
64 int
65 tfc_msg_idx_tbl_get(struct tfc *tfcp, uint16_t fid,
66 		    uint16_t sid, enum cfa_dir dir,
67 		    enum cfa_resource_subtype_idx_tbl subtype,
68 		    uint16_t id, uint32_t *dev_data, uint8_t *data_size);
69 
70 int
71 tfc_msg_idx_tbl_free(struct tfc *tfcp, uint16_t fid,
72 		     uint16_t sid, enum cfa_dir dir,
73 		     enum cfa_resource_subtype_idx_tbl subtype, uint16_t id);
74 
75 int tfc_msg_global_id_alloc(struct tfc *tfcp, uint16_t fid, uint16_t sid,
76 			    enum tfc_domain_id domain_id, uint16_t req_cnt,
77 			    const struct tfc_global_id_req *glb_id_req,
78 			    struct tfc_global_id *rsp, uint16_t *rsp_cnt,
79 			    bool *first);
80 int
81 tfc_msg_session_id_alloc(struct tfc *tfcp, uint16_t fid, uint16_t *tsid);
82 
83 int
84 tfc_msg_session_fid_add(struct tfc *tfcp, uint16_t fid,
85 			uint16_t sid, uint16_t *fid_cnt);
86 int
87 tfc_msg_session_fid_rem(struct tfc *tfcp, uint16_t fid,
88 			uint16_t sid, uint16_t *fid_cnt);
89 
90 int tfc_msg_identifier_alloc(struct tfc *tfcp, enum cfa_dir dir,
91 			     enum cfa_resource_subtype_ident subtype,
92 			     enum cfa_track_type tt, uint16_t fid,
93 			     uint16_t sid, uint16_t *ident_id);
94 
95 int tfc_msg_identifier_free(struct tfc *tfcp, enum cfa_dir dir,
96 			    enum cfa_resource_subtype_ident subtype,
97 			    uint16_t fid, uint16_t sid,
98 			    uint16_t ident_id);
99 
100 #ifndef TFC_FORCE_POOL_0
101 int
102 tfc_msg_tbl_scope_pool_alloc(struct tfc *tfcp,
103 			     uint8_t tsid,
104 			     enum cfa_dir dir,
105 			     enum tfc_ts_table_type type,
106 			     uint16_t *pool_id,
107 			     uint8_t *lkup_pool_sz_exp);
108 
109 int
110 tfc_msg_tbl_scope_pool_free(struct tfc *tfcp,
111 			    uint8_t tsid,
112 			    enum cfa_dir dir,
113 			    enum tfc_ts_table_type type,
114 			    uint16_t pool_id);
115 #endif /* !TFC_FORCE_POOL_0 */
116 
117 int
118 tfc_msg_tbl_scope_config_get(struct tfc *tfcp, uint8_t tsid, bool *configured);
119 
120 int
121 tfc_msg_tcam_alloc(struct tfc *tfcp, uint16_t fid, uint16_t sid,
122 		   enum cfa_dir dir, enum cfa_resource_subtype_tcam subtype,
123 		   enum cfa_track_type tt, uint16_t pri, uint16_t key_sz_words,
124 		   uint16_t *tcam_id);
125 
126 int
127 tfc_msg_tcam_alloc_set(struct tfc *tfcp, uint16_t fid, uint16_t sid,
128 		       enum cfa_dir dir, enum cfa_resource_subtype_tcam subtype,
129 		       enum cfa_track_type tt, uint16_t *tcam_id, uint16_t pri,
130 		       const uint8_t *key, uint8_t key_size, const uint8_t *mask,
131 		       const uint8_t *remap, uint8_t remap_size);
132 
133 int
134 tfc_msg_tcam_set(struct tfc *tfcp, uint16_t fid, uint16_t sid,
135 		 enum cfa_dir dir, enum cfa_resource_subtype_tcam subtype,
136 		 uint16_t tcam_id, const uint8_t *key, uint8_t key_size,
137 		 const uint8_t *mask, const uint8_t *remap,
138 		 uint8_t remap_size);
139 
140 int
141 tfc_msg_tcam_get(struct tfc *tfcp, uint16_t fid, uint16_t sid,
142 		 enum cfa_dir dir, enum cfa_resource_subtype_tcam subtype,
143 		 uint16_t tcam_id, uint8_t *key, uint8_t *key_size,
144 		 uint8_t *mask, uint8_t *remap, uint8_t *remap_size);
145 
146 int
147 tfc_msg_tcam_free(struct tfc *tfcp, uint16_t fid, uint16_t sid,
148 		 enum cfa_dir dir, enum cfa_resource_subtype_tcam subtype,
149 		 uint16_t tcam_id);
150 
151 int
152 tfc_msg_if_tbl_set(struct tfc *tfcp, uint16_t fid, uint16_t sid,
153 		   enum cfa_dir dir, enum cfa_resource_subtype_if_tbl subtype,
154 		   uint16_t index, uint8_t data_size, const uint8_t *data);
155 
156 int
157 tfc_msg_if_tbl_get(struct tfc *tfcp, uint16_t fid, uint16_t sid,
158 		   enum cfa_dir dir, enum cfa_resource_subtype_if_tbl subtype,
159 		   uint16_t index, uint8_t *data_size, uint8_t *data);
160 
161 #ifdef TF_FLOW_SCALE_QUERY
162 int tfc_msg_resc_usage_query(struct tfc *tfcp, uint16_t sid, enum cfa_dir dir,
163 			     uint16_t *data_size, void *data);
164 #endif /* TF_FLOW_SCALE_QUERY  */
165