1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2014-2021 Broadcom
6 /* date: Tue Dec 1 10:17:11 2020 */
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 .result_num_entries = 16384,
18 .result_num_bytes = 16,
19 .result_byte_order = BNXT_ULP_BYTE_ORDER_LE
21 [BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_L2_CNTXT_TCAM << 1 |
22 BNXT_ULP_DIRECTION_EGRESS] = {
23 .result_num_entries = 16384,
24 .result_num_bytes = 16,
25 .result_byte_order = BNXT_ULP_BYTE_ORDER_LE
27 [BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_PROFILE_TCAM << 1 |
28 BNXT_ULP_DIRECTION_INGRESS] = {
29 .result_num_entries = 16384,
30 .result_num_bytes = 16,
31 .result_byte_order = BNXT_ULP_BYTE_ORDER_LE
33 [BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_PROFILE_TCAM << 1 |
34 BNXT_ULP_DIRECTION_EGRESS] = {
35 .result_num_entries = 16384,
36 .result_num_bytes = 16,
37 .result_byte_order = BNXT_ULP_BYTE_ORDER_LE
39 [BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_MIRROR_TBL << 1 |
40 BNXT_ULP_DIRECTION_INGRESS] = {
41 .result_num_entries = 16,
42 .result_num_bytes = 16,
43 .result_byte_order = BNXT_ULP_BYTE_ORDER_LE
45 [BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_MIRROR_TBL << 1 |
46 BNXT_ULP_DIRECTION_EGRESS] = {
47 .result_num_entries = 16,
48 .result_num_bytes = 16,
49 .result_byte_order = BNXT_ULP_BYTE_ORDER_LE
54 const struct bnxt_ulp_template_device_tbls ulp_template_stingray_tbls[] = {
55 [BNXT_ULP_TEMPLATE_TYPE_CLASS] = {
56 .tmpl_list = ulp_stingray_class_tmpl_list,
57 .tmpl_list_size = ULP_STINGRAY_CLASS_TMPL_LIST_SIZE,
58 .tbl_list = ulp_stingray_class_tbl_list,
59 .tbl_list_size = ULP_STINGRAY_CLASS_TBL_LIST_SIZE,
60 .key_info_list = ulp_stingray_class_key_info_list,
61 .key_info_list_size = ULP_STINGRAY_CLASS_KEY_INFO_LIST_SIZE,
62 .ident_list = ulp_stingray_class_ident_list,
63 .ident_list_size = ULP_STINGRAY_CLASS_IDENT_LIST_SIZE,
64 .cond_list = ulp_stingray_class_cond_list,
65 .cond_list_size = ULP_STINGRAY_CLASS_COND_LIST_SIZE,
66 .result_field_list = ulp_stingray_class_result_field_list,
67 .result_field_list_size = ULP_STINGRAY_CLASS_RESULT_FIELD_LIST_SIZE
69 [BNXT_ULP_TEMPLATE_TYPE_ACTION] = {
70 .tmpl_list = ulp_stingray_act_tmpl_list,
71 .tmpl_list_size = ULP_STINGRAY_ACT_TMPL_LIST_SIZE,
72 .tbl_list = ulp_stingray_act_tbl_list,
73 .tbl_list_size = ULP_STINGRAY_ACT_TBL_LIST_SIZE,
74 .cond_list = ulp_stingray_act_cond_list,
75 .cond_list_size = ULP_STINGRAY_ACT_COND_LIST_SIZE,
76 .result_field_list = ulp_stingray_act_result_field_list,
77 .result_field_list_size = ULP_STINGRAY_ACT_RESULT_FIELD_LIST_SIZE
82 const struct bnxt_ulp_template_device_tbls ulp_template_wh_plus_tbls[] = {
83 [BNXT_ULP_TEMPLATE_TYPE_CLASS] = {
84 .tmpl_list = ulp_wh_plus_class_tmpl_list,
85 .tmpl_list_size = ULP_WH_PLUS_CLASS_TMPL_LIST_SIZE,
86 .tbl_list = ulp_wh_plus_class_tbl_list,
87 .tbl_list_size = ULP_WH_PLUS_CLASS_TBL_LIST_SIZE,
88 .key_info_list = ulp_wh_plus_class_key_info_list,
89 .key_info_list_size = ULP_WH_PLUS_CLASS_KEY_INFO_LIST_SIZE,
90 .ident_list = ulp_wh_plus_class_ident_list,
91 .ident_list_size = ULP_WH_PLUS_CLASS_IDENT_LIST_SIZE,
92 .cond_list = ulp_wh_plus_class_cond_list,
93 .cond_list_size = ULP_WH_PLUS_CLASS_COND_LIST_SIZE,
94 .result_field_list = ulp_wh_plus_class_result_field_list,
95 .result_field_list_size = ULP_WH_PLUS_CLASS_RESULT_FIELD_LIST_SIZE
97 [BNXT_ULP_TEMPLATE_TYPE_ACTION] = {
98 .tmpl_list = ulp_wh_plus_act_tmpl_list,
99 .tmpl_list_size = ULP_WH_PLUS_ACT_TMPL_LIST_SIZE,
100 .tbl_list = ulp_wh_plus_act_tbl_list,
101 .tbl_list_size = ULP_WH_PLUS_ACT_TBL_LIST_SIZE,
102 .cond_list = ulp_wh_plus_act_cond_list,
103 .cond_list_size = ULP_WH_PLUS_ACT_COND_LIST_SIZE,
104 .result_field_list = ulp_wh_plus_act_result_field_list,
105 .result_field_list_size = ULP_WH_PLUS_ACT_RESULT_FIELD_LIST_SIZE
109 /* List of device specific parameters */
110 struct bnxt_ulp_device_params ulp_device_params[BNXT_ULP_DEVICE_ID_LAST] = {
111 [BNXT_ULP_DEVICE_ID_WH_PLUS] = {
112 .description = "Whitney_Plus",
113 .byte_order = BNXT_ULP_BYTE_ORDER_LE,
114 .encap_byte_swap = 1,
115 .int_flow_db_num_entries = 16384,
116 .ext_flow_db_num_entries = 32768,
117 .mark_db_lfid_entries = 65536,
118 .mark_db_gfid_entries = 65536,
119 .flow_count_db_entries = 16384,
120 .fdb_parent_flow_entries = 2,
121 .num_resources_per_flow = 8,
123 .ext_cntr_table_type = 0,
124 .byte_count_mask = 0x0000000fffffffff,
125 .packet_count_mask = 0xffffffff00000000,
126 .byte_count_shift = 0,
127 .packet_count_shift = 36,
128 .dev_tbls = ulp_template_wh_plus_tbls
130 [BNXT_ULP_DEVICE_ID_STINGRAY] = {
131 .description = "Stingray",
132 .byte_order = BNXT_ULP_BYTE_ORDER_LE,
133 .encap_byte_swap = 1,
134 .int_flow_db_num_entries = 16384,
135 .ext_flow_db_num_entries = 32768,
136 .mark_db_lfid_entries = 65536,
137 .mark_db_gfid_entries = 65536,
138 .flow_count_db_entries = 16384,
139 .fdb_parent_flow_entries = 2,
140 .num_resources_per_flow = 8,
142 .ext_cntr_table_type = 0,
143 .byte_count_mask = 0x0000000fffffffff,
144 .packet_count_mask = 0xffffffff00000000,
145 .byte_count_shift = 0,
146 .packet_count_shift = 36,
147 .dev_tbls = ulp_template_stingray_tbls
151 /* List of device specific parameters */
152 struct bnxt_ulp_glb_resource_info ulp_glb_resource_tbl[] = {
154 .resource_func = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
155 .resource_type = TF_IDENT_TYPE_PROF_FUNC,
156 .glb_regfile_index = BNXT_ULP_GLB_RF_IDX_GLB_PROF_FUNC_ID,
157 .direction = TF_DIR_RX
160 .resource_func = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
161 .resource_type = TF_IDENT_TYPE_PROF_FUNC,
162 .glb_regfile_index = BNXT_ULP_GLB_RF_IDX_GLB_PROF_FUNC_ID,
163 .direction = TF_DIR_TX
166 .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
167 .resource_type = TF_TBL_TYPE_FULL_ACT_RECORD,
168 .glb_regfile_index = BNXT_ULP_GLB_RF_IDX_GLB_LB_AREC_PTR,
169 .direction = TF_DIR_TX
172 .resource_func = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
173 .resource_type = TF_IDENT_TYPE_PROF_FUNC,
174 .glb_regfile_index = BNXT_ULP_GLB_RF_IDX_L2_PROF_FUNC_ID,
175 .direction = TF_DIR_RX
178 .resource_func = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
179 .resource_type = TF_IDENT_TYPE_PROF_FUNC,
180 .glb_regfile_index = BNXT_ULP_GLB_RF_IDX_L2_PROF_FUNC_ID,
181 .direction = TF_DIR_TX
184 .resource_func = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
185 .resource_type = TF_IDENT_TYPE_PROF_FUNC,
186 .glb_regfile_index = BNXT_ULP_GLB_RF_IDX_VXLAN_PROF_FUNC_ID,
187 .direction = TF_DIR_RX
190 .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
191 .resource_type = TF_TBL_TYPE_ACT_ENCAP_16B,
192 .glb_regfile_index = BNXT_ULP_GLB_RF_IDX_ENCAP_MAC_PTR,
193 .direction = TF_DIR_RX
196 .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
197 .resource_type = TF_TBL_TYPE_ACT_ENCAP_16B,
198 .glb_regfile_index = BNXT_ULP_GLB_RF_IDX_ENCAP_MAC_PTR,
199 .direction = TF_DIR_TX
203 /* Lists global action records */
204 uint32_t ulp_glb_template_tbl[] = {
205 BNXT_ULP_DF_TPL_LOOPBACK_ACTION_REC
208 /* Provides act_bitmask */
209 struct bnxt_ulp_shared_act_info ulp_shared_act_info[] = {
210 [BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_MIRROR_TBL << 1 |
211 BNXT_ULP_DIRECTION_INGRESS] = {
212 .act_bitmask = BNXT_ULP_ACT_BIT_SHARED_SAMPLE
214 [BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_MIRROR_TBL << 1 |
215 BNXT_ULP_DIRECTION_EGRESS] = {
216 .act_bitmask = BNXT_ULP_ACT_BIT_SHARED_SAMPLE
220 uint32_t ulp_act_prop_map_table[] = {
221 [BNXT_ULP_ACT_PROP_IDX_ENCAP_TUN_SZ] =
222 BNXT_ULP_ACT_PROP_SZ_ENCAP_TUN_SZ,
223 [BNXT_ULP_ACT_PROP_IDX_ENCAP_IP_SZ] =
224 BNXT_ULP_ACT_PROP_SZ_ENCAP_IP_SZ,
225 [BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_SZ] =
226 BNXT_ULP_ACT_PROP_SZ_ENCAP_VTAG_SZ,
227 [BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_TYPE] =
228 BNXT_ULP_ACT_PROP_SZ_ENCAP_VTAG_TYPE,
229 [BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_NUM] =
230 BNXT_ULP_ACT_PROP_SZ_ENCAP_VTAG_NUM,
231 [BNXT_ULP_ACT_PROP_IDX_ENCAP_L3_TYPE] =
232 BNXT_ULP_ACT_PROP_SZ_ENCAP_L3_TYPE,
233 [BNXT_ULP_ACT_PROP_IDX_MPLS_POP_NUM] =
234 BNXT_ULP_ACT_PROP_SZ_MPLS_POP_NUM,
235 [BNXT_ULP_ACT_PROP_IDX_MPLS_PUSH_NUM] =
236 BNXT_ULP_ACT_PROP_SZ_MPLS_PUSH_NUM,
237 [BNXT_ULP_ACT_PROP_IDX_PORT_ID] =
238 BNXT_ULP_ACT_PROP_SZ_PORT_ID,
239 [BNXT_ULP_ACT_PROP_IDX_VNIC] =
240 BNXT_ULP_ACT_PROP_SZ_VNIC,
241 [BNXT_ULP_ACT_PROP_IDX_VPORT] =
242 BNXT_ULP_ACT_PROP_SZ_VPORT,
243 [BNXT_ULP_ACT_PROP_IDX_MARK] =
244 BNXT_ULP_ACT_PROP_SZ_MARK,
245 [BNXT_ULP_ACT_PROP_IDX_COUNT] =
246 BNXT_ULP_ACT_PROP_SZ_COUNT,
247 [BNXT_ULP_ACT_PROP_IDX_METER] =
248 BNXT_ULP_ACT_PROP_SZ_METER,
249 [BNXT_ULP_ACT_PROP_IDX_SET_MAC_SRC] =
250 BNXT_ULP_ACT_PROP_SZ_SET_MAC_SRC,
251 [BNXT_ULP_ACT_PROP_IDX_SET_MAC_DST] =
252 BNXT_ULP_ACT_PROP_SZ_SET_MAC_DST,
253 [BNXT_ULP_ACT_PROP_IDX_PUSH_VLAN] =
254 BNXT_ULP_ACT_PROP_SZ_PUSH_VLAN,
255 [BNXT_ULP_ACT_PROP_IDX_SET_VLAN_PCP] =
256 BNXT_ULP_ACT_PROP_SZ_SET_VLAN_PCP,
257 [BNXT_ULP_ACT_PROP_IDX_SET_VLAN_VID] =
258 BNXT_ULP_ACT_PROP_SZ_SET_VLAN_VID,
259 [BNXT_ULP_ACT_PROP_IDX_SET_IPV4_SRC] =
260 BNXT_ULP_ACT_PROP_SZ_SET_IPV4_SRC,
261 [BNXT_ULP_ACT_PROP_IDX_SET_IPV4_DST] =
262 BNXT_ULP_ACT_PROP_SZ_SET_IPV4_DST,
263 [BNXT_ULP_ACT_PROP_IDX_SET_IPV6_SRC] =
264 BNXT_ULP_ACT_PROP_SZ_SET_IPV6_SRC,
265 [BNXT_ULP_ACT_PROP_IDX_SET_IPV6_DST] =
266 BNXT_ULP_ACT_PROP_SZ_SET_IPV6_DST,
267 [BNXT_ULP_ACT_PROP_IDX_SET_TP_SRC] =
268 BNXT_ULP_ACT_PROP_SZ_SET_TP_SRC,
269 [BNXT_ULP_ACT_PROP_IDX_SET_TP_DST] =
270 BNXT_ULP_ACT_PROP_SZ_SET_TP_DST,
271 [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_0] =
272 BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_0,
273 [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_1] =
274 BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_1,
275 [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_2] =
276 BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_2,
277 [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_3] =
278 BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_3,
279 [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_4] =
280 BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_4,
281 [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_5] =
282 BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_5,
283 [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_6] =
284 BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_6,
285 [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_7] =
286 BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_7,
287 [BNXT_ULP_ACT_PROP_IDX_ENCAP_L2_DMAC] =
288 BNXT_ULP_ACT_PROP_SZ_ENCAP_L2_DMAC,
289 [BNXT_ULP_ACT_PROP_IDX_ENCAP_L2_SMAC] =
290 BNXT_ULP_ACT_PROP_SZ_ENCAP_L2_SMAC,
291 [BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG] =
292 BNXT_ULP_ACT_PROP_SZ_ENCAP_VTAG,
293 [BNXT_ULP_ACT_PROP_IDX_ENCAP_IP] =
294 BNXT_ULP_ACT_PROP_SZ_ENCAP_IP,
295 [BNXT_ULP_ACT_PROP_IDX_ENCAP_IP_SRC] =
296 BNXT_ULP_ACT_PROP_SZ_ENCAP_IP_SRC,
297 [BNXT_ULP_ACT_PROP_IDX_ENCAP_UDP] =
298 BNXT_ULP_ACT_PROP_SZ_ENCAP_UDP,
299 [BNXT_ULP_ACT_PROP_IDX_ENCAP_TUN] =
300 BNXT_ULP_ACT_PROP_SZ_ENCAP_TUN,
301 [BNXT_ULP_ACT_PROP_IDX_JUMP] =
302 BNXT_ULP_ACT_PROP_SZ_JUMP,
303 [BNXT_ULP_ACT_PROP_IDX_SHARED_HANDLE] =
304 BNXT_ULP_ACT_PROP_SZ_SHARED_HANDLE,
305 [BNXT_ULP_ACT_PROP_IDX_LAST] =
306 BNXT_ULP_ACT_PROP_SZ_LAST
309 uint8_t ulp_glb_field_tbl[] = {