c5f340d7bb94e93ba24749cc930f58d96c755ad0
[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_JUMP] =
94                 BNXT_ULP_ACT_PROP_SZ_JUMP,
95         [BNXT_ULP_ACT_PROP_IDX_LAST] =
96                 BNXT_ULP_ACT_PROP_SZ_LAST
97 };
98
99 struct bnxt_ulp_rte_act_info ulp_act_info[] = {
100         [RTE_FLOW_ACTION_TYPE_END] = {
101         .act_type                = BNXT_ULP_ACT_TYPE_END,
102         .proto_act_func          = NULL
103         },
104         [RTE_FLOW_ACTION_TYPE_VOID] = {
105         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
106         .proto_act_func          = ulp_rte_void_act_handler
107         },
108         [RTE_FLOW_ACTION_TYPE_PASSTHRU] = {
109         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
110         .proto_act_func          = NULL
111         },
112         [RTE_FLOW_ACTION_TYPE_JUMP] = {
113         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
114         .proto_act_func          = ulp_rte_jump_act_handler
115         },
116         [RTE_FLOW_ACTION_TYPE_MARK] = {
117         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
118         .proto_act_func          = ulp_rte_mark_act_handler
119         },
120         [RTE_FLOW_ACTION_TYPE_FLAG] = {
121         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
122         .proto_act_func          = NULL
123         },
124         [RTE_FLOW_ACTION_TYPE_QUEUE] = {
125         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
126         .proto_act_func          = NULL
127         },
128         [RTE_FLOW_ACTION_TYPE_DROP] = {
129         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
130         .proto_act_func          = ulp_rte_drop_act_handler
131         },
132         [RTE_FLOW_ACTION_TYPE_COUNT] = {
133         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
134         .proto_act_func          = ulp_rte_count_act_handler
135         },
136         [RTE_FLOW_ACTION_TYPE_RSS] = {
137         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
138         .proto_act_func          = ulp_rte_rss_act_handler
139         },
140         [RTE_FLOW_ACTION_TYPE_PF] = {
141         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
142         .proto_act_func          = ulp_rte_pf_act_handler
143         },
144         [RTE_FLOW_ACTION_TYPE_VF] = {
145         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
146         .proto_act_func          = ulp_rte_vf_act_handler
147         },
148         [RTE_FLOW_ACTION_TYPE_PHY_PORT] = {
149         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
150         .proto_act_func          = ulp_rte_phy_port_act_handler
151         },
152         [RTE_FLOW_ACTION_TYPE_PORT_ID] = {
153         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
154         .proto_act_func          = ulp_rte_port_id_act_handler
155         },
156         [RTE_FLOW_ACTION_TYPE_METER] = {
157         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
158         .proto_act_func          = NULL
159         },
160         [RTE_FLOW_ACTION_TYPE_SECURITY] = {
161         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
162         .proto_act_func          = NULL
163         },
164         [RTE_FLOW_ACTION_TYPE_OF_SET_MPLS_TTL] = {
165         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
166         .proto_act_func          = NULL
167         },
168         [RTE_FLOW_ACTION_TYPE_OF_DEC_MPLS_TTL] = {
169         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
170         .proto_act_func          = NULL
171         },
172         [RTE_FLOW_ACTION_TYPE_OF_SET_NW_TTL] = {
173         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
174         .proto_act_func          = NULL
175         },
176         [RTE_FLOW_ACTION_TYPE_OF_DEC_NW_TTL] = {
177         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
178         .proto_act_func          = NULL
179         },
180         [RTE_FLOW_ACTION_TYPE_OF_COPY_TTL_OUT] = {
181         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
182         .proto_act_func          = NULL
183         },
184         [RTE_FLOW_ACTION_TYPE_OF_COPY_TTL_IN] = {
185         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
186         .proto_act_func          = NULL
187         },
188         [RTE_FLOW_ACTION_TYPE_OF_POP_VLAN] = {
189         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
190         .proto_act_func          = ulp_rte_of_pop_vlan_act_handler
191         },
192         [RTE_FLOW_ACTION_TYPE_OF_PUSH_VLAN] = {
193         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
194         .proto_act_func          = ulp_rte_of_push_vlan_act_handler
195         },
196         [RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_VID] = {
197         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
198         .proto_act_func          = ulp_rte_of_set_vlan_vid_act_handler
199         },
200         [RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_PCP] = {
201         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
202         .proto_act_func          = ulp_rte_of_set_vlan_pcp_act_handler
203         },
204         [RTE_FLOW_ACTION_TYPE_OF_POP_MPLS] = {
205         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
206         .proto_act_func          = NULL
207         },
208         [RTE_FLOW_ACTION_TYPE_OF_PUSH_MPLS] = {
209         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
210         .proto_act_func          = NULL
211         },
212         [RTE_FLOW_ACTION_TYPE_VXLAN_ENCAP] = {
213         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
214         .proto_act_func          = ulp_rte_vxlan_encap_act_handler
215         },
216         [RTE_FLOW_ACTION_TYPE_VXLAN_DECAP] = {
217         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
218         .proto_act_func          = ulp_rte_vxlan_decap_act_handler
219         },
220         [RTE_FLOW_ACTION_TYPE_NVGRE_ENCAP] = {
221         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
222         .proto_act_func          = NULL
223         },
224         [RTE_FLOW_ACTION_TYPE_NVGRE_DECAP] = {
225         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
226         .proto_act_func          = NULL
227         },
228         [RTE_FLOW_ACTION_TYPE_RAW_ENCAP] = {
229         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
230         .proto_act_func          = NULL
231         },
232         [RTE_FLOW_ACTION_TYPE_RAW_DECAP] = {
233         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
234         .proto_act_func          = NULL
235         },
236         [RTE_FLOW_ACTION_TYPE_SET_IPV4_SRC] = {
237         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
238         .proto_act_func          = ulp_rte_set_ipv4_src_act_handler
239         },
240         [RTE_FLOW_ACTION_TYPE_SET_IPV4_DST] = {
241         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
242         .proto_act_func          = ulp_rte_set_ipv4_dst_act_handler
243         },
244         [RTE_FLOW_ACTION_TYPE_SET_IPV6_SRC] = {
245         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
246         .proto_act_func          = NULL
247         },
248         [RTE_FLOW_ACTION_TYPE_SET_IPV6_DST] = {
249         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
250         .proto_act_func          = NULL
251         },
252         [RTE_FLOW_ACTION_TYPE_SET_TP_SRC] = {
253         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
254         .proto_act_func          = ulp_rte_set_tp_src_act_handler
255         },
256         [RTE_FLOW_ACTION_TYPE_SET_TP_DST] = {
257         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
258         .proto_act_func          = ulp_rte_set_tp_dst_act_handler
259         },
260         [RTE_FLOW_ACTION_TYPE_MAC_SWAP] = {
261         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
262         .proto_act_func          = NULL
263         },
264         [RTE_FLOW_ACTION_TYPE_DEC_TTL] = {
265         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
266         .proto_act_func          = ulp_rte_dec_ttl_act_handler
267         },
268         [RTE_FLOW_ACTION_TYPE_SET_TTL] = {
269         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
270         .proto_act_func          = NULL
271         },
272         [RTE_FLOW_ACTION_TYPE_SET_MAC_SRC] = {
273         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
274         .proto_act_func          = NULL
275         },
276         [RTE_FLOW_ACTION_TYPE_SET_MAC_DST] = {
277         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
278         .proto_act_func          = NULL
279         },
280         [RTE_FLOW_ACTION_TYPE_INC_TCP_SEQ] = {
281         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
282         .proto_act_func          = NULL
283         },
284         [RTE_FLOW_ACTION_TYPE_DEC_TCP_SEQ] = {
285         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
286         .proto_act_func          = NULL
287         },
288         [RTE_FLOW_ACTION_TYPE_INC_TCP_ACK] = {
289         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
290         .proto_act_func          = NULL
291         },
292         [RTE_FLOW_ACTION_TYPE_DEC_TCP_ACK] = {
293         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
294         .proto_act_func          = NULL
295         }
296 };
297
298 struct bnxt_ulp_cache_tbl_params ulp_cache_tbl_params[] = {
299         [BNXT_ULP_RESOURCE_SUB_TYPE_CACHE_TYPE_L2_CNTXT_TCAM << 1 |
300                 TF_DIR_RX] = {
301         .num_entries             = 16384
302         },
303         [BNXT_ULP_RESOURCE_SUB_TYPE_CACHE_TYPE_L2_CNTXT_TCAM << 1 |
304                 TF_DIR_TX] = {
305         .num_entries             = 16384
306         },
307         [BNXT_ULP_RESOURCE_SUB_TYPE_CACHE_TYPE_PROFILE_TCAM << 1 |
308                 TF_DIR_RX] = {
309         .num_entries             = 16384
310         },
311         [BNXT_ULP_RESOURCE_SUB_TYPE_CACHE_TYPE_PROFILE_TCAM << 1 |
312                 TF_DIR_TX] = {
313         .num_entries             = 16384
314         }
315 };
316
317 const struct ulp_template_device_tbls ulp_template_stingray_tbls[] = {
318         [BNXT_ULP_TEMPLATE_TYPE_CLASS] = {
319         .tmpl_list               = ulp_stingray_class_tmpl_list,
320         .tbl_list                = ulp_stingray_class_tbl_list,
321         .key_field_list          = ulp_stingray_class_key_field_list,
322         .result_field_list       = ulp_stingray_class_result_field_list,
323         .ident_list              = ulp_stingray_class_ident_list
324         },
325         [BNXT_ULP_TEMPLATE_TYPE_ACTION] = {
326         .tmpl_list               = ulp_stingray_act_tmpl_list,
327         .tbl_list                = ulp_stingray_act_tbl_list,
328         .result_field_list       = ulp_stingray_act_result_field_list
329         }
330 };
331
332 const struct ulp_template_device_tbls ulp_template_wh_plus_tbls[] = {
333         [BNXT_ULP_TEMPLATE_TYPE_CLASS] = {
334         .tmpl_list               = ulp_wh_plus_class_tmpl_list,
335         .tbl_list                = ulp_wh_plus_class_tbl_list,
336         .key_field_list          = ulp_wh_plus_class_key_field_list,
337         .result_field_list       = ulp_wh_plus_class_result_field_list,
338         .ident_list              = ulp_wh_plus_class_ident_list
339         },
340         [BNXT_ULP_TEMPLATE_TYPE_ACTION] = {
341         .tmpl_list               = ulp_wh_plus_act_tmpl_list,
342         .tbl_list                = ulp_wh_plus_act_tbl_list,
343         .result_field_list       = ulp_wh_plus_act_result_field_list
344         }
345 };
346
347 struct bnxt_ulp_device_params ulp_device_params[BNXT_ULP_DEVICE_ID_LAST] = {
348         [BNXT_ULP_DEVICE_ID_WH_PLUS] = {
349         .byte_order              = BNXT_ULP_BYTE_ORDER_LE,
350         .encap_byte_swap         = 1,
351         .int_flow_db_num_entries = 16384,
352         .ext_flow_db_num_entries = 32768,
353         .mark_db_lfid_entries    = 65536,
354         .mark_db_gfid_entries    = 65536,
355         .flow_count_db_entries   = 16384,
356         .fdb_parent_flow_entries = 2,
357         .num_resources_per_flow  = 8,
358         .num_phy_ports           = 2,
359         .ext_cntr_table_type     = 0,
360         .byte_count_mask         = 0x0000000fffffffff,
361         .packet_count_mask       = 0xffffffff00000000,
362         .byte_count_shift        = 0,
363         .packet_count_shift      = 36,
364         .dev_tbls                = ulp_template_wh_plus_tbls
365         },
366         [BNXT_ULP_DEVICE_ID_STINGRAY] = {
367         .byte_order              = BNXT_ULP_BYTE_ORDER_LE,
368         .encap_byte_swap         = 1,
369         .int_flow_db_num_entries = 16384,
370         .ext_flow_db_num_entries = 32768,
371         .mark_db_lfid_entries    = 65536,
372         .mark_db_gfid_entries    = 65536,
373         .flow_count_db_entries   = 16384,
374         .fdb_parent_flow_entries = 2,
375         .num_resources_per_flow  = 8,
376         .num_phy_ports           = 2,
377         .ext_cntr_table_type     = 0,
378         .byte_count_mask         = 0x0000000fffffffff,
379         .packet_count_mask       = 0xffffffff00000000,
380         .byte_count_shift        = 0,
381         .packet_count_shift      = 36,
382         .dev_tbls                = ulp_template_stingray_tbls
383         }
384 };
385
386 struct bnxt_ulp_glb_resource_info ulp_glb_resource_tbl[] = {
387         [0] = {
388         .resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
389         .resource_type           = TF_IDENT_TYPE_PROF_FUNC,
390         .glb_regfile_index       = BNXT_ULP_GLB_REGFILE_INDEX_GLB_PROF_FUNC_ID,
391         .direction               = TF_DIR_RX
392         },
393         [1] = {
394         .resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
395         .resource_type           = TF_IDENT_TYPE_PROF_FUNC,
396         .glb_regfile_index       = BNXT_ULP_GLB_REGFILE_INDEX_GLB_PROF_FUNC_ID,
397         .direction               = TF_DIR_TX
398         },
399         [2] = {
400         .resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
401         .resource_type           = TF_TBL_TYPE_FULL_ACT_RECORD,
402         .glb_regfile_index       = BNXT_ULP_GLB_REGFILE_INDEX_GLB_LB_AREC_PTR,
403         .direction               = TF_DIR_TX
404         },
405         [3] = {
406         .resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
407         .resource_type           = TF_IDENT_TYPE_PROF_FUNC,
408         .glb_regfile_index       = BNXT_ULP_GLB_REGFILE_INDEX_L2_PROF_FUNC_ID,
409         .direction               = TF_DIR_RX
410         },
411         [4] = {
412         .resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
413         .resource_type           = TF_IDENT_TYPE_PROF_FUNC,
414         .glb_regfile_index       = BNXT_ULP_GLB_REGFILE_INDEX_L2_PROF_FUNC_ID,
415         .direction               = TF_DIR_TX
416         },
417         [5] = {
418         .resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
419         .resource_type           = TF_IDENT_TYPE_PROF_FUNC,
420         .glb_regfile_index       = BNXT_ULP_GLB_REGFILE_INDEX_VXLAN_PROF_FUNC_ID,
421         .direction               = TF_DIR_RX
422         },
423         [6] = {
424         .resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
425         .resource_type           = TF_TBL_TYPE_ACT_ENCAP_16B,
426         .glb_regfile_index       = BNXT_ULP_GLB_REGFILE_INDEX_ENCAP_MAC_PTR,
427         .direction               = TF_DIR_RX
428         },
429         [7] = {
430         .resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
431         .resource_type           = TF_TBL_TYPE_ACT_ENCAP_16B,
432         .glb_regfile_index       = BNXT_ULP_GLB_REGFILE_INDEX_ENCAP_MAC_PTR,
433         .direction               = TF_DIR_TX
434         }
435 };
436
437 struct bnxt_ulp_rte_hdr_info ulp_hdr_info[] = {
438         [RTE_FLOW_ITEM_TYPE_END] = {
439         .hdr_type                = BNXT_ULP_HDR_TYPE_END,
440         .proto_hdr_func          = NULL
441         },
442         [RTE_FLOW_ITEM_TYPE_VOID] = {
443         .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
444         .proto_hdr_func          = ulp_rte_void_hdr_handler
445         },
446         [RTE_FLOW_ITEM_TYPE_INVERT] = {
447         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
448         .proto_hdr_func          = NULL
449         },
450         [RTE_FLOW_ITEM_TYPE_ANY] = {
451         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
452         .proto_hdr_func          = NULL
453         },
454         [RTE_FLOW_ITEM_TYPE_PF] = {
455         .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
456         .proto_hdr_func          = ulp_rte_pf_hdr_handler
457         },
458         [RTE_FLOW_ITEM_TYPE_VF] = {
459         .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
460         .proto_hdr_func          = ulp_rte_vf_hdr_handler
461         },
462         [RTE_FLOW_ITEM_TYPE_PHY_PORT] = {
463         .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
464         .proto_hdr_func          = ulp_rte_phy_port_hdr_handler
465         },
466         [RTE_FLOW_ITEM_TYPE_PORT_ID] = {
467         .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
468         .proto_hdr_func          = ulp_rte_port_id_hdr_handler
469         },
470         [RTE_FLOW_ITEM_TYPE_RAW] = {
471         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
472         .proto_hdr_func          = NULL
473         },
474         [RTE_FLOW_ITEM_TYPE_ETH] = {
475         .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
476         .proto_hdr_func          = ulp_rte_eth_hdr_handler
477         },
478         [RTE_FLOW_ITEM_TYPE_VLAN] = {
479         .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
480         .proto_hdr_func          = ulp_rte_vlan_hdr_handler
481         },
482         [RTE_FLOW_ITEM_TYPE_IPV4] = {
483         .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
484         .proto_hdr_func          = ulp_rte_ipv4_hdr_handler
485         },
486         [RTE_FLOW_ITEM_TYPE_IPV6] = {
487         .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
488         .proto_hdr_func          = ulp_rte_ipv6_hdr_handler
489         },
490         [RTE_FLOW_ITEM_TYPE_ICMP] = {
491         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
492         .proto_hdr_func          = NULL
493         },
494         [RTE_FLOW_ITEM_TYPE_UDP] = {
495         .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
496         .proto_hdr_func          = ulp_rte_udp_hdr_handler
497         },
498         [RTE_FLOW_ITEM_TYPE_TCP] = {
499         .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
500         .proto_hdr_func          = ulp_rte_tcp_hdr_handler
501         },
502         [RTE_FLOW_ITEM_TYPE_SCTP] = {
503         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
504         .proto_hdr_func          = NULL
505         },
506         [RTE_FLOW_ITEM_TYPE_VXLAN] = {
507         .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
508         .proto_hdr_func          = ulp_rte_vxlan_hdr_handler
509         },
510         [RTE_FLOW_ITEM_TYPE_E_TAG] = {
511         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
512         .proto_hdr_func          = NULL
513         },
514         [RTE_FLOW_ITEM_TYPE_NVGRE] = {
515         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
516         .proto_hdr_func          = NULL
517         },
518         [RTE_FLOW_ITEM_TYPE_MPLS] = {
519         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
520         .proto_hdr_func          = NULL
521         },
522         [RTE_FLOW_ITEM_TYPE_GRE] = {
523         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
524         .proto_hdr_func          = NULL
525         },
526         [RTE_FLOW_ITEM_TYPE_FUZZY] = {
527         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
528         .proto_hdr_func          = NULL
529         },
530         [RTE_FLOW_ITEM_TYPE_GTP] = {
531         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
532         .proto_hdr_func          = NULL
533         },
534         [RTE_FLOW_ITEM_TYPE_GTPC] = {
535         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
536         .proto_hdr_func          = NULL
537         },
538         [RTE_FLOW_ITEM_TYPE_GTPU] = {
539         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
540         .proto_hdr_func          = NULL
541         },
542         [RTE_FLOW_ITEM_TYPE_ESP] = {
543         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
544         .proto_hdr_func          = NULL
545         },
546         [RTE_FLOW_ITEM_TYPE_GENEVE] = {
547         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
548         .proto_hdr_func          = NULL
549         },
550         [RTE_FLOW_ITEM_TYPE_VXLAN_GPE] = {
551         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
552         .proto_hdr_func          = NULL
553         },
554         [RTE_FLOW_ITEM_TYPE_ARP_ETH_IPV4] = {
555         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
556         .proto_hdr_func          = NULL
557         },
558         [RTE_FLOW_ITEM_TYPE_IPV6_EXT] = {
559         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
560         .proto_hdr_func          = NULL
561         },
562         [RTE_FLOW_ITEM_TYPE_ICMP6] = {
563         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
564         .proto_hdr_func          = NULL
565         },
566         [RTE_FLOW_ITEM_TYPE_ICMP6_ND_NS] = {
567         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
568         .proto_hdr_func          = NULL
569         },
570         [RTE_FLOW_ITEM_TYPE_ICMP6_ND_NA] = {
571         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
572         .proto_hdr_func          = NULL
573         },
574         [RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT] = {
575         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
576         .proto_hdr_func          = NULL
577         },
578         [RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT_SLA_ETH] = {
579         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
580         .proto_hdr_func          = NULL
581         },
582         [RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT_TLA_ETH] = {
583         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
584         .proto_hdr_func          = NULL
585         },
586         [RTE_FLOW_ITEM_TYPE_MARK] = {
587         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
588         .proto_hdr_func          = NULL
589         },
590         [RTE_FLOW_ITEM_TYPE_META] = {
591         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
592         .proto_hdr_func          = NULL
593         },
594         [RTE_FLOW_ITEM_TYPE_GRE_KEY] = {
595         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
596         .proto_hdr_func          = NULL
597         },
598         [RTE_FLOW_ITEM_TYPE_GTP_PSC] = {
599         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
600         .proto_hdr_func          = NULL
601         },
602         [RTE_FLOW_ITEM_TYPE_PPPOES] = {
603         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
604         .proto_hdr_func          = NULL
605         },
606         [RTE_FLOW_ITEM_TYPE_PPPOED] = {
607         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
608         .proto_hdr_func          = NULL
609         },
610         [RTE_FLOW_ITEM_TYPE_PPPOE_PROTO_ID] = {
611         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
612         .proto_hdr_func          = NULL
613         },
614         [RTE_FLOW_ITEM_TYPE_NSH] = {
615         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
616         .proto_hdr_func          = NULL
617         },
618         [RTE_FLOW_ITEM_TYPE_IGMP] = {
619         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
620         .proto_hdr_func          = NULL
621         },
622         [RTE_FLOW_ITEM_TYPE_AH] = {
623         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
624         .proto_hdr_func          = NULL
625         },
626         [RTE_FLOW_ITEM_TYPE_HIGIG2] = {
627         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
628         .proto_hdr_func          = NULL
629         }
630 };
631
632 uint32_t bnxt_ulp_encap_vtag_map[] = {
633         BNXT_ULP_SYM_ECV_VTAG_TYPE_NOP,
634         BNXT_ULP_SYM_ECV_VTAG_TYPE_ADD_1_ENCAP_PRI,
635         BNXT_ULP_SYM_ECV_VTAG_TYPE_ADD_2_ENCAP_PRI
636 };
637
638 uint32_t ulp_glb_template_tbl[] = {
639         BNXT_ULP_DF_TPL_LOOPBACK_ACTION_REC
640 };
641