xref: /dpdk/drivers/net/bnxt/tf_ulp/ulp_rte_handler_tbl.c (revision dd0191d5e70d0e65a7f041a88af480fc673160e1)
1a2417601SKishore Padmanabha /* SPDX-License-Identifier: BSD-3-Clause
26d160d77SRandy Schacher  * Copyright(c) 2014-2023 Broadcom
3a2417601SKishore Padmanabha  * All rights reserved.
4a2417601SKishore Padmanabha  */
5a2417601SKishore Padmanabha 
6a2417601SKishore Padmanabha #include "ulp_template_db_enum.h"
7a2417601SKishore Padmanabha #include "ulp_template_struct.h"
8a2417601SKishore Padmanabha #include "ulp_rte_parser.h"
9a2417601SKishore Padmanabha 
10a2417601SKishore Padmanabha /*
11a2417601SKishore Padmanabha  * This structure has to be indexed based on the rte_flow_action_type that is
12a2417601SKishore Padmanabha  * part of DPDK. The below array is list of parsing functions for each of the
13a2417601SKishore Padmanabha  * flow actions that are supported.
14a2417601SKishore Padmanabha  */
15a2417601SKishore Padmanabha struct bnxt_ulp_rte_act_info ulp_act_info[] = {
16a2417601SKishore Padmanabha 	[RTE_FLOW_ACTION_TYPE_END] = {
17a2417601SKishore Padmanabha 	.act_type                = BNXT_ULP_ACT_TYPE_END,
18a2417601SKishore Padmanabha 	.proto_act_func          = NULL
19a2417601SKishore Padmanabha 	},
20a2417601SKishore Padmanabha 	[RTE_FLOW_ACTION_TYPE_VOID] = {
21a2417601SKishore Padmanabha 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
22a2417601SKishore Padmanabha 	.proto_act_func          = ulp_rte_void_act_handler
23a2417601SKishore Padmanabha 	},
24a2417601SKishore Padmanabha 	[RTE_FLOW_ACTION_TYPE_PASSTHRU] = {
25a2417601SKishore Padmanabha 	.act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
26a2417601SKishore Padmanabha 	.proto_act_func          = NULL
27a2417601SKishore Padmanabha 	},
28a2417601SKishore Padmanabha 	[RTE_FLOW_ACTION_TYPE_JUMP] = {
29a2417601SKishore Padmanabha 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
30a2417601SKishore Padmanabha 	.proto_act_func          = ulp_rte_jump_act_handler
31a2417601SKishore Padmanabha 	},
32a2417601SKishore Padmanabha 	[RTE_FLOW_ACTION_TYPE_MARK] = {
33a2417601SKishore Padmanabha 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
34a2417601SKishore Padmanabha 	.proto_act_func          = ulp_rte_mark_act_handler
35a2417601SKishore Padmanabha 	},
36a2417601SKishore Padmanabha 	[RTE_FLOW_ACTION_TYPE_FLAG] = {
37a2417601SKishore Padmanabha 	.act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
38a2417601SKishore Padmanabha 	.proto_act_func          = NULL
39a2417601SKishore Padmanabha 	},
40a2417601SKishore Padmanabha 	[RTE_FLOW_ACTION_TYPE_QUEUE] = {
416d160d77SRandy Schacher 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
426d160d77SRandy Schacher 	.proto_act_func          = ulp_rte_queue_act_handler
43a2417601SKishore Padmanabha 	},
44a2417601SKishore Padmanabha 	[RTE_FLOW_ACTION_TYPE_DROP] = {
45a2417601SKishore Padmanabha 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
46a2417601SKishore Padmanabha 	.proto_act_func          = ulp_rte_drop_act_handler
47a2417601SKishore Padmanabha 	},
48a2417601SKishore Padmanabha 	[RTE_FLOW_ACTION_TYPE_COUNT] = {
49a2417601SKishore Padmanabha 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
50a2417601SKishore Padmanabha 	.proto_act_func          = ulp_rte_count_act_handler
51a2417601SKishore Padmanabha 	},
52a2417601SKishore Padmanabha 	[RTE_FLOW_ACTION_TYPE_RSS] = {
53a2417601SKishore Padmanabha 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
54a2417601SKishore Padmanabha 	.proto_act_func          = ulp_rte_rss_act_handler
55a2417601SKishore Padmanabha 	},
56a2417601SKishore Padmanabha 	[RTE_FLOW_ACTION_TYPE_PF] = {
57a2417601SKishore Padmanabha 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
58a2417601SKishore Padmanabha 	.proto_act_func          = ulp_rte_pf_act_handler
59a2417601SKishore Padmanabha 	},
60a2417601SKishore Padmanabha 	[RTE_FLOW_ACTION_TYPE_VF] = {
61a2417601SKishore Padmanabha 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
62a2417601SKishore Padmanabha 	.proto_act_func          = ulp_rte_vf_act_handler
63a2417601SKishore Padmanabha 	},
64a2417601SKishore Padmanabha 	[RTE_FLOW_ACTION_TYPE_PORT_ID] = {
65a2417601SKishore Padmanabha 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
66640b44aaSAndrew Rybchenko 	.proto_act_func          = ulp_rte_port_act_handler
67a2417601SKishore Padmanabha 	},
68a2417601SKishore Padmanabha 	[RTE_FLOW_ACTION_TYPE_METER] = {
694993c210SRandy Schacher 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
704993c210SRandy Schacher 	.proto_act_func          = ulp_rte_meter_act_handler
71a2417601SKishore Padmanabha 	},
72a2417601SKishore Padmanabha 	[RTE_FLOW_ACTION_TYPE_SECURITY] = {
73a2417601SKishore Padmanabha 	.act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
74a2417601SKishore Padmanabha 	.proto_act_func          = NULL
75a2417601SKishore Padmanabha 	},
76a2417601SKishore Padmanabha 	[RTE_FLOW_ACTION_TYPE_OF_DEC_NW_TTL] = {
77a2417601SKishore Padmanabha 	.act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
78a2417601SKishore Padmanabha 	.proto_act_func          = NULL
79a2417601SKishore Padmanabha 	},
80a2417601SKishore Padmanabha 	[RTE_FLOW_ACTION_TYPE_OF_POP_VLAN] = {
81a2417601SKishore Padmanabha 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
82a2417601SKishore Padmanabha 	.proto_act_func          = ulp_rte_of_pop_vlan_act_handler
83a2417601SKishore Padmanabha 	},
84a2417601SKishore Padmanabha 	[RTE_FLOW_ACTION_TYPE_OF_PUSH_VLAN] = {
85a2417601SKishore Padmanabha 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
86a2417601SKishore Padmanabha 	.proto_act_func          = ulp_rte_of_push_vlan_act_handler
87a2417601SKishore Padmanabha 	},
88a2417601SKishore Padmanabha 	[RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_VID] = {
89a2417601SKishore Padmanabha 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
90a2417601SKishore Padmanabha 	.proto_act_func          = ulp_rte_of_set_vlan_vid_act_handler
91a2417601SKishore Padmanabha 	},
92a2417601SKishore Padmanabha 	[RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_PCP] = {
93a2417601SKishore Padmanabha 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
94a2417601SKishore Padmanabha 	.proto_act_func          = ulp_rte_of_set_vlan_pcp_act_handler
95a2417601SKishore Padmanabha 	},
96a2417601SKishore Padmanabha 	[RTE_FLOW_ACTION_TYPE_OF_POP_MPLS] = {
97a2417601SKishore Padmanabha 	.act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
98a2417601SKishore Padmanabha 	.proto_act_func          = NULL
99a2417601SKishore Padmanabha 	},
100a2417601SKishore Padmanabha 	[RTE_FLOW_ACTION_TYPE_OF_PUSH_MPLS] = {
101a2417601SKishore Padmanabha 	.act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
102a2417601SKishore Padmanabha 	.proto_act_func          = NULL
103a2417601SKishore Padmanabha 	},
104a2417601SKishore Padmanabha 	[RTE_FLOW_ACTION_TYPE_VXLAN_ENCAP] = {
105a2417601SKishore Padmanabha 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
106a2417601SKishore Padmanabha 	.proto_act_func          = ulp_rte_vxlan_encap_act_handler
107a2417601SKishore Padmanabha 	},
108a2417601SKishore Padmanabha 	[RTE_FLOW_ACTION_TYPE_VXLAN_DECAP] = {
109a2417601SKishore Padmanabha 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
110a2417601SKishore Padmanabha 	.proto_act_func          = ulp_rte_vxlan_decap_act_handler
111a2417601SKishore Padmanabha 	},
112a2417601SKishore Padmanabha 	[RTE_FLOW_ACTION_TYPE_NVGRE_ENCAP] = {
113a2417601SKishore Padmanabha 	.act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
114a2417601SKishore Padmanabha 	.proto_act_func          = NULL
115a2417601SKishore Padmanabha 	},
116a2417601SKishore Padmanabha 	[RTE_FLOW_ACTION_TYPE_NVGRE_DECAP] = {
117a2417601SKishore Padmanabha 	.act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
118a2417601SKishore Padmanabha 	.proto_act_func          = NULL
119a2417601SKishore Padmanabha 	},
120a2417601SKishore Padmanabha 	[RTE_FLOW_ACTION_TYPE_RAW_ENCAP] = {
121a2417601SKishore Padmanabha 	.act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
122a2417601SKishore Padmanabha 	.proto_act_func          = NULL
123a2417601SKishore Padmanabha 	},
124a2417601SKishore Padmanabha 	[RTE_FLOW_ACTION_TYPE_RAW_DECAP] = {
125a2417601SKishore Padmanabha 	.act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
126a2417601SKishore Padmanabha 	.proto_act_func          = NULL
127a2417601SKishore Padmanabha 	},
128a2417601SKishore Padmanabha 	[RTE_FLOW_ACTION_TYPE_SET_IPV4_SRC] = {
129a2417601SKishore Padmanabha 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
130a2417601SKishore Padmanabha 	.proto_act_func          = ulp_rte_set_ipv4_src_act_handler
131a2417601SKishore Padmanabha 	},
132a2417601SKishore Padmanabha 	[RTE_FLOW_ACTION_TYPE_SET_IPV4_DST] = {
133a2417601SKishore Padmanabha 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
134a2417601SKishore Padmanabha 	.proto_act_func          = ulp_rte_set_ipv4_dst_act_handler
135a2417601SKishore Padmanabha 	},
136a2417601SKishore Padmanabha 	[RTE_FLOW_ACTION_TYPE_SET_IPV6_SRC] = {
137*dd0191d5SShuanglin Wang 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
138*dd0191d5SShuanglin Wang 	.proto_act_func          = ulp_rte_set_ipv6_src_act_handler
139a2417601SKishore Padmanabha 	},
140a2417601SKishore Padmanabha 	[RTE_FLOW_ACTION_TYPE_SET_IPV6_DST] = {
141*dd0191d5SShuanglin Wang 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
142*dd0191d5SShuanglin Wang 	.proto_act_func          = ulp_rte_set_ipv6_dst_act_handler
143a2417601SKishore Padmanabha 	},
144a2417601SKishore Padmanabha 	[RTE_FLOW_ACTION_TYPE_SET_TP_SRC] = {
145a2417601SKishore Padmanabha 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
146a2417601SKishore Padmanabha 	.proto_act_func          = ulp_rte_set_tp_src_act_handler
147a2417601SKishore Padmanabha 	},
148a2417601SKishore Padmanabha 	[RTE_FLOW_ACTION_TYPE_SET_TP_DST] = {
149a2417601SKishore Padmanabha 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
150a2417601SKishore Padmanabha 	.proto_act_func          = ulp_rte_set_tp_dst_act_handler
151a2417601SKishore Padmanabha 	},
152a2417601SKishore Padmanabha 	[RTE_FLOW_ACTION_TYPE_MAC_SWAP] = {
153a2417601SKishore Padmanabha 	.act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
154a2417601SKishore Padmanabha 	.proto_act_func          = NULL
155a2417601SKishore Padmanabha 	},
156a2417601SKishore Padmanabha 	[RTE_FLOW_ACTION_TYPE_DEC_TTL] = {
157a2417601SKishore Padmanabha 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
158a2417601SKishore Padmanabha 	.proto_act_func          = ulp_rte_dec_ttl_act_handler
159a2417601SKishore Padmanabha 	},
160a2417601SKishore Padmanabha 	[RTE_FLOW_ACTION_TYPE_SET_TTL] = {
161*dd0191d5SShuanglin Wang 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
162*dd0191d5SShuanglin Wang 	.proto_act_func          = ulp_rte_set_ttl_act_handler
163a2417601SKishore Padmanabha 	},
164a2417601SKishore Padmanabha 	[RTE_FLOW_ACTION_TYPE_SET_MAC_SRC] = {
1656d160d77SRandy Schacher 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
1666d160d77SRandy Schacher 	.proto_act_func          = ulp_rte_set_mac_src_act_handler
167a2417601SKishore Padmanabha 	},
168a2417601SKishore Padmanabha 	[RTE_FLOW_ACTION_TYPE_SET_MAC_DST] = {
1696d160d77SRandy Schacher 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
1706d160d77SRandy Schacher 	.proto_act_func          = ulp_rte_set_mac_dst_act_handler
171a2417601SKishore Padmanabha 	},
172a2417601SKishore Padmanabha 	[RTE_FLOW_ACTION_TYPE_INC_TCP_SEQ] = {
173a2417601SKishore Padmanabha 	.act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
174a2417601SKishore Padmanabha 	.proto_act_func          = NULL
175a2417601SKishore Padmanabha 	},
176a2417601SKishore Padmanabha 	[RTE_FLOW_ACTION_TYPE_DEC_TCP_SEQ] = {
177a2417601SKishore Padmanabha 	.act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
178a2417601SKishore Padmanabha 	.proto_act_func          = NULL
179a2417601SKishore Padmanabha 	},
180a2417601SKishore Padmanabha 	[RTE_FLOW_ACTION_TYPE_INC_TCP_ACK] = {
181a2417601SKishore Padmanabha 	.act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
182a2417601SKishore Padmanabha 	.proto_act_func          = NULL
183a2417601SKishore Padmanabha 	},
184a2417601SKishore Padmanabha 	[RTE_FLOW_ACTION_TYPE_DEC_TCP_ACK] = {
185a2417601SKishore Padmanabha 	.act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
186a2417601SKishore Padmanabha 	.proto_act_func          = NULL
1873fe124d2SKishore Padmanabha 	},
1883fe124d2SKishore Padmanabha 	[RTE_FLOW_ACTION_TYPE_SAMPLE] = {
1893fe124d2SKishore Padmanabha 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
1903fe124d2SKishore Padmanabha 	.proto_act_func          = ulp_rte_sample_act_handler
191640b44aaSAndrew Rybchenko 	},
192640b44aaSAndrew Rybchenko 	[RTE_FLOW_ACTION_TYPE_PORT_REPRESENTOR] = {
193640b44aaSAndrew Rybchenko 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
194640b44aaSAndrew Rybchenko 	.proto_act_func          = ulp_rte_port_act_handler
195640b44aaSAndrew Rybchenko 	},
196640b44aaSAndrew Rybchenko 	[RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT] = {
197640b44aaSAndrew Rybchenko 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
198640b44aaSAndrew Rybchenko 	.proto_act_func          = ulp_rte_port_act_handler
199640b44aaSAndrew Rybchenko 	},
2006d160d77SRandy Schacher 	[RTE_FLOW_ACTION_TYPE_INDIRECT] = {
2016d160d77SRandy Schacher 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
2026d160d77SRandy Schacher 	.proto_act_func          = ulp_rte_action_hdlr_handler
2036d160d77SRandy Schacher 	},
2046d160d77SRandy Schacher 	[RTE_FLOW_ACTION_TYPE_INDIRECT + 1] = {
2056d160d77SRandy Schacher 	.act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
2066d160d77SRandy Schacher 	.proto_act_func          = NULL
2076d160d77SRandy Schacher 	}
208a2417601SKishore Padmanabha };
209a2417601SKishore Padmanabha 
210bdf4a3c6SKishore Padmanabha struct bnxt_ulp_rte_act_info ulp_vendor_act_info[] = {
211bdf4a3c6SKishore Padmanabha 	[BNXT_RTE_FLOW_ACTION_TYPE_END - BNXT_RTE_FLOW_ACTION_TYPE_END] = {
212bdf4a3c6SKishore Padmanabha 	.act_type                = BNXT_ULP_ACT_TYPE_END,
213bdf4a3c6SKishore Padmanabha 	.proto_act_func          = NULL
214bdf4a3c6SKishore Padmanabha 	},
215bdf4a3c6SKishore Padmanabha 	[BNXT_RTE_FLOW_ACTION_TYPE_VXLAN_DECAP - BNXT_RTE_FLOW_ACTION_TYPE_END] = {
216bdf4a3c6SKishore Padmanabha 	.act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
217bdf4a3c6SKishore Padmanabha 	.proto_act_func          = ulp_vendor_vxlan_decap_act_handler
218bdf4a3c6SKishore Padmanabha 	},
219bdf4a3c6SKishore Padmanabha 	[BNXT_RTE_FLOW_ACTION_TYPE_LAST - BNXT_RTE_FLOW_ACTION_TYPE_END] = {
220bdf4a3c6SKishore Padmanabha 	.act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
221bdf4a3c6SKishore Padmanabha 	.proto_act_func          = NULL
222bdf4a3c6SKishore Padmanabha 	}
223bdf4a3c6SKishore Padmanabha };
224bdf4a3c6SKishore Padmanabha 
225a2417601SKishore Padmanabha /*
226a2417601SKishore Padmanabha  * This table has to be indexed based on the rte_flow_item_type that is part of
227a2417601SKishore Padmanabha  * DPDK. The below array is list of parsing functions for each of the flow items
228a2417601SKishore Padmanabha  * that are supported.
229a2417601SKishore Padmanabha  */
230a2417601SKishore Padmanabha struct bnxt_ulp_rte_hdr_info ulp_hdr_info[] = {
231a2417601SKishore Padmanabha 	[RTE_FLOW_ITEM_TYPE_END] = {
232a2417601SKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_END,
233a2417601SKishore Padmanabha 	.proto_hdr_func          = NULL
234a2417601SKishore Padmanabha 	},
235a2417601SKishore Padmanabha 	[RTE_FLOW_ITEM_TYPE_VOID] = {
236a2417601SKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
237a2417601SKishore Padmanabha 	.proto_hdr_func          = ulp_rte_void_hdr_handler
238a2417601SKishore Padmanabha 	},
239a2417601SKishore Padmanabha 	[RTE_FLOW_ITEM_TYPE_INVERT] = {
240a2417601SKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
241a2417601SKishore Padmanabha 	.proto_hdr_func          = NULL
242a2417601SKishore Padmanabha 	},
243a2417601SKishore Padmanabha 	[RTE_FLOW_ITEM_TYPE_ANY] = {
2443fe124d2SKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
2453fe124d2SKishore Padmanabha 	.proto_hdr_func          = ulp_rte_item_any_handler
246a2417601SKishore Padmanabha 	},
247a2417601SKishore Padmanabha 	[RTE_FLOW_ITEM_TYPE_PORT_ID] = {
248a2417601SKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
249a8321e09SAndrew Rybchenko 	.proto_hdr_func          = ulp_rte_port_hdr_handler
250a2417601SKishore Padmanabha 	},
251a2417601SKishore Padmanabha 	[RTE_FLOW_ITEM_TYPE_RAW] = {
252a2417601SKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
253a2417601SKishore Padmanabha 	.proto_hdr_func          = NULL
254a2417601SKishore Padmanabha 	},
255a2417601SKishore Padmanabha 	[RTE_FLOW_ITEM_TYPE_ETH] = {
256a2417601SKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
257a2417601SKishore Padmanabha 	.proto_hdr_func          = ulp_rte_eth_hdr_handler
258a2417601SKishore Padmanabha 	},
259a2417601SKishore Padmanabha 	[RTE_FLOW_ITEM_TYPE_VLAN] = {
260a2417601SKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
261a2417601SKishore Padmanabha 	.proto_hdr_func          = ulp_rte_vlan_hdr_handler
262a2417601SKishore Padmanabha 	},
263a2417601SKishore Padmanabha 	[RTE_FLOW_ITEM_TYPE_IPV4] = {
264a2417601SKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
265a2417601SKishore Padmanabha 	.proto_hdr_func          = ulp_rte_ipv4_hdr_handler
266a2417601SKishore Padmanabha 	},
267a2417601SKishore Padmanabha 	[RTE_FLOW_ITEM_TYPE_IPV6] = {
268a2417601SKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
269a2417601SKishore Padmanabha 	.proto_hdr_func          = ulp_rte_ipv6_hdr_handler
270a2417601SKishore Padmanabha 	},
271a2417601SKishore Padmanabha 	[RTE_FLOW_ITEM_TYPE_ICMP] = {
2723fe124d2SKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
2733fe124d2SKishore Padmanabha 	.proto_hdr_func          = ulp_rte_icmp_hdr_handler
274a2417601SKishore Padmanabha 	},
275a2417601SKishore Padmanabha 	[RTE_FLOW_ITEM_TYPE_UDP] = {
276a2417601SKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
277a2417601SKishore Padmanabha 	.proto_hdr_func          = ulp_rte_udp_hdr_handler
278a2417601SKishore Padmanabha 	},
279a2417601SKishore Padmanabha 	[RTE_FLOW_ITEM_TYPE_TCP] = {
280a2417601SKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
281a2417601SKishore Padmanabha 	.proto_hdr_func          = ulp_rte_tcp_hdr_handler
282a2417601SKishore Padmanabha 	},
283a2417601SKishore Padmanabha 	[RTE_FLOW_ITEM_TYPE_SCTP] = {
284a2417601SKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
285a2417601SKishore Padmanabha 	.proto_hdr_func          = NULL
286a2417601SKishore Padmanabha 	},
287a2417601SKishore Padmanabha 	[RTE_FLOW_ITEM_TYPE_VXLAN] = {
288a2417601SKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
289a2417601SKishore Padmanabha 	.proto_hdr_func          = ulp_rte_vxlan_hdr_handler
290a2417601SKishore Padmanabha 	},
291a2417601SKishore Padmanabha 	[RTE_FLOW_ITEM_TYPE_E_TAG] = {
292a2417601SKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
293a2417601SKishore Padmanabha 	.proto_hdr_func          = NULL
294a2417601SKishore Padmanabha 	},
295a2417601SKishore Padmanabha 	[RTE_FLOW_ITEM_TYPE_NVGRE] = {
296a2417601SKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
297a2417601SKishore Padmanabha 	.proto_hdr_func          = NULL
298a2417601SKishore Padmanabha 	},
299a2417601SKishore Padmanabha 	[RTE_FLOW_ITEM_TYPE_MPLS] = {
300a2417601SKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
301a2417601SKishore Padmanabha 	.proto_hdr_func          = NULL
302a2417601SKishore Padmanabha 	},
303a2417601SKishore Padmanabha 	[RTE_FLOW_ITEM_TYPE_GRE] = {
3043fe124d2SKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
3053fe124d2SKishore Padmanabha 	.proto_hdr_func          = ulp_rte_gre_hdr_handler
306a2417601SKishore Padmanabha 	},
307a2417601SKishore Padmanabha 	[RTE_FLOW_ITEM_TYPE_FUZZY] = {
308a2417601SKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
309a2417601SKishore Padmanabha 	.proto_hdr_func          = NULL
310a2417601SKishore Padmanabha 	},
311a2417601SKishore Padmanabha 	[RTE_FLOW_ITEM_TYPE_GTP] = {
312a2417601SKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
313a2417601SKishore Padmanabha 	.proto_hdr_func          = NULL
314a2417601SKishore Padmanabha 	},
315a2417601SKishore Padmanabha 	[RTE_FLOW_ITEM_TYPE_GTPC] = {
316a2417601SKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
317a2417601SKishore Padmanabha 	.proto_hdr_func          = NULL
318a2417601SKishore Padmanabha 	},
319a2417601SKishore Padmanabha 	[RTE_FLOW_ITEM_TYPE_GTPU] = {
320a2417601SKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
321a2417601SKishore Padmanabha 	.proto_hdr_func          = NULL
322a2417601SKishore Padmanabha 	},
323a2417601SKishore Padmanabha 	[RTE_FLOW_ITEM_TYPE_ESP] = {
324a2417601SKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
325a2417601SKishore Padmanabha 	.proto_hdr_func          = NULL
326a2417601SKishore Padmanabha 	},
327a2417601SKishore Padmanabha 	[RTE_FLOW_ITEM_TYPE_GENEVE] = {
328*dd0191d5SShuanglin Wang 	.hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
329*dd0191d5SShuanglin Wang 	.proto_hdr_func          = ulp_rte_geneve_hdr_handler
330a2417601SKishore Padmanabha 	},
331a2417601SKishore Padmanabha 	[RTE_FLOW_ITEM_TYPE_VXLAN_GPE] = {
33274cab005SRandy Schacher 	.hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
33374cab005SRandy Schacher 	.proto_hdr_func          = ulp_rte_vxlan_gpe_hdr_handler
334a2417601SKishore Padmanabha 	},
335a2417601SKishore Padmanabha 	[RTE_FLOW_ITEM_TYPE_ARP_ETH_IPV4] = {
336a2417601SKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
337a2417601SKishore Padmanabha 	.proto_hdr_func          = NULL
338a2417601SKishore Padmanabha 	},
339a2417601SKishore Padmanabha 	[RTE_FLOW_ITEM_TYPE_IPV6_EXT] = {
340a2417601SKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
341a2417601SKishore Padmanabha 	.proto_hdr_func          = NULL
342a2417601SKishore Padmanabha 	},
343a2417601SKishore Padmanabha 	[RTE_FLOW_ITEM_TYPE_ICMP6] = {
344a4d4308eSKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
345a4d4308eSKishore Padmanabha 	.proto_hdr_func          = ulp_rte_icmp6_hdr_handler
346a2417601SKishore Padmanabha 	},
347a2417601SKishore Padmanabha 	[RTE_FLOW_ITEM_TYPE_ICMP6_ND_NS] = {
348a2417601SKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
349a2417601SKishore Padmanabha 	.proto_hdr_func          = NULL
350a2417601SKishore Padmanabha 	},
351a2417601SKishore Padmanabha 	[RTE_FLOW_ITEM_TYPE_ICMP6_ND_NA] = {
352a2417601SKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
353a2417601SKishore Padmanabha 	.proto_hdr_func          = NULL
354a2417601SKishore Padmanabha 	},
355a2417601SKishore Padmanabha 	[RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT] = {
356a2417601SKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
357a2417601SKishore Padmanabha 	.proto_hdr_func          = NULL
358a2417601SKishore Padmanabha 	},
359a2417601SKishore Padmanabha 	[RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT_SLA_ETH] = {
360a2417601SKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
361a2417601SKishore Padmanabha 	.proto_hdr_func          = NULL
362a2417601SKishore Padmanabha 	},
363a2417601SKishore Padmanabha 	[RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT_TLA_ETH] = {
364a2417601SKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
365a2417601SKishore Padmanabha 	.proto_hdr_func          = NULL
366a2417601SKishore Padmanabha 	},
367a2417601SKishore Padmanabha 	[RTE_FLOW_ITEM_TYPE_MARK] = {
368a2417601SKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
369a2417601SKishore Padmanabha 	.proto_hdr_func          = NULL
370a2417601SKishore Padmanabha 	},
371a2417601SKishore Padmanabha 	[RTE_FLOW_ITEM_TYPE_META] = {
372a2417601SKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
373a2417601SKishore Padmanabha 	.proto_hdr_func          = NULL
374a2417601SKishore Padmanabha 	},
375a2417601SKishore Padmanabha 	[RTE_FLOW_ITEM_TYPE_GRE_KEY] = {
376a2417601SKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
377a2417601SKishore Padmanabha 	.proto_hdr_func          = NULL
378a2417601SKishore Padmanabha 	},
379a2417601SKishore Padmanabha 	[RTE_FLOW_ITEM_TYPE_GTP_PSC] = {
380a2417601SKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
381a2417601SKishore Padmanabha 	.proto_hdr_func          = NULL
382a2417601SKishore Padmanabha 	},
383a2417601SKishore Padmanabha 	[RTE_FLOW_ITEM_TYPE_PPPOES] = {
384a2417601SKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
385a2417601SKishore Padmanabha 	.proto_hdr_func          = NULL
386a2417601SKishore Padmanabha 	},
387a2417601SKishore Padmanabha 	[RTE_FLOW_ITEM_TYPE_PPPOED] = {
388a2417601SKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
389a2417601SKishore Padmanabha 	.proto_hdr_func          = NULL
390a2417601SKishore Padmanabha 	},
391a2417601SKishore Padmanabha 	[RTE_FLOW_ITEM_TYPE_PPPOE_PROTO_ID] = {
392a2417601SKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
393a2417601SKishore Padmanabha 	.proto_hdr_func          = NULL
394a2417601SKishore Padmanabha 	},
395a2417601SKishore Padmanabha 	[RTE_FLOW_ITEM_TYPE_NSH] = {
396a2417601SKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
397a2417601SKishore Padmanabha 	.proto_hdr_func          = NULL
398a2417601SKishore Padmanabha 	},
399a2417601SKishore Padmanabha 	[RTE_FLOW_ITEM_TYPE_IGMP] = {
400a2417601SKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
401a2417601SKishore Padmanabha 	.proto_hdr_func          = NULL
402a2417601SKishore Padmanabha 	},
403a2417601SKishore Padmanabha 	[RTE_FLOW_ITEM_TYPE_AH] = {
404a2417601SKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
405a2417601SKishore Padmanabha 	.proto_hdr_func          = NULL
406a2417601SKishore Padmanabha 	},
407a2417601SKishore Padmanabha 	[RTE_FLOW_ITEM_TYPE_HIGIG2] = {
408a2417601SKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
409a2417601SKishore Padmanabha 	.proto_hdr_func          = NULL
410a8321e09SAndrew Rybchenko 	},
4112d344c36SRandy Schacher 	[RTE_FLOW_ITEM_TYPE_ECPRI] = {
4122d344c36SRandy Schacher 	.hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
4132d344c36SRandy Schacher 	.proto_hdr_func          = ulp_rte_ecpri_hdr_handler
4142d344c36SRandy Schacher 	},
415a8321e09SAndrew Rybchenko 	[RTE_FLOW_ITEM_TYPE_PORT_REPRESENTOR] = {
416a8321e09SAndrew Rybchenko 	.hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
417*dd0191d5SShuanglin Wang 	.proto_hdr_func          = ulp_rte_ecpri_hdr_handler
418a8321e09SAndrew Rybchenko 	},
419a8321e09SAndrew Rybchenko 	[RTE_FLOW_ITEM_TYPE_REPRESENTED_PORT] = {
420a8321e09SAndrew Rybchenko 	.hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
421a8321e09SAndrew Rybchenko 	.proto_hdr_func          = ulp_rte_port_hdr_handler
422a2417601SKishore Padmanabha 	}
423a2417601SKishore Padmanabha };
424bdf4a3c6SKishore Padmanabha 
425bdf4a3c6SKishore Padmanabha struct bnxt_ulp_rte_hdr_info ulp_vendor_hdr_info[] = {
426bdf4a3c6SKishore Padmanabha 	[BNXT_RTE_FLOW_ITEM_TYPE_END - BNXT_RTE_FLOW_ITEM_TYPE_END] = {
427bdf4a3c6SKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_END,
428bdf4a3c6SKishore Padmanabha 	.proto_hdr_func          = NULL
429bdf4a3c6SKishore Padmanabha 	},
430bdf4a3c6SKishore Padmanabha 	[BNXT_RTE_FLOW_ITEM_TYPE_VXLAN_DECAP - BNXT_RTE_FLOW_ITEM_TYPE_END] = {
431bdf4a3c6SKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
432bdf4a3c6SKishore Padmanabha 	.proto_hdr_func          = ulp_rte_vendor_vxlan_decap_hdr_handler
433bdf4a3c6SKishore Padmanabha 	},
434bdf4a3c6SKishore Padmanabha 	[BNXT_RTE_FLOW_ITEM_TYPE_LAST - BNXT_RTE_FLOW_ITEM_TYPE_END] = {
435bdf4a3c6SKishore Padmanabha 	.hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
436bdf4a3c6SKishore Padmanabha 	.proto_hdr_func          = NULL
437bdf4a3c6SKishore Padmanabha 	},
438bdf4a3c6SKishore Padmanabha 
439bdf4a3c6SKishore Padmanabha };
440