xref: /dpdk/drivers/net/bnxt/tf_ulp/ulp_rte_handler_tbl.c (revision dd0191d5e70d0e65a7f041a88af480fc673160e1)
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2014-2023 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_SUPPORTED,
42 	.proto_act_func          = ulp_rte_queue_act_handler
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_PORT_ID] = {
65 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
66 	.proto_act_func          = ulp_rte_port_act_handler
67 	},
68 	[RTE_FLOW_ACTION_TYPE_METER] = {
69 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
70 	.proto_act_func          = ulp_rte_meter_act_handler
71 	},
72 	[RTE_FLOW_ACTION_TYPE_SECURITY] = {
73 	.act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
74 	.proto_act_func          = NULL
75 	},
76 	[RTE_FLOW_ACTION_TYPE_OF_DEC_NW_TTL] = {
77 	.act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
78 	.proto_act_func          = NULL
79 	},
80 	[RTE_FLOW_ACTION_TYPE_OF_POP_VLAN] = {
81 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
82 	.proto_act_func          = ulp_rte_of_pop_vlan_act_handler
83 	},
84 	[RTE_FLOW_ACTION_TYPE_OF_PUSH_VLAN] = {
85 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
86 	.proto_act_func          = ulp_rte_of_push_vlan_act_handler
87 	},
88 	[RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_VID] = {
89 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
90 	.proto_act_func          = ulp_rte_of_set_vlan_vid_act_handler
91 	},
92 	[RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_PCP] = {
93 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
94 	.proto_act_func          = ulp_rte_of_set_vlan_pcp_act_handler
95 	},
96 	[RTE_FLOW_ACTION_TYPE_OF_POP_MPLS] = {
97 	.act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
98 	.proto_act_func          = NULL
99 	},
100 	[RTE_FLOW_ACTION_TYPE_OF_PUSH_MPLS] = {
101 	.act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
102 	.proto_act_func          = NULL
103 	},
104 	[RTE_FLOW_ACTION_TYPE_VXLAN_ENCAP] = {
105 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
106 	.proto_act_func          = ulp_rte_vxlan_encap_act_handler
107 	},
108 	[RTE_FLOW_ACTION_TYPE_VXLAN_DECAP] = {
109 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
110 	.proto_act_func          = ulp_rte_vxlan_decap_act_handler
111 	},
112 	[RTE_FLOW_ACTION_TYPE_NVGRE_ENCAP] = {
113 	.act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
114 	.proto_act_func          = NULL
115 	},
116 	[RTE_FLOW_ACTION_TYPE_NVGRE_DECAP] = {
117 	.act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
118 	.proto_act_func          = NULL
119 	},
120 	[RTE_FLOW_ACTION_TYPE_RAW_ENCAP] = {
121 	.act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
122 	.proto_act_func          = NULL
123 	},
124 	[RTE_FLOW_ACTION_TYPE_RAW_DECAP] = {
125 	.act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
126 	.proto_act_func          = NULL
127 	},
128 	[RTE_FLOW_ACTION_TYPE_SET_IPV4_SRC] = {
129 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
130 	.proto_act_func          = ulp_rte_set_ipv4_src_act_handler
131 	},
132 	[RTE_FLOW_ACTION_TYPE_SET_IPV4_DST] = {
133 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
134 	.proto_act_func          = ulp_rte_set_ipv4_dst_act_handler
135 	},
136 	[RTE_FLOW_ACTION_TYPE_SET_IPV6_SRC] = {
137 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
138 	.proto_act_func          = ulp_rte_set_ipv6_src_act_handler
139 	},
140 	[RTE_FLOW_ACTION_TYPE_SET_IPV6_DST] = {
141 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
142 	.proto_act_func          = ulp_rte_set_ipv6_dst_act_handler
143 	},
144 	[RTE_FLOW_ACTION_TYPE_SET_TP_SRC] = {
145 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
146 	.proto_act_func          = ulp_rte_set_tp_src_act_handler
147 	},
148 	[RTE_FLOW_ACTION_TYPE_SET_TP_DST] = {
149 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
150 	.proto_act_func          = ulp_rte_set_tp_dst_act_handler
151 	},
152 	[RTE_FLOW_ACTION_TYPE_MAC_SWAP] = {
153 	.act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
154 	.proto_act_func          = NULL
155 	},
156 	[RTE_FLOW_ACTION_TYPE_DEC_TTL] = {
157 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
158 	.proto_act_func          = ulp_rte_dec_ttl_act_handler
159 	},
160 	[RTE_FLOW_ACTION_TYPE_SET_TTL] = {
161 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
162 	.proto_act_func          = ulp_rte_set_ttl_act_handler
163 	},
164 	[RTE_FLOW_ACTION_TYPE_SET_MAC_SRC] = {
165 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
166 	.proto_act_func          = ulp_rte_set_mac_src_act_handler
167 	},
168 	[RTE_FLOW_ACTION_TYPE_SET_MAC_DST] = {
169 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
170 	.proto_act_func          = ulp_rte_set_mac_dst_act_handler
171 	},
172 	[RTE_FLOW_ACTION_TYPE_INC_TCP_SEQ] = {
173 	.act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
174 	.proto_act_func          = NULL
175 	},
176 	[RTE_FLOW_ACTION_TYPE_DEC_TCP_SEQ] = {
177 	.act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
178 	.proto_act_func          = NULL
179 	},
180 	[RTE_FLOW_ACTION_TYPE_INC_TCP_ACK] = {
181 	.act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
182 	.proto_act_func          = NULL
183 	},
184 	[RTE_FLOW_ACTION_TYPE_DEC_TCP_ACK] = {
185 	.act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
186 	.proto_act_func          = NULL
187 	},
188 	[RTE_FLOW_ACTION_TYPE_SAMPLE] = {
189 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
190 	.proto_act_func          = ulp_rte_sample_act_handler
191 	},
192 	[RTE_FLOW_ACTION_TYPE_PORT_REPRESENTOR] = {
193 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
194 	.proto_act_func          = ulp_rte_port_act_handler
195 	},
196 	[RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT] = {
197 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
198 	.proto_act_func          = ulp_rte_port_act_handler
199 	},
200 	[RTE_FLOW_ACTION_TYPE_INDIRECT] = {
201 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
202 	.proto_act_func          = ulp_rte_action_hdlr_handler
203 	},
204 	[RTE_FLOW_ACTION_TYPE_INDIRECT + 1] = {
205 	.act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
206 	.proto_act_func          = NULL
207 	}
208 };
209 
210 struct bnxt_ulp_rte_act_info ulp_vendor_act_info[] = {
211 	[BNXT_RTE_FLOW_ACTION_TYPE_END - BNXT_RTE_FLOW_ACTION_TYPE_END] = {
212 	.act_type                = BNXT_ULP_ACT_TYPE_END,
213 	.proto_act_func          = NULL
214 	},
215 	[BNXT_RTE_FLOW_ACTION_TYPE_VXLAN_DECAP - BNXT_RTE_FLOW_ACTION_TYPE_END] = {
216 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
217 	.proto_act_func          = ulp_vendor_vxlan_decap_act_handler
218 	},
219 	[BNXT_RTE_FLOW_ACTION_TYPE_LAST - BNXT_RTE_FLOW_ACTION_TYPE_END] = {
220 	.act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
221 	.proto_act_func          = NULL
222 	}
223 };
224 
225 /*
226  * This table has to be indexed based on the rte_flow_item_type that is part of
227  * DPDK. The below array is list of parsing functions for each of the flow items
228  * that are supported.
229  */
230 struct bnxt_ulp_rte_hdr_info ulp_hdr_info[] = {
231 	[RTE_FLOW_ITEM_TYPE_END] = {
232 	.hdr_type                = BNXT_ULP_HDR_TYPE_END,
233 	.proto_hdr_func          = NULL
234 	},
235 	[RTE_FLOW_ITEM_TYPE_VOID] = {
236 	.hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
237 	.proto_hdr_func          = ulp_rte_void_hdr_handler
238 	},
239 	[RTE_FLOW_ITEM_TYPE_INVERT] = {
240 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
241 	.proto_hdr_func          = NULL
242 	},
243 	[RTE_FLOW_ITEM_TYPE_ANY] = {
244 	.hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
245 	.proto_hdr_func          = ulp_rte_item_any_handler
246 	},
247 	[RTE_FLOW_ITEM_TYPE_PORT_ID] = {
248 	.hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
249 	.proto_hdr_func          = ulp_rte_port_hdr_handler
250 	},
251 	[RTE_FLOW_ITEM_TYPE_RAW] = {
252 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
253 	.proto_hdr_func          = NULL
254 	},
255 	[RTE_FLOW_ITEM_TYPE_ETH] = {
256 	.hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
257 	.proto_hdr_func          = ulp_rte_eth_hdr_handler
258 	},
259 	[RTE_FLOW_ITEM_TYPE_VLAN] = {
260 	.hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
261 	.proto_hdr_func          = ulp_rte_vlan_hdr_handler
262 	},
263 	[RTE_FLOW_ITEM_TYPE_IPV4] = {
264 	.hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
265 	.proto_hdr_func          = ulp_rte_ipv4_hdr_handler
266 	},
267 	[RTE_FLOW_ITEM_TYPE_IPV6] = {
268 	.hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
269 	.proto_hdr_func          = ulp_rte_ipv6_hdr_handler
270 	},
271 	[RTE_FLOW_ITEM_TYPE_ICMP] = {
272 	.hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
273 	.proto_hdr_func          = ulp_rte_icmp_hdr_handler
274 	},
275 	[RTE_FLOW_ITEM_TYPE_UDP] = {
276 	.hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
277 	.proto_hdr_func          = ulp_rte_udp_hdr_handler
278 	},
279 	[RTE_FLOW_ITEM_TYPE_TCP] = {
280 	.hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
281 	.proto_hdr_func          = ulp_rte_tcp_hdr_handler
282 	},
283 	[RTE_FLOW_ITEM_TYPE_SCTP] = {
284 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
285 	.proto_hdr_func          = NULL
286 	},
287 	[RTE_FLOW_ITEM_TYPE_VXLAN] = {
288 	.hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
289 	.proto_hdr_func          = ulp_rte_vxlan_hdr_handler
290 	},
291 	[RTE_FLOW_ITEM_TYPE_E_TAG] = {
292 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
293 	.proto_hdr_func          = NULL
294 	},
295 	[RTE_FLOW_ITEM_TYPE_NVGRE] = {
296 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
297 	.proto_hdr_func          = NULL
298 	},
299 	[RTE_FLOW_ITEM_TYPE_MPLS] = {
300 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
301 	.proto_hdr_func          = NULL
302 	},
303 	[RTE_FLOW_ITEM_TYPE_GRE] = {
304 	.hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
305 	.proto_hdr_func          = ulp_rte_gre_hdr_handler
306 	},
307 	[RTE_FLOW_ITEM_TYPE_FUZZY] = {
308 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
309 	.proto_hdr_func          = NULL
310 	},
311 	[RTE_FLOW_ITEM_TYPE_GTP] = {
312 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
313 	.proto_hdr_func          = NULL
314 	},
315 	[RTE_FLOW_ITEM_TYPE_GTPC] = {
316 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
317 	.proto_hdr_func          = NULL
318 	},
319 	[RTE_FLOW_ITEM_TYPE_GTPU] = {
320 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
321 	.proto_hdr_func          = NULL
322 	},
323 	[RTE_FLOW_ITEM_TYPE_ESP] = {
324 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
325 	.proto_hdr_func          = NULL
326 	},
327 	[RTE_FLOW_ITEM_TYPE_GENEVE] = {
328 	.hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
329 	.proto_hdr_func          = ulp_rte_geneve_hdr_handler
330 	},
331 	[RTE_FLOW_ITEM_TYPE_VXLAN_GPE] = {
332 	.hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
333 	.proto_hdr_func          = ulp_rte_vxlan_gpe_hdr_handler
334 	},
335 	[RTE_FLOW_ITEM_TYPE_ARP_ETH_IPV4] = {
336 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
337 	.proto_hdr_func          = NULL
338 	},
339 	[RTE_FLOW_ITEM_TYPE_IPV6_EXT] = {
340 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
341 	.proto_hdr_func          = NULL
342 	},
343 	[RTE_FLOW_ITEM_TYPE_ICMP6] = {
344 	.hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
345 	.proto_hdr_func          = ulp_rte_icmp6_hdr_handler
346 	},
347 	[RTE_FLOW_ITEM_TYPE_ICMP6_ND_NS] = {
348 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
349 	.proto_hdr_func          = NULL
350 	},
351 	[RTE_FLOW_ITEM_TYPE_ICMP6_ND_NA] = {
352 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
353 	.proto_hdr_func          = NULL
354 	},
355 	[RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT] = {
356 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
357 	.proto_hdr_func          = NULL
358 	},
359 	[RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT_SLA_ETH] = {
360 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
361 	.proto_hdr_func          = NULL
362 	},
363 	[RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT_TLA_ETH] = {
364 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
365 	.proto_hdr_func          = NULL
366 	},
367 	[RTE_FLOW_ITEM_TYPE_MARK] = {
368 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
369 	.proto_hdr_func          = NULL
370 	},
371 	[RTE_FLOW_ITEM_TYPE_META] = {
372 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
373 	.proto_hdr_func          = NULL
374 	},
375 	[RTE_FLOW_ITEM_TYPE_GRE_KEY] = {
376 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
377 	.proto_hdr_func          = NULL
378 	},
379 	[RTE_FLOW_ITEM_TYPE_GTP_PSC] = {
380 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
381 	.proto_hdr_func          = NULL
382 	},
383 	[RTE_FLOW_ITEM_TYPE_PPPOES] = {
384 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
385 	.proto_hdr_func          = NULL
386 	},
387 	[RTE_FLOW_ITEM_TYPE_PPPOED] = {
388 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
389 	.proto_hdr_func          = NULL
390 	},
391 	[RTE_FLOW_ITEM_TYPE_PPPOE_PROTO_ID] = {
392 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
393 	.proto_hdr_func          = NULL
394 	},
395 	[RTE_FLOW_ITEM_TYPE_NSH] = {
396 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
397 	.proto_hdr_func          = NULL
398 	},
399 	[RTE_FLOW_ITEM_TYPE_IGMP] = {
400 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
401 	.proto_hdr_func          = NULL
402 	},
403 	[RTE_FLOW_ITEM_TYPE_AH] = {
404 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
405 	.proto_hdr_func          = NULL
406 	},
407 	[RTE_FLOW_ITEM_TYPE_HIGIG2] = {
408 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
409 	.proto_hdr_func          = NULL
410 	},
411 	[RTE_FLOW_ITEM_TYPE_ECPRI] = {
412 	.hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
413 	.proto_hdr_func          = ulp_rte_ecpri_hdr_handler
414 	},
415 	[RTE_FLOW_ITEM_TYPE_PORT_REPRESENTOR] = {
416 	.hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
417 	.proto_hdr_func          = ulp_rte_ecpri_hdr_handler
418 	},
419 	[RTE_FLOW_ITEM_TYPE_REPRESENTED_PORT] = {
420 	.hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
421 	.proto_hdr_func          = ulp_rte_port_hdr_handler
422 	}
423 };
424 
425 struct bnxt_ulp_rte_hdr_info ulp_vendor_hdr_info[] = {
426 	[BNXT_RTE_FLOW_ITEM_TYPE_END - BNXT_RTE_FLOW_ITEM_TYPE_END] = {
427 	.hdr_type                = BNXT_ULP_HDR_TYPE_END,
428 	.proto_hdr_func          = NULL
429 	},
430 	[BNXT_RTE_FLOW_ITEM_TYPE_VXLAN_DECAP - BNXT_RTE_FLOW_ITEM_TYPE_END] = {
431 	.hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
432 	.proto_hdr_func          = ulp_rte_vendor_vxlan_decap_hdr_handler
433 	},
434 	[BNXT_RTE_FLOW_ITEM_TYPE_LAST - BNXT_RTE_FLOW_ITEM_TYPE_END] = {
435 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
436 	.proto_hdr_func          = NULL
437 	},
438 
439 };
440