net/bnxt: consolidate template table processing
[dpdk.git] / drivers / net / bnxt / tf_ulp / ulp_template_db_tbl.c
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2014-2020 Broadcom
3  * All rights reserved.
4  */
5
6 #include "ulp_template_db_enum.h"
7 #include "ulp_template_db_field.h"
8 #include "ulp_template_struct.h"
9 #include "ulp_rte_parser.h"
10 #include "ulp_template_db_tbl.h"
11
12 uint32_t ulp_act_prop_map_table[] = {
13         [BNXT_ULP_ACT_PROP_IDX_ENCAP_TUN_SZ] =
14                 BNXT_ULP_ACT_PROP_SZ_ENCAP_TUN_SZ,
15         [BNXT_ULP_ACT_PROP_IDX_ENCAP_IP_SZ] =
16                 BNXT_ULP_ACT_PROP_SZ_ENCAP_IP_SZ,
17         [BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_SZ] =
18                 BNXT_ULP_ACT_PROP_SZ_ENCAP_VTAG_SZ,
19         [BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_TYPE] =
20                 BNXT_ULP_ACT_PROP_SZ_ENCAP_VTAG_TYPE,
21         [BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_NUM] =
22                 BNXT_ULP_ACT_PROP_SZ_ENCAP_VTAG_NUM,
23         [BNXT_ULP_ACT_PROP_IDX_ENCAP_L3_TYPE] =
24                 BNXT_ULP_ACT_PROP_SZ_ENCAP_L3_TYPE,
25         [BNXT_ULP_ACT_PROP_IDX_MPLS_POP_NUM] =
26                 BNXT_ULP_ACT_PROP_SZ_MPLS_POP_NUM,
27         [BNXT_ULP_ACT_PROP_IDX_MPLS_PUSH_NUM] =
28                 BNXT_ULP_ACT_PROP_SZ_MPLS_PUSH_NUM,
29         [BNXT_ULP_ACT_PROP_IDX_PORT_ID] =
30                 BNXT_ULP_ACT_PROP_SZ_PORT_ID,
31         [BNXT_ULP_ACT_PROP_IDX_VNIC] =
32                 BNXT_ULP_ACT_PROP_SZ_VNIC,
33         [BNXT_ULP_ACT_PROP_IDX_VPORT] =
34                 BNXT_ULP_ACT_PROP_SZ_VPORT,
35         [BNXT_ULP_ACT_PROP_IDX_MARK] =
36                 BNXT_ULP_ACT_PROP_SZ_MARK,
37         [BNXT_ULP_ACT_PROP_IDX_COUNT] =
38                 BNXT_ULP_ACT_PROP_SZ_COUNT,
39         [BNXT_ULP_ACT_PROP_IDX_METER] =
40                 BNXT_ULP_ACT_PROP_SZ_METER,
41         [BNXT_ULP_ACT_PROP_IDX_SET_MAC_SRC] =
42                 BNXT_ULP_ACT_PROP_SZ_SET_MAC_SRC,
43         [BNXT_ULP_ACT_PROP_IDX_SET_MAC_DST] =
44                 BNXT_ULP_ACT_PROP_SZ_SET_MAC_DST,
45         [BNXT_ULP_ACT_PROP_IDX_PUSH_VLAN] =
46                 BNXT_ULP_ACT_PROP_SZ_PUSH_VLAN,
47         [BNXT_ULP_ACT_PROP_IDX_SET_VLAN_PCP] =
48                 BNXT_ULP_ACT_PROP_SZ_SET_VLAN_PCP,
49         [BNXT_ULP_ACT_PROP_IDX_SET_VLAN_VID] =
50                 BNXT_ULP_ACT_PROP_SZ_SET_VLAN_VID,
51         [BNXT_ULP_ACT_PROP_IDX_SET_IPV4_SRC] =
52                 BNXT_ULP_ACT_PROP_SZ_SET_IPV4_SRC,
53         [BNXT_ULP_ACT_PROP_IDX_SET_IPV4_DST] =
54                 BNXT_ULP_ACT_PROP_SZ_SET_IPV4_DST,
55         [BNXT_ULP_ACT_PROP_IDX_SET_IPV6_SRC] =
56                 BNXT_ULP_ACT_PROP_SZ_SET_IPV6_SRC,
57         [BNXT_ULP_ACT_PROP_IDX_SET_IPV6_DST] =
58                 BNXT_ULP_ACT_PROP_SZ_SET_IPV6_DST,
59         [BNXT_ULP_ACT_PROP_IDX_SET_TP_SRC] =
60                 BNXT_ULP_ACT_PROP_SZ_SET_TP_SRC,
61         [BNXT_ULP_ACT_PROP_IDX_SET_TP_DST] =
62                 BNXT_ULP_ACT_PROP_SZ_SET_TP_DST,
63         [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_0] =
64                 BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_0,
65         [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_1] =
66                 BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_1,
67         [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_2] =
68                 BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_2,
69         [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_3] =
70                 BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_3,
71         [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_4] =
72                 BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_4,
73         [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_5] =
74                 BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_5,
75         [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_6] =
76                 BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_6,
77         [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_7] =
78                 BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_7,
79         [BNXT_ULP_ACT_PROP_IDX_ENCAP_L2_DMAC] =
80                 BNXT_ULP_ACT_PROP_SZ_ENCAP_L2_DMAC,
81         [BNXT_ULP_ACT_PROP_IDX_ENCAP_L2_SMAC] =
82                 BNXT_ULP_ACT_PROP_SZ_ENCAP_L2_SMAC,
83         [BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG] =
84                 BNXT_ULP_ACT_PROP_SZ_ENCAP_VTAG,
85         [BNXT_ULP_ACT_PROP_IDX_ENCAP_IP] =
86                 BNXT_ULP_ACT_PROP_SZ_ENCAP_IP,
87         [BNXT_ULP_ACT_PROP_IDX_ENCAP_IP_SRC] =
88                 BNXT_ULP_ACT_PROP_SZ_ENCAP_IP_SRC,
89         [BNXT_ULP_ACT_PROP_IDX_ENCAP_UDP] =
90                 BNXT_ULP_ACT_PROP_SZ_ENCAP_UDP,
91         [BNXT_ULP_ACT_PROP_IDX_ENCAP_TUN] =
92                 BNXT_ULP_ACT_PROP_SZ_ENCAP_TUN,
93         [BNXT_ULP_ACT_PROP_IDX_LAST] =
94                 BNXT_ULP_ACT_PROP_SZ_LAST
95 };
96
97 struct bnxt_ulp_rte_act_info ulp_act_info[] = {
98         [RTE_FLOW_ACTION_TYPE_END] = {
99         .act_type                = BNXT_ULP_ACT_TYPE_END,
100         .proto_act_func          = NULL
101         },
102         [RTE_FLOW_ACTION_TYPE_VOID] = {
103         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
104         .proto_act_func          = ulp_rte_void_act_handler
105         },
106         [RTE_FLOW_ACTION_TYPE_PASSTHRU] = {
107         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
108         .proto_act_func          = NULL
109         },
110         [RTE_FLOW_ACTION_TYPE_JUMP] = {
111         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
112         .proto_act_func          = NULL
113         },
114         [RTE_FLOW_ACTION_TYPE_MARK] = {
115         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
116         .proto_act_func          = ulp_rte_mark_act_handler
117         },
118         [RTE_FLOW_ACTION_TYPE_FLAG] = {
119         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
120         .proto_act_func          = NULL
121         },
122         [RTE_FLOW_ACTION_TYPE_QUEUE] = {
123         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
124         .proto_act_func          = NULL
125         },
126         [RTE_FLOW_ACTION_TYPE_DROP] = {
127         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
128         .proto_act_func          = ulp_rte_drop_act_handler
129         },
130         [RTE_FLOW_ACTION_TYPE_COUNT] = {
131         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
132         .proto_act_func          = ulp_rte_count_act_handler
133         },
134         [RTE_FLOW_ACTION_TYPE_RSS] = {
135         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
136         .proto_act_func          = ulp_rte_rss_act_handler
137         },
138         [RTE_FLOW_ACTION_TYPE_PF] = {
139         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
140         .proto_act_func          = ulp_rte_pf_act_handler
141         },
142         [RTE_FLOW_ACTION_TYPE_VF] = {
143         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
144         .proto_act_func          = ulp_rte_vf_act_handler
145         },
146         [RTE_FLOW_ACTION_TYPE_PHY_PORT] = {
147         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
148         .proto_act_func          = ulp_rte_phy_port_act_handler
149         },
150         [RTE_FLOW_ACTION_TYPE_PORT_ID] = {
151         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
152         .proto_act_func          = ulp_rte_port_id_act_handler
153         },
154         [RTE_FLOW_ACTION_TYPE_METER] = {
155         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
156         .proto_act_func          = NULL
157         },
158         [RTE_FLOW_ACTION_TYPE_SECURITY] = {
159         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
160         .proto_act_func          = NULL
161         },
162         [RTE_FLOW_ACTION_TYPE_OF_SET_MPLS_TTL] = {
163         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
164         .proto_act_func          = NULL
165         },
166         [RTE_FLOW_ACTION_TYPE_OF_DEC_MPLS_TTL] = {
167         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
168         .proto_act_func          = NULL
169         },
170         [RTE_FLOW_ACTION_TYPE_OF_SET_NW_TTL] = {
171         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
172         .proto_act_func          = NULL
173         },
174         [RTE_FLOW_ACTION_TYPE_OF_DEC_NW_TTL] = {
175         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
176         .proto_act_func          = NULL
177         },
178         [RTE_FLOW_ACTION_TYPE_OF_COPY_TTL_OUT] = {
179         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
180         .proto_act_func          = NULL
181         },
182         [RTE_FLOW_ACTION_TYPE_OF_COPY_TTL_IN] = {
183         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
184         .proto_act_func          = NULL
185         },
186         [RTE_FLOW_ACTION_TYPE_OF_POP_VLAN] = {
187         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
188         .proto_act_func          = ulp_rte_of_pop_vlan_act_handler
189         },
190         [RTE_FLOW_ACTION_TYPE_OF_PUSH_VLAN] = {
191         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
192         .proto_act_func          = ulp_rte_of_push_vlan_act_handler
193         },
194         [RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_VID] = {
195         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
196         .proto_act_func          = ulp_rte_of_set_vlan_vid_act_handler
197         },
198         [RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_PCP] = {
199         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
200         .proto_act_func          = ulp_rte_of_set_vlan_pcp_act_handler
201         },
202         [RTE_FLOW_ACTION_TYPE_OF_POP_MPLS] = {
203         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
204         .proto_act_func          = NULL
205         },
206         [RTE_FLOW_ACTION_TYPE_OF_PUSH_MPLS] = {
207         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
208         .proto_act_func          = NULL
209         },
210         [RTE_FLOW_ACTION_TYPE_VXLAN_ENCAP] = {
211         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
212         .proto_act_func          = ulp_rte_vxlan_encap_act_handler
213         },
214         [RTE_FLOW_ACTION_TYPE_VXLAN_DECAP] = {
215         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
216         .proto_act_func          = ulp_rte_vxlan_decap_act_handler
217         },
218         [RTE_FLOW_ACTION_TYPE_NVGRE_ENCAP] = {
219         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
220         .proto_act_func          = NULL
221         },
222         [RTE_FLOW_ACTION_TYPE_NVGRE_DECAP] = {
223         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
224         .proto_act_func          = NULL
225         },
226         [RTE_FLOW_ACTION_TYPE_RAW_ENCAP] = {
227         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
228         .proto_act_func          = NULL
229         },
230         [RTE_FLOW_ACTION_TYPE_RAW_DECAP] = {
231         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
232         .proto_act_func          = NULL
233         },
234         [RTE_FLOW_ACTION_TYPE_SET_IPV4_SRC] = {
235         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
236         .proto_act_func          = ulp_rte_set_ipv4_src_act_handler
237         },
238         [RTE_FLOW_ACTION_TYPE_SET_IPV4_DST] = {
239         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
240         .proto_act_func          = ulp_rte_set_ipv4_dst_act_handler
241         },
242         [RTE_FLOW_ACTION_TYPE_SET_IPV6_SRC] = {
243         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
244         .proto_act_func          = NULL
245         },
246         [RTE_FLOW_ACTION_TYPE_SET_IPV6_DST] = {
247         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
248         .proto_act_func          = NULL
249         },
250         [RTE_FLOW_ACTION_TYPE_SET_TP_SRC] = {
251         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
252         .proto_act_func          = ulp_rte_set_tp_src_act_handler
253         },
254         [RTE_FLOW_ACTION_TYPE_SET_TP_DST] = {
255         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
256         .proto_act_func          = ulp_rte_set_tp_dst_act_handler
257         },
258         [RTE_FLOW_ACTION_TYPE_MAC_SWAP] = {
259         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
260         .proto_act_func          = NULL
261         },
262         [RTE_FLOW_ACTION_TYPE_DEC_TTL] = {
263         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
264         .proto_act_func          = ulp_rte_dec_ttl_act_handler
265         },
266         [RTE_FLOW_ACTION_TYPE_SET_TTL] = {
267         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
268         .proto_act_func          = NULL
269         },
270         [RTE_FLOW_ACTION_TYPE_SET_MAC_SRC] = {
271         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
272         .proto_act_func          = NULL
273         },
274         [RTE_FLOW_ACTION_TYPE_SET_MAC_DST] = {
275         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
276         .proto_act_func          = NULL
277         },
278         [RTE_FLOW_ACTION_TYPE_INC_TCP_SEQ] = {
279         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
280         .proto_act_func          = NULL
281         },
282         [RTE_FLOW_ACTION_TYPE_DEC_TCP_SEQ] = {
283         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
284         .proto_act_func          = NULL
285         },
286         [RTE_FLOW_ACTION_TYPE_INC_TCP_ACK] = {
287         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
288         .proto_act_func          = NULL
289         },
290         [RTE_FLOW_ACTION_TYPE_DEC_TCP_ACK] = {
291         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
292         .proto_act_func          = NULL
293         }
294 };
295
296 struct bnxt_ulp_cache_tbl_params ulp_cache_tbl_params[] = {
297         [BNXT_ULP_RESOURCE_SUB_TYPE_CACHE_TYPE_L2_CNTXT_TCAM << 1 |
298                 TF_DIR_RX] = {
299         .num_entries             = 16384
300         },
301         [BNXT_ULP_RESOURCE_SUB_TYPE_CACHE_TYPE_L2_CNTXT_TCAM << 1 |
302                 TF_DIR_TX] = {
303         .num_entries             = 16384
304         },
305         [BNXT_ULP_RESOURCE_SUB_TYPE_CACHE_TYPE_PROFILE_TCAM << 1 |
306                 TF_DIR_RX] = {
307         .num_entries             = 16384
308         },
309         [BNXT_ULP_RESOURCE_SUB_TYPE_CACHE_TYPE_PROFILE_TCAM << 1 |
310                 TF_DIR_TX] = {
311         .num_entries             = 16384
312         }
313 };
314
315 const struct ulp_template_device_tbls ulp_template_stingray_tbls[] = {
316         [BNXT_ULP_TEMPLATE_TYPE_CLASS] = {
317         .tmpl_list               = ulp_stingray_class_tmpl_list,
318         .tbl_list                = ulp_stingray_class_tbl_list,
319         .key_field_list          = ulp_stingray_class_key_field_list,
320         .result_field_list       = ulp_stingray_class_result_field_list,
321         .ident_list              = ulp_stingray_class_ident_list
322         },
323         [BNXT_ULP_TEMPLATE_TYPE_ACTION] = {
324         .tmpl_list               = ulp_stingray_act_tmpl_list,
325         .tbl_list                = ulp_stingray_act_tbl_list,
326         .result_field_list       = ulp_stingray_act_result_field_list
327         }
328 };
329
330 const struct ulp_template_device_tbls ulp_template_wh_plus_tbls[] = {
331         [BNXT_ULP_TEMPLATE_TYPE_CLASS] = {
332         .tmpl_list               = ulp_wh_plus_class_tmpl_list,
333         .tbl_list                = ulp_wh_plus_class_tbl_list,
334         .key_field_list          = ulp_wh_plus_class_key_field_list,
335         .result_field_list       = ulp_wh_plus_class_result_field_list,
336         .ident_list              = ulp_wh_plus_class_ident_list
337         },
338         [BNXT_ULP_TEMPLATE_TYPE_ACTION] = {
339         .tmpl_list               = ulp_wh_plus_act_tmpl_list,
340         .tbl_list                = ulp_wh_plus_act_tbl_list,
341         .result_field_list       = ulp_wh_plus_act_result_field_list
342         }
343 };
344
345 struct bnxt_ulp_device_params ulp_device_params[BNXT_ULP_DEVICE_ID_LAST] = {
346         [BNXT_ULP_DEVICE_ID_WH_PLUS] = {
347         .byte_order              = BNXT_ULP_BYTE_ORDER_LE,
348         .encap_byte_swap         = 1,
349         .int_flow_db_num_entries = 16384,
350         .ext_flow_db_num_entries = 32768,
351         .mark_db_lfid_entries    = 65536,
352         .mark_db_gfid_entries    = 65536,
353         .flow_count_db_entries   = 16384,
354         .fdb_parent_flow_entries = 2,
355         .num_resources_per_flow  = 8,
356         .num_phy_ports           = 2,
357         .ext_cntr_table_type     = 0,
358         .byte_count_mask         = 0x0000000fffffffff,
359         .packet_count_mask       = 0xffffffff00000000,
360         .byte_count_shift        = 0,
361         .packet_count_shift      = 36,
362         .dev_tbls                = ulp_template_wh_plus_tbls
363         },
364         [BNXT_ULP_DEVICE_ID_STINGRAY] = {
365         .byte_order              = BNXT_ULP_BYTE_ORDER_LE,
366         .encap_byte_swap         = 1,
367         .int_flow_db_num_entries = 16384,
368         .ext_flow_db_num_entries = 32768,
369         .mark_db_lfid_entries    = 65536,
370         .mark_db_gfid_entries    = 65536,
371         .flow_count_db_entries   = 16384,
372         .num_resources_per_flow  = 8,
373         .num_phy_ports           = 2,
374         .ext_cntr_table_type     = 0,
375         .byte_count_mask         = 0x0000000fffffffff,
376         .packet_count_mask       = 0xffffffff00000000,
377         .byte_count_shift        = 0,
378         .packet_count_shift      = 36,
379         .dev_tbls                = ulp_template_stingray_tbls
380         }
381 };
382
383 struct bnxt_ulp_glb_resource_info ulp_glb_resource_tbl[] = {
384         [0] = {
385         .resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
386         .resource_type           = TF_IDENT_TYPE_PROF_FUNC,
387         .glb_regfile_index       = BNXT_ULP_GLB_REGFILE_INDEX_GLB_PROF_FUNC_ID,
388         .direction               = TF_DIR_RX
389         },
390         [1] = {
391         .resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
392         .resource_type           = TF_IDENT_TYPE_PROF_FUNC,
393         .glb_regfile_index       = BNXT_ULP_GLB_REGFILE_INDEX_GLB_PROF_FUNC_ID,
394         .direction               = TF_DIR_TX
395         },
396         [2] = {
397         .resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
398         .resource_type           = TF_TBL_TYPE_FULL_ACT_RECORD,
399         .glb_regfile_index       = BNXT_ULP_GLB_REGFILE_INDEX_GLB_LB_AREC_PTR,
400         .direction               = TF_DIR_TX
401         },
402         [3] = {
403         .resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
404         .resource_type           = TF_IDENT_TYPE_PROF_FUNC,
405         .glb_regfile_index       = BNXT_ULP_GLB_REGFILE_INDEX_L2_PROF_FUNC_ID,
406         .direction               = TF_DIR_RX
407         },
408         [4] = {
409         .resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
410         .resource_type           = TF_IDENT_TYPE_PROF_FUNC,
411         .glb_regfile_index       = BNXT_ULP_GLB_REGFILE_INDEX_L2_PROF_FUNC_ID,
412         .direction               = TF_DIR_TX
413         },
414         [5] = {
415         .resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
416         .resource_type           = TF_IDENT_TYPE_PROF_FUNC,
417         .glb_regfile_index = BNXT_ULP_GLB_REGFILE_INDEX_VXLAN_PROF_FUNC_ID,
418         .direction               = TF_DIR_RX
419         },
420         [6] = {
421         .resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
422         .resource_type           = TF_TBL_TYPE_ACT_ENCAP_16B,
423         .glb_regfile_index       = BNXT_ULP_GLB_REGFILE_INDEX_ENCAP_MAC_PTR,
424         .direction               = TF_DIR_RX
425         },
426         [7] = {
427         .resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
428         .resource_type           = TF_TBL_TYPE_ACT_ENCAP_16B,
429         .glb_regfile_index       = BNXT_ULP_GLB_REGFILE_INDEX_ENCAP_MAC_PTR,
430         .direction               = TF_DIR_TX
431         }
432 };
433
434 struct bnxt_ulp_rte_hdr_info ulp_hdr_info[] = {
435         [RTE_FLOW_ITEM_TYPE_END] = {
436         .hdr_type                = BNXT_ULP_HDR_TYPE_END,
437         .proto_hdr_func          = NULL
438         },
439         [RTE_FLOW_ITEM_TYPE_VOID] = {
440         .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
441         .proto_hdr_func          = ulp_rte_void_hdr_handler
442         },
443         [RTE_FLOW_ITEM_TYPE_INVERT] = {
444         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
445         .proto_hdr_func          = NULL
446         },
447         [RTE_FLOW_ITEM_TYPE_ANY] = {
448         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
449         .proto_hdr_func          = NULL
450         },
451         [RTE_FLOW_ITEM_TYPE_PF] = {
452         .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
453         .proto_hdr_func          = ulp_rte_pf_hdr_handler
454         },
455         [RTE_FLOW_ITEM_TYPE_VF] = {
456         .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
457         .proto_hdr_func          = ulp_rte_vf_hdr_handler
458         },
459         [RTE_FLOW_ITEM_TYPE_PHY_PORT] = {
460         .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
461         .proto_hdr_func          = ulp_rte_phy_port_hdr_handler
462         },
463         [RTE_FLOW_ITEM_TYPE_PORT_ID] = {
464         .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
465         .proto_hdr_func          = ulp_rte_port_id_hdr_handler
466         },
467         [RTE_FLOW_ITEM_TYPE_RAW] = {
468         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
469         .proto_hdr_func          = NULL
470         },
471         [RTE_FLOW_ITEM_TYPE_ETH] = {
472         .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
473         .proto_hdr_func          = ulp_rte_eth_hdr_handler
474         },
475         [RTE_FLOW_ITEM_TYPE_VLAN] = {
476         .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
477         .proto_hdr_func          = ulp_rte_vlan_hdr_handler
478         },
479         [RTE_FLOW_ITEM_TYPE_IPV4] = {
480         .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
481         .proto_hdr_func          = ulp_rte_ipv4_hdr_handler
482         },
483         [RTE_FLOW_ITEM_TYPE_IPV6] = {
484         .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
485         .proto_hdr_func          = ulp_rte_ipv6_hdr_handler
486         },
487         [RTE_FLOW_ITEM_TYPE_ICMP] = {
488         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
489         .proto_hdr_func          = NULL
490         },
491         [RTE_FLOW_ITEM_TYPE_UDP] = {
492         .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
493         .proto_hdr_func          = ulp_rte_udp_hdr_handler
494         },
495         [RTE_FLOW_ITEM_TYPE_TCP] = {
496         .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
497         .proto_hdr_func          = ulp_rte_tcp_hdr_handler
498         },
499         [RTE_FLOW_ITEM_TYPE_SCTP] = {
500         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
501         .proto_hdr_func          = NULL
502         },
503         [RTE_FLOW_ITEM_TYPE_VXLAN] = {
504         .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
505         .proto_hdr_func          = ulp_rte_vxlan_hdr_handler
506         },
507         [RTE_FLOW_ITEM_TYPE_E_TAG] = {
508         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
509         .proto_hdr_func          = NULL
510         },
511         [RTE_FLOW_ITEM_TYPE_NVGRE] = {
512         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
513         .proto_hdr_func          = NULL
514         },
515         [RTE_FLOW_ITEM_TYPE_MPLS] = {
516         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
517         .proto_hdr_func          = NULL
518         },
519         [RTE_FLOW_ITEM_TYPE_GRE] = {
520         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
521         .proto_hdr_func          = NULL
522         },
523         [RTE_FLOW_ITEM_TYPE_FUZZY] = {
524         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
525         .proto_hdr_func          = NULL
526         },
527         [RTE_FLOW_ITEM_TYPE_GTP] = {
528         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
529         .proto_hdr_func          = NULL
530         },
531         [RTE_FLOW_ITEM_TYPE_GTPC] = {
532         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
533         .proto_hdr_func          = NULL
534         },
535         [RTE_FLOW_ITEM_TYPE_GTPU] = {
536         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
537         .proto_hdr_func          = NULL
538         },
539         [RTE_FLOW_ITEM_TYPE_ESP] = {
540         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
541         .proto_hdr_func          = NULL
542         },
543         [RTE_FLOW_ITEM_TYPE_GENEVE] = {
544         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
545         .proto_hdr_func          = NULL
546         },
547         [RTE_FLOW_ITEM_TYPE_VXLAN_GPE] = {
548         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
549         .proto_hdr_func          = NULL
550         },
551         [RTE_FLOW_ITEM_TYPE_ARP_ETH_IPV4] = {
552         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
553         .proto_hdr_func          = NULL
554         },
555         [RTE_FLOW_ITEM_TYPE_IPV6_EXT] = {
556         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
557         .proto_hdr_func          = NULL
558         },
559         [RTE_FLOW_ITEM_TYPE_ICMP6] = {
560         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
561         .proto_hdr_func          = NULL
562         },
563         [RTE_FLOW_ITEM_TYPE_ICMP6_ND_NS] = {
564         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
565         .proto_hdr_func          = NULL
566         },
567         [RTE_FLOW_ITEM_TYPE_ICMP6_ND_NA] = {
568         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
569         .proto_hdr_func          = NULL
570         },
571         [RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT] = {
572         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
573         .proto_hdr_func          = NULL
574         },
575         [RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT_SLA_ETH] = {
576         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
577         .proto_hdr_func          = NULL
578         },
579         [RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT_TLA_ETH] = {
580         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
581         .proto_hdr_func          = NULL
582         },
583         [RTE_FLOW_ITEM_TYPE_MARK] = {
584         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
585         .proto_hdr_func          = NULL
586         },
587         [RTE_FLOW_ITEM_TYPE_META] = {
588         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
589         .proto_hdr_func          = NULL
590         },
591         [RTE_FLOW_ITEM_TYPE_GRE_KEY] = {
592         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
593         .proto_hdr_func          = NULL
594         },
595         [RTE_FLOW_ITEM_TYPE_GTP_PSC] = {
596         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
597         .proto_hdr_func          = NULL
598         },
599         [RTE_FLOW_ITEM_TYPE_PPPOES] = {
600         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
601         .proto_hdr_func          = NULL
602         },
603         [RTE_FLOW_ITEM_TYPE_PPPOED] = {
604         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
605         .proto_hdr_func          = NULL
606         },
607         [RTE_FLOW_ITEM_TYPE_PPPOE_PROTO_ID] = {
608         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
609         .proto_hdr_func          = NULL
610         },
611         [RTE_FLOW_ITEM_TYPE_NSH] = {
612         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
613         .proto_hdr_func          = NULL
614         },
615         [RTE_FLOW_ITEM_TYPE_IGMP] = {
616         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
617         .proto_hdr_func          = NULL
618         },
619         [RTE_FLOW_ITEM_TYPE_AH] = {
620         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
621         .proto_hdr_func          = NULL
622         },
623         [RTE_FLOW_ITEM_TYPE_HIGIG2] = {
624         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
625         .proto_hdr_func          = NULL
626         }
627 };
628
629 uint32_t bnxt_ulp_encap_vtag_map[] = {
630         BNXT_ULP_SYM_ECV_VTAG_TYPE_NOP,
631         BNXT_ULP_SYM_ECV_VTAG_TYPE_ADD_1_ENCAP_PRI,
632         BNXT_ULP_SYM_ECV_VTAG_TYPE_ADD_2_ENCAP_PRI
633 };
634
635 uint32_t ulp_glb_template_tbl[] = {
636         BNXT_ULP_DF_TPL_LOOPBACK_ACTION_REC
637 };
638