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