1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2014-2021 Broadcom
6 /* date: Fri Jan 29 11:27:48 2021 */
8 #include "ulp_template_db_enum.h"
9 #include "ulp_template_db_field.h"
10 #include "ulp_template_struct.h"
11 #include "ulp_template_db_tbl.h"
13 /* Specifies parameters for the cache and shared tables */
14 struct bnxt_ulp_generic_tbl_params ulp_generic_tbl_params[] = {
15 [BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_L2_CNTXT_TCAM << 1 |
16 BNXT_ULP_DIRECTION_INGRESS] = {
17 .name = "INGRESS GENERIC_TABLE_L2_CNTXT_TCAM",
18 .result_num_entries = 256,
19 .result_num_bytes = 8,
22 .hash_tbl_entries = 0,
23 .result_byte_order = BNXT_ULP_BYTE_ORDER_LE
25 [BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_L2_CNTXT_TCAM << 1 |
26 BNXT_ULP_DIRECTION_EGRESS] = {
27 .name = "EGRESS GENERIC_TABLE_L2_CNTXT_TCAM",
28 .result_num_entries = 256,
29 .result_num_bytes = 8,
32 .hash_tbl_entries = 0,
33 .result_byte_order = BNXT_ULP_BYTE_ORDER_LE
35 [BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_PROFILE_TCAM << 1 |
36 BNXT_ULP_DIRECTION_INGRESS] = {
37 .name = "INGRESS GENERIC_TABLE_PROFILE_TCAM",
38 .result_num_entries = 16384,
39 .result_num_bytes = 16,
42 .hash_tbl_entries = 0,
43 .result_byte_order = BNXT_ULP_BYTE_ORDER_LE
45 [BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_PROFILE_TCAM << 1 |
46 BNXT_ULP_DIRECTION_EGRESS] = {
47 .name = "EGRESS GENERIC_TABLE_PROFILE_TCAM",
48 .result_num_entries = 16384,
49 .result_num_bytes = 16,
52 .hash_tbl_entries = 0,
53 .result_byte_order = BNXT_ULP_BYTE_ORDER_LE
55 [BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_SHARED_MIRROR << 1 |
56 BNXT_ULP_DIRECTION_INGRESS] = {
57 .name = "INGRESS GENERIC_TABLE_SHARED_MIRROR",
58 .result_num_entries = 16,
59 .result_num_bytes = 16,
62 .hash_tbl_entries = 0,
63 .result_byte_order = BNXT_ULP_BYTE_ORDER_LE
65 [BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_SHARED_MIRROR << 1 |
66 BNXT_ULP_DIRECTION_EGRESS] = {
67 .name = "EGRESS GENERIC_TABLE_SHARED_MIRROR",
68 .result_num_entries = 16,
69 .result_num_bytes = 16,
72 .hash_tbl_entries = 0,
73 .result_byte_order = BNXT_ULP_BYTE_ORDER_LE
75 [BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_MAC_ADDR_CACHE << 1 |
76 BNXT_ULP_DIRECTION_INGRESS] = {
77 .name = "INGRESS GENERIC_TABLE_MAC_ADDR_CACHE",
78 .result_num_entries = 256,
79 .result_num_bytes = 8,
82 .hash_tbl_entries = 1024,
83 .result_byte_order = BNXT_ULP_BYTE_ORDER_LE
85 [BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_MAC_ADDR_CACHE << 1 |
86 BNXT_ULP_DIRECTION_EGRESS] = {
87 .name = "EGRESS GENERIC_TABLE_MAC_ADDR_CACHE",
88 .result_num_entries = 256,
89 .result_num_bytes = 8,
92 .hash_tbl_entries = 1024,
93 .result_byte_order = BNXT_ULP_BYTE_ORDER_LE
98 const struct bnxt_ulp_template_device_tbls ulp_template_stingray_tbls[] = {
99 [BNXT_ULP_TEMPLATE_TYPE_CLASS] = {
100 .tmpl_list = ulp_stingray_class_tmpl_list,
101 .tmpl_list_size = ULP_STINGRAY_CLASS_TMPL_LIST_SIZE,
102 .tbl_list = ulp_stingray_class_tbl_list,
103 .tbl_list_size = ULP_STINGRAY_CLASS_TBL_LIST_SIZE,
104 .key_info_list = ulp_stingray_class_key_info_list,
105 .key_info_list_size = ULP_STINGRAY_CLASS_KEY_INFO_LIST_SIZE,
106 .ident_list = ulp_stingray_class_ident_list,
107 .ident_list_size = ULP_STINGRAY_CLASS_IDENT_LIST_SIZE,
108 .cond_list = ulp_stingray_class_cond_list,
109 .cond_list_size = ULP_STINGRAY_CLASS_COND_LIST_SIZE,
110 .result_field_list = ulp_stingray_class_result_field_list,
111 .result_field_list_size = ULP_STINGRAY_CLASS_RESULT_FIELD_LIST_SIZE
113 [BNXT_ULP_TEMPLATE_TYPE_ACTION] = {
114 .tmpl_list = ulp_stingray_act_tmpl_list,
115 .tmpl_list_size = ULP_STINGRAY_ACT_TMPL_LIST_SIZE,
116 .tbl_list = ulp_stingray_act_tbl_list,
117 .tbl_list_size = ULP_STINGRAY_ACT_TBL_LIST_SIZE,
118 .cond_list = ulp_stingray_act_cond_list,
119 .cond_list_size = ULP_STINGRAY_ACT_COND_LIST_SIZE,
120 .result_field_list = ulp_stingray_act_result_field_list,
121 .result_field_list_size = ULP_STINGRAY_ACT_RESULT_FIELD_LIST_SIZE
126 const struct bnxt_ulp_template_device_tbls ulp_template_wh_plus_tbls[] = {
127 [BNXT_ULP_TEMPLATE_TYPE_CLASS] = {
128 .tmpl_list = ulp_wh_plus_class_tmpl_list,
129 .tmpl_list_size = ULP_WH_PLUS_CLASS_TMPL_LIST_SIZE,
130 .tbl_list = ulp_wh_plus_class_tbl_list,
131 .tbl_list_size = ULP_WH_PLUS_CLASS_TBL_LIST_SIZE,
132 .key_info_list = ulp_wh_plus_class_key_info_list,
133 .key_info_list_size = ULP_WH_PLUS_CLASS_KEY_INFO_LIST_SIZE,
134 .ident_list = ulp_wh_plus_class_ident_list,
135 .ident_list_size = ULP_WH_PLUS_CLASS_IDENT_LIST_SIZE,
136 .cond_list = ulp_wh_plus_class_cond_list,
137 .cond_list_size = ULP_WH_PLUS_CLASS_COND_LIST_SIZE,
138 .result_field_list = ulp_wh_plus_class_result_field_list,
139 .result_field_list_size = ULP_WH_PLUS_CLASS_RESULT_FIELD_LIST_SIZE
141 [BNXT_ULP_TEMPLATE_TYPE_ACTION] = {
142 .tmpl_list = ulp_wh_plus_act_tmpl_list,
143 .tmpl_list_size = ULP_WH_PLUS_ACT_TMPL_LIST_SIZE,
144 .tbl_list = ulp_wh_plus_act_tbl_list,
145 .tbl_list_size = ULP_WH_PLUS_ACT_TBL_LIST_SIZE,
146 .key_info_list = ulp_wh_plus_act_key_info_list,
147 .key_info_list_size = ULP_WH_PLUS_ACT_KEY_INFO_LIST_SIZE,
148 .ident_list = ulp_wh_plus_act_ident_list,
149 .ident_list_size = ULP_WH_PLUS_ACT_IDENT_LIST_SIZE,
150 .cond_list = ulp_wh_plus_act_cond_list,
151 .cond_list_size = ULP_WH_PLUS_ACT_COND_LIST_SIZE,
152 .result_field_list = ulp_wh_plus_act_result_field_list,
153 .result_field_list_size = ULP_WH_PLUS_ACT_RESULT_FIELD_LIST_SIZE
157 /* List of device specific parameters */
158 struct bnxt_ulp_device_params ulp_device_params[BNXT_ULP_DEVICE_ID_LAST] = {
159 [BNXT_ULP_DEVICE_ID_WH_PLUS] = {
160 .description = "Whitney_Plus",
161 .byte_order = BNXT_ULP_BYTE_ORDER_LE,
162 .encap_byte_swap = 1,
163 .int_flow_db_num_entries = 16384,
164 .ext_flow_db_num_entries = 32768,
165 .mark_db_lfid_entries = 65536,
166 .mark_db_gfid_entries = 65536,
167 .flow_count_db_entries = 16384,
168 .fdb_parent_flow_entries = 2,
169 .num_resources_per_flow = 8,
171 .ext_cntr_table_type = 0,
172 .byte_count_mask = 0x0000000fffffffff,
173 .packet_count_mask = 0xffffffff00000000,
174 .byte_count_shift = 0,
175 .packet_count_shift = 36,
176 .dev_tbls = ulp_template_wh_plus_tbls
178 [BNXT_ULP_DEVICE_ID_STINGRAY] = {
179 .description = "Stingray",
180 .byte_order = BNXT_ULP_BYTE_ORDER_LE,
181 .encap_byte_swap = 1,
182 .int_flow_db_num_entries = 16384,
183 .ext_flow_db_num_entries = 32768,
184 .mark_db_lfid_entries = 65536,
185 .mark_db_gfid_entries = 65536,
186 .flow_count_db_entries = 16384,
187 .fdb_parent_flow_entries = 2,
188 .num_resources_per_flow = 8,
190 .ext_cntr_table_type = 0,
191 .byte_count_mask = 0x0000000fffffffff,
192 .packet_count_mask = 0xffffffff00000000,
193 .byte_count_shift = 0,
194 .packet_count_shift = 36,
195 .dev_tbls = ulp_template_stingray_tbls
199 /* List of device specific parameters */
200 struct bnxt_ulp_glb_resource_info ulp_glb_resource_tbl[] = {
202 .resource_func = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
203 .resource_type = TF_IDENT_TYPE_PROF_FUNC,
204 .glb_regfile_index = BNXT_ULP_GLB_RF_IDX_GLB_PROF_FUNC_ID,
205 .direction = TF_DIR_RX
208 .resource_func = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
209 .resource_type = TF_IDENT_TYPE_PROF_FUNC,
210 .glb_regfile_index = BNXT_ULP_GLB_RF_IDX_GLB_PROF_FUNC_ID,
211 .direction = TF_DIR_TX
214 .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
215 .resource_type = TF_TBL_TYPE_FULL_ACT_RECORD,
216 .glb_regfile_index = BNXT_ULP_GLB_RF_IDX_GLB_LB_AREC_PTR,
217 .direction = TF_DIR_TX
220 .resource_func = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
221 .resource_type = TF_IDENT_TYPE_PROF_FUNC,
222 .glb_regfile_index = BNXT_ULP_GLB_RF_IDX_L2_PROF_FUNC_ID,
223 .direction = TF_DIR_RX
226 .resource_func = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
227 .resource_type = TF_IDENT_TYPE_PROF_FUNC,
228 .glb_regfile_index = BNXT_ULP_GLB_RF_IDX_L2_PROF_FUNC_ID,
229 .direction = TF_DIR_TX
232 .resource_func = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
233 .resource_type = TF_IDENT_TYPE_PROF_FUNC,
234 .glb_regfile_index = BNXT_ULP_GLB_RF_IDX_VXLAN_PROF_FUNC_ID,
235 .direction = TF_DIR_RX
238 .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
239 .resource_type = TF_TBL_TYPE_ACT_ENCAP_16B,
240 .glb_regfile_index = BNXT_ULP_GLB_RF_IDX_ENCAP_MAC_PTR,
241 .direction = TF_DIR_RX
244 .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
245 .resource_type = TF_TBL_TYPE_ACT_ENCAP_16B,
246 .glb_regfile_index = BNXT_ULP_GLB_RF_IDX_ENCAP_MAC_PTR,
247 .direction = TF_DIR_TX
251 /* Lists global action records */
252 uint32_t ulp_glb_template_tbl[] = {
253 BNXT_ULP_DF_TPL_LOOPBACK_ACTION_REC
256 /* Provides act_bitmask */
257 struct bnxt_ulp_shared_act_info ulp_shared_act_info[] = {
258 [BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_SHARED_MIRROR << 1 |
259 BNXT_ULP_DIRECTION_INGRESS] = {
260 .act_bitmask = BNXT_ULP_ACT_BIT_SHARED_SAMPLE
262 [BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_SHARED_MIRROR << 1 |
263 BNXT_ULP_DIRECTION_EGRESS] = {
264 .act_bitmask = BNXT_ULP_ACT_BIT_SHARED_SAMPLE
268 uint32_t ulp_act_prop_map_table[] = {
269 [BNXT_ULP_ACT_PROP_IDX_ENCAP_TUN_SZ] =
270 BNXT_ULP_ACT_PROP_SZ_ENCAP_TUN_SZ,
271 [BNXT_ULP_ACT_PROP_IDX_ENCAP_IP_SZ] =
272 BNXT_ULP_ACT_PROP_SZ_ENCAP_IP_SZ,
273 [BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_SZ] =
274 BNXT_ULP_ACT_PROP_SZ_ENCAP_VTAG_SZ,
275 [BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_TYPE] =
276 BNXT_ULP_ACT_PROP_SZ_ENCAP_VTAG_TYPE,
277 [BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_NUM] =
278 BNXT_ULP_ACT_PROP_SZ_ENCAP_VTAG_NUM,
279 [BNXT_ULP_ACT_PROP_IDX_ENCAP_L3_TYPE] =
280 BNXT_ULP_ACT_PROP_SZ_ENCAP_L3_TYPE,
281 [BNXT_ULP_ACT_PROP_IDX_MPLS_POP_NUM] =
282 BNXT_ULP_ACT_PROP_SZ_MPLS_POP_NUM,
283 [BNXT_ULP_ACT_PROP_IDX_MPLS_PUSH_NUM] =
284 BNXT_ULP_ACT_PROP_SZ_MPLS_PUSH_NUM,
285 [BNXT_ULP_ACT_PROP_IDX_PORT_ID] =
286 BNXT_ULP_ACT_PROP_SZ_PORT_ID,
287 [BNXT_ULP_ACT_PROP_IDX_VNIC] =
288 BNXT_ULP_ACT_PROP_SZ_VNIC,
289 [BNXT_ULP_ACT_PROP_IDX_VPORT] =
290 BNXT_ULP_ACT_PROP_SZ_VPORT,
291 [BNXT_ULP_ACT_PROP_IDX_MARK] =
292 BNXT_ULP_ACT_PROP_SZ_MARK,
293 [BNXT_ULP_ACT_PROP_IDX_COUNT] =
294 BNXT_ULP_ACT_PROP_SZ_COUNT,
295 [BNXT_ULP_ACT_PROP_IDX_METER] =
296 BNXT_ULP_ACT_PROP_SZ_METER,
297 [BNXT_ULP_ACT_PROP_IDX_SET_MAC_SRC] =
298 BNXT_ULP_ACT_PROP_SZ_SET_MAC_SRC,
299 [BNXT_ULP_ACT_PROP_IDX_SET_MAC_DST] =
300 BNXT_ULP_ACT_PROP_SZ_SET_MAC_DST,
301 [BNXT_ULP_ACT_PROP_IDX_PUSH_VLAN] =
302 BNXT_ULP_ACT_PROP_SZ_PUSH_VLAN,
303 [BNXT_ULP_ACT_PROP_IDX_SET_VLAN_PCP] =
304 BNXT_ULP_ACT_PROP_SZ_SET_VLAN_PCP,
305 [BNXT_ULP_ACT_PROP_IDX_SET_VLAN_VID] =
306 BNXT_ULP_ACT_PROP_SZ_SET_VLAN_VID,
307 [BNXT_ULP_ACT_PROP_IDX_SET_IPV4_SRC] =
308 BNXT_ULP_ACT_PROP_SZ_SET_IPV4_SRC,
309 [BNXT_ULP_ACT_PROP_IDX_SET_IPV4_DST] =
310 BNXT_ULP_ACT_PROP_SZ_SET_IPV4_DST,
311 [BNXT_ULP_ACT_PROP_IDX_SET_IPV6_SRC] =
312 BNXT_ULP_ACT_PROP_SZ_SET_IPV6_SRC,
313 [BNXT_ULP_ACT_PROP_IDX_SET_IPV6_DST] =
314 BNXT_ULP_ACT_PROP_SZ_SET_IPV6_DST,
315 [BNXT_ULP_ACT_PROP_IDX_SET_TP_SRC] =
316 BNXT_ULP_ACT_PROP_SZ_SET_TP_SRC,
317 [BNXT_ULP_ACT_PROP_IDX_SET_TP_DST] =
318 BNXT_ULP_ACT_PROP_SZ_SET_TP_DST,
319 [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_0] =
320 BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_0,
321 [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_1] =
322 BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_1,
323 [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_2] =
324 BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_2,
325 [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_3] =
326 BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_3,
327 [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_4] =
328 BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_4,
329 [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_5] =
330 BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_5,
331 [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_6] =
332 BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_6,
333 [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_7] =
334 BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_7,
335 [BNXT_ULP_ACT_PROP_IDX_ENCAP_L2_DMAC] =
336 BNXT_ULP_ACT_PROP_SZ_ENCAP_L2_DMAC,
337 [BNXT_ULP_ACT_PROP_IDX_ENCAP_L2_SMAC] =
338 BNXT_ULP_ACT_PROP_SZ_ENCAP_L2_SMAC,
339 [BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG] =
340 BNXT_ULP_ACT_PROP_SZ_ENCAP_VTAG,
341 [BNXT_ULP_ACT_PROP_IDX_ENCAP_IP] =
342 BNXT_ULP_ACT_PROP_SZ_ENCAP_IP,
343 [BNXT_ULP_ACT_PROP_IDX_ENCAP_IP_SRC] =
344 BNXT_ULP_ACT_PROP_SZ_ENCAP_IP_SRC,
345 [BNXT_ULP_ACT_PROP_IDX_ENCAP_UDP] =
346 BNXT_ULP_ACT_PROP_SZ_ENCAP_UDP,
347 [BNXT_ULP_ACT_PROP_IDX_ENCAP_TUN] =
348 BNXT_ULP_ACT_PROP_SZ_ENCAP_TUN,
349 [BNXT_ULP_ACT_PROP_IDX_JUMP] =
350 BNXT_ULP_ACT_PROP_SZ_JUMP,
351 [BNXT_ULP_ACT_PROP_IDX_SHARED_HANDLE] =
352 BNXT_ULP_ACT_PROP_SZ_SHARED_HANDLE,
353 [BNXT_ULP_ACT_PROP_IDX_LAST] =
354 BNXT_ULP_ACT_PROP_SZ_LAST
357 uint8_t ulp_glb_field_tbl[] = {