net/bnxt: support NAT for dest IP and port combination
[dpdk.git] / drivers / net / bnxt / tf_ulp / ulp_rte_handler_tbl.c
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2014-2021 Broadcom
3  * All rights reserved.
4  */
5
6 #include "ulp_template_db_enum.h"
7 #include "ulp_template_struct.h"
8 #include "ulp_rte_parser.h"
9
10 /*
11  * This structure has to be indexed based on the rte_flow_action_type that is
12  * part of DPDK. The below array is list of parsing functions for each of the
13  * flow actions that are supported.
14  */
15 struct bnxt_ulp_rte_act_info ulp_act_info[] = {
16         [RTE_FLOW_ACTION_TYPE_END] = {
17         .act_type                = BNXT_ULP_ACT_TYPE_END,
18         .proto_act_func          = NULL
19         },
20         [RTE_FLOW_ACTION_TYPE_VOID] = {
21         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
22         .proto_act_func          = ulp_rte_void_act_handler
23         },
24         [RTE_FLOW_ACTION_TYPE_PASSTHRU] = {
25         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
26         .proto_act_func          = NULL
27         },
28         [RTE_FLOW_ACTION_TYPE_JUMP] = {
29         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
30         .proto_act_func          = ulp_rte_jump_act_handler
31         },
32         [RTE_FLOW_ACTION_TYPE_MARK] = {
33         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
34         .proto_act_func          = ulp_rte_mark_act_handler
35         },
36         [RTE_FLOW_ACTION_TYPE_FLAG] = {
37         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
38         .proto_act_func          = NULL
39         },
40         [RTE_FLOW_ACTION_TYPE_QUEUE] = {
41         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
42         .proto_act_func          = NULL
43         },
44         [RTE_FLOW_ACTION_TYPE_DROP] = {
45         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
46         .proto_act_func          = ulp_rte_drop_act_handler
47         },
48         [RTE_FLOW_ACTION_TYPE_COUNT] = {
49         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
50         .proto_act_func          = ulp_rte_count_act_handler
51         },
52         [RTE_FLOW_ACTION_TYPE_RSS] = {
53         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
54         .proto_act_func          = ulp_rte_rss_act_handler
55         },
56         [RTE_FLOW_ACTION_TYPE_PF] = {
57         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
58         .proto_act_func          = ulp_rte_pf_act_handler
59         },
60         [RTE_FLOW_ACTION_TYPE_VF] = {
61         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
62         .proto_act_func          = ulp_rte_vf_act_handler
63         },
64         [RTE_FLOW_ACTION_TYPE_PHY_PORT] = {
65         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
66         .proto_act_func          = ulp_rte_phy_port_act_handler
67         },
68         [RTE_FLOW_ACTION_TYPE_PORT_ID] = {
69         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
70         .proto_act_func          = ulp_rte_port_act_handler
71         },
72         [RTE_FLOW_ACTION_TYPE_METER] = {
73         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
74         .proto_act_func          = NULL
75         },
76         [RTE_FLOW_ACTION_TYPE_SECURITY] = {
77         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
78         .proto_act_func          = NULL
79         },
80         [RTE_FLOW_ACTION_TYPE_OF_SET_MPLS_TTL] = {
81         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
82         .proto_act_func          = NULL
83         },
84         [RTE_FLOW_ACTION_TYPE_OF_DEC_MPLS_TTL] = {
85         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
86         .proto_act_func          = NULL
87         },
88         [RTE_FLOW_ACTION_TYPE_OF_SET_NW_TTL] = {
89         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
90         .proto_act_func          = NULL
91         },
92         [RTE_FLOW_ACTION_TYPE_OF_DEC_NW_TTL] = {
93         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
94         .proto_act_func          = NULL
95         },
96         [RTE_FLOW_ACTION_TYPE_OF_COPY_TTL_OUT] = {
97         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
98         .proto_act_func          = NULL
99         },
100         [RTE_FLOW_ACTION_TYPE_OF_COPY_TTL_IN] = {
101         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
102         .proto_act_func          = NULL
103         },
104         [RTE_FLOW_ACTION_TYPE_OF_POP_VLAN] = {
105         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
106         .proto_act_func          = ulp_rte_of_pop_vlan_act_handler
107         },
108         [RTE_FLOW_ACTION_TYPE_OF_PUSH_VLAN] = {
109         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
110         .proto_act_func          = ulp_rte_of_push_vlan_act_handler
111         },
112         [RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_VID] = {
113         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
114         .proto_act_func          = ulp_rte_of_set_vlan_vid_act_handler
115         },
116         [RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_PCP] = {
117         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
118         .proto_act_func          = ulp_rte_of_set_vlan_pcp_act_handler
119         },
120         [RTE_FLOW_ACTION_TYPE_OF_POP_MPLS] = {
121         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
122         .proto_act_func          = NULL
123         },
124         [RTE_FLOW_ACTION_TYPE_OF_PUSH_MPLS] = {
125         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
126         .proto_act_func          = NULL
127         },
128         [RTE_FLOW_ACTION_TYPE_VXLAN_ENCAP] = {
129         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
130         .proto_act_func          = ulp_rte_vxlan_encap_act_handler
131         },
132         [RTE_FLOW_ACTION_TYPE_VXLAN_DECAP] = {
133         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
134         .proto_act_func          = ulp_rte_vxlan_decap_act_handler
135         },
136         [RTE_FLOW_ACTION_TYPE_NVGRE_ENCAP] = {
137         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
138         .proto_act_func          = NULL
139         },
140         [RTE_FLOW_ACTION_TYPE_NVGRE_DECAP] = {
141         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
142         .proto_act_func          = NULL
143         },
144         [RTE_FLOW_ACTION_TYPE_RAW_ENCAP] = {
145         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
146         .proto_act_func          = NULL
147         },
148         [RTE_FLOW_ACTION_TYPE_RAW_DECAP] = {
149         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
150         .proto_act_func          = NULL
151         },
152         [RTE_FLOW_ACTION_TYPE_SET_IPV4_SRC] = {
153         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
154         .proto_act_func          = ulp_rte_set_ipv4_src_act_handler
155         },
156         [RTE_FLOW_ACTION_TYPE_SET_IPV4_DST] = {
157         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
158         .proto_act_func          = ulp_rte_set_ipv4_dst_act_handler
159         },
160         [RTE_FLOW_ACTION_TYPE_SET_IPV6_SRC] = {
161         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
162         .proto_act_func          = NULL
163         },
164         [RTE_FLOW_ACTION_TYPE_SET_IPV6_DST] = {
165         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
166         .proto_act_func          = NULL
167         },
168         [RTE_FLOW_ACTION_TYPE_SET_TP_SRC] = {
169         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
170         .proto_act_func          = ulp_rte_set_tp_src_act_handler
171         },
172         [RTE_FLOW_ACTION_TYPE_SET_TP_DST] = {
173         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
174         .proto_act_func          = ulp_rte_set_tp_dst_act_handler
175         },
176         [RTE_FLOW_ACTION_TYPE_MAC_SWAP] = {
177         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
178         .proto_act_func          = NULL
179         },
180         [RTE_FLOW_ACTION_TYPE_DEC_TTL] = {
181         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
182         .proto_act_func          = ulp_rte_dec_ttl_act_handler
183         },
184         [RTE_FLOW_ACTION_TYPE_SET_TTL] = {
185         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
186         .proto_act_func          = NULL
187         },
188         [RTE_FLOW_ACTION_TYPE_SET_MAC_SRC] = {
189         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
190         .proto_act_func          = NULL
191         },
192         [RTE_FLOW_ACTION_TYPE_SET_MAC_DST] = {
193         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
194         .proto_act_func          = NULL
195         },
196         [RTE_FLOW_ACTION_TYPE_INC_TCP_SEQ] = {
197         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
198         .proto_act_func          = NULL
199         },
200         [RTE_FLOW_ACTION_TYPE_DEC_TCP_SEQ] = {
201         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
202         .proto_act_func          = NULL
203         },
204         [RTE_FLOW_ACTION_TYPE_INC_TCP_ACK] = {
205         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
206         .proto_act_func          = NULL
207         },
208         [RTE_FLOW_ACTION_TYPE_DEC_TCP_ACK] = {
209         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
210         .proto_act_func          = NULL
211         },
212         [RTE_FLOW_ACTION_TYPE_SAMPLE] = {
213         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
214         .proto_act_func          = ulp_rte_sample_act_handler
215         },
216         [RTE_FLOW_ACTION_TYPE_PORT_REPRESENTOR] = {
217         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
218         .proto_act_func          = ulp_rte_port_act_handler
219         },
220         [RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT] = {
221         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
222         .proto_act_func          = ulp_rte_port_act_handler
223         },
224 };
225
226 struct bnxt_ulp_rte_act_info ulp_vendor_act_info[] = {
227         [BNXT_RTE_FLOW_ACTION_TYPE_END - BNXT_RTE_FLOW_ACTION_TYPE_END] = {
228         .act_type                = BNXT_ULP_ACT_TYPE_END,
229         .proto_act_func          = NULL
230         },
231         [BNXT_RTE_FLOW_ACTION_TYPE_VXLAN_DECAP - BNXT_RTE_FLOW_ACTION_TYPE_END] = {
232         .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
233         .proto_act_func          = ulp_vendor_vxlan_decap_act_handler
234         },
235         [BNXT_RTE_FLOW_ACTION_TYPE_LAST - BNXT_RTE_FLOW_ACTION_TYPE_END] = {
236         .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
237         .proto_act_func          = NULL
238         }
239 };
240
241 /*
242  * This table has to be indexed based on the rte_flow_item_type that is part of
243  * DPDK. The below array is list of parsing functions for each of the flow items
244  * that are supported.
245  */
246 struct bnxt_ulp_rte_hdr_info ulp_hdr_info[] = {
247         [RTE_FLOW_ITEM_TYPE_END] = {
248         .hdr_type                = BNXT_ULP_HDR_TYPE_END,
249         .proto_hdr_func          = NULL
250         },
251         [RTE_FLOW_ITEM_TYPE_VOID] = {
252         .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
253         .proto_hdr_func          = ulp_rte_void_hdr_handler
254         },
255         [RTE_FLOW_ITEM_TYPE_INVERT] = {
256         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
257         .proto_hdr_func          = NULL
258         },
259         [RTE_FLOW_ITEM_TYPE_ANY] = {
260         .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
261         .proto_hdr_func          = ulp_rte_item_any_handler
262         },
263         [RTE_FLOW_ITEM_TYPE_PF] = {
264         .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
265         .proto_hdr_func          = ulp_rte_pf_hdr_handler
266         },
267         [RTE_FLOW_ITEM_TYPE_VF] = {
268         .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
269         .proto_hdr_func          = ulp_rte_vf_hdr_handler
270         },
271         [RTE_FLOW_ITEM_TYPE_PHY_PORT] = {
272         .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
273         .proto_hdr_func          = ulp_rte_phy_port_hdr_handler
274         },
275         [RTE_FLOW_ITEM_TYPE_PORT_ID] = {
276         .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
277         .proto_hdr_func          = ulp_rte_port_hdr_handler
278         },
279         [RTE_FLOW_ITEM_TYPE_RAW] = {
280         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
281         .proto_hdr_func          = NULL
282         },
283         [RTE_FLOW_ITEM_TYPE_ETH] = {
284         .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
285         .proto_hdr_func          = ulp_rte_eth_hdr_handler
286         },
287         [RTE_FLOW_ITEM_TYPE_VLAN] = {
288         .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
289         .proto_hdr_func          = ulp_rte_vlan_hdr_handler
290         },
291         [RTE_FLOW_ITEM_TYPE_IPV4] = {
292         .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
293         .proto_hdr_func          = ulp_rte_ipv4_hdr_handler
294         },
295         [RTE_FLOW_ITEM_TYPE_IPV6] = {
296         .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
297         .proto_hdr_func          = ulp_rte_ipv6_hdr_handler
298         },
299         [RTE_FLOW_ITEM_TYPE_ICMP] = {
300         .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
301         .proto_hdr_func          = ulp_rte_icmp_hdr_handler
302         },
303         [RTE_FLOW_ITEM_TYPE_UDP] = {
304         .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
305         .proto_hdr_func          = ulp_rte_udp_hdr_handler
306         },
307         [RTE_FLOW_ITEM_TYPE_TCP] = {
308         .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
309         .proto_hdr_func          = ulp_rte_tcp_hdr_handler
310         },
311         [RTE_FLOW_ITEM_TYPE_SCTP] = {
312         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
313         .proto_hdr_func          = NULL
314         },
315         [RTE_FLOW_ITEM_TYPE_VXLAN] = {
316         .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
317         .proto_hdr_func          = ulp_rte_vxlan_hdr_handler
318         },
319         [RTE_FLOW_ITEM_TYPE_E_TAG] = {
320         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
321         .proto_hdr_func          = NULL
322         },
323         [RTE_FLOW_ITEM_TYPE_NVGRE] = {
324         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
325         .proto_hdr_func          = NULL
326         },
327         [RTE_FLOW_ITEM_TYPE_MPLS] = {
328         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
329         .proto_hdr_func          = NULL
330         },
331         [RTE_FLOW_ITEM_TYPE_GRE] = {
332         .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
333         .proto_hdr_func          = ulp_rte_gre_hdr_handler
334         },
335         [RTE_FLOW_ITEM_TYPE_FUZZY] = {
336         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
337         .proto_hdr_func          = NULL
338         },
339         [RTE_FLOW_ITEM_TYPE_GTP] = {
340         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
341         .proto_hdr_func          = NULL
342         },
343         [RTE_FLOW_ITEM_TYPE_GTPC] = {
344         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
345         .proto_hdr_func          = NULL
346         },
347         [RTE_FLOW_ITEM_TYPE_GTPU] = {
348         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
349         .proto_hdr_func          = NULL
350         },
351         [RTE_FLOW_ITEM_TYPE_ESP] = {
352         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
353         .proto_hdr_func          = NULL
354         },
355         [RTE_FLOW_ITEM_TYPE_GENEVE] = {
356         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
357         .proto_hdr_func          = NULL
358         },
359         [RTE_FLOW_ITEM_TYPE_VXLAN_GPE] = {
360         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
361         .proto_hdr_func          = NULL
362         },
363         [RTE_FLOW_ITEM_TYPE_ARP_ETH_IPV4] = {
364         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
365         .proto_hdr_func          = NULL
366         },
367         [RTE_FLOW_ITEM_TYPE_IPV6_EXT] = {
368         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
369         .proto_hdr_func          = NULL
370         },
371         [RTE_FLOW_ITEM_TYPE_ICMP6] = {
372         .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
373         .proto_hdr_func          = ulp_rte_icmp6_hdr_handler
374         },
375         [RTE_FLOW_ITEM_TYPE_ICMP6_ND_NS] = {
376         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
377         .proto_hdr_func          = NULL
378         },
379         [RTE_FLOW_ITEM_TYPE_ICMP6_ND_NA] = {
380         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
381         .proto_hdr_func          = NULL
382         },
383         [RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT] = {
384         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
385         .proto_hdr_func          = NULL
386         },
387         [RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT_SLA_ETH] = {
388         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
389         .proto_hdr_func          = NULL
390         },
391         [RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT_TLA_ETH] = {
392         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
393         .proto_hdr_func          = NULL
394         },
395         [RTE_FLOW_ITEM_TYPE_MARK] = {
396         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
397         .proto_hdr_func          = NULL
398         },
399         [RTE_FLOW_ITEM_TYPE_META] = {
400         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
401         .proto_hdr_func          = NULL
402         },
403         [RTE_FLOW_ITEM_TYPE_GRE_KEY] = {
404         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
405         .proto_hdr_func          = NULL
406         },
407         [RTE_FLOW_ITEM_TYPE_GTP_PSC] = {
408         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
409         .proto_hdr_func          = NULL
410         },
411         [RTE_FLOW_ITEM_TYPE_PPPOES] = {
412         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
413         .proto_hdr_func          = NULL
414         },
415         [RTE_FLOW_ITEM_TYPE_PPPOED] = {
416         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
417         .proto_hdr_func          = NULL
418         },
419         [RTE_FLOW_ITEM_TYPE_PPPOE_PROTO_ID] = {
420         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
421         .proto_hdr_func          = NULL
422         },
423         [RTE_FLOW_ITEM_TYPE_NSH] = {
424         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
425         .proto_hdr_func          = NULL
426         },
427         [RTE_FLOW_ITEM_TYPE_IGMP] = {
428         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
429         .proto_hdr_func          = NULL
430         },
431         [RTE_FLOW_ITEM_TYPE_AH] = {
432         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
433         .proto_hdr_func          = NULL
434         },
435         [RTE_FLOW_ITEM_TYPE_HIGIG2] = {
436         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
437         .proto_hdr_func          = NULL
438         },
439         [RTE_FLOW_ITEM_TYPE_PORT_REPRESENTOR] = {
440         .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
441         .proto_hdr_func          = ulp_rte_port_hdr_handler
442         },
443         [RTE_FLOW_ITEM_TYPE_REPRESENTED_PORT] = {
444         .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
445         .proto_hdr_func          = ulp_rte_port_hdr_handler
446         }
447 };
448
449 struct bnxt_ulp_rte_hdr_info ulp_vendor_hdr_info[] = {
450         [BNXT_RTE_FLOW_ITEM_TYPE_END - BNXT_RTE_FLOW_ITEM_TYPE_END] = {
451         .hdr_type                = BNXT_ULP_HDR_TYPE_END,
452         .proto_hdr_func          = NULL
453         },
454         [BNXT_RTE_FLOW_ITEM_TYPE_VXLAN_DECAP - BNXT_RTE_FLOW_ITEM_TYPE_END] = {
455         .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
456         .proto_hdr_func          = ulp_rte_vendor_vxlan_decap_hdr_handler
457         },
458         [BNXT_RTE_FLOW_ITEM_TYPE_LAST - BNXT_RTE_FLOW_ITEM_TYPE_END] = {
459         .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
460         .proto_hdr_func          = NULL
461         },
462
463 };