1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2014-2020 Broadcom
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"
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
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
101 [RTE_FLOW_ACTION_TYPE_VOID] = {
102 .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED,
103 .proto_act_func = ulp_rte_void_act_handler
105 [RTE_FLOW_ACTION_TYPE_PASSTHRU] = {
106 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
107 .proto_act_func = NULL
109 [RTE_FLOW_ACTION_TYPE_JUMP] = {
110 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
111 .proto_act_func = NULL
113 [RTE_FLOW_ACTION_TYPE_MARK] = {
114 .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED,
115 .proto_act_func = ulp_rte_mark_act_handler
117 [RTE_FLOW_ACTION_TYPE_FLAG] = {
118 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
119 .proto_act_func = NULL
121 [RTE_FLOW_ACTION_TYPE_QUEUE] = {
122 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
123 .proto_act_func = NULL
125 [RTE_FLOW_ACTION_TYPE_DROP] = {
126 .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED,
127 .proto_act_func = ulp_rte_drop_act_handler
129 [RTE_FLOW_ACTION_TYPE_COUNT] = {
130 .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED,
131 .proto_act_func = ulp_rte_count_act_handler
133 [RTE_FLOW_ACTION_TYPE_RSS] = {
134 .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED,
135 .proto_act_func = ulp_rte_rss_act_handler
137 [RTE_FLOW_ACTION_TYPE_PF] = {
138 .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED,
139 .proto_act_func = ulp_rte_pf_act_handler
141 [RTE_FLOW_ACTION_TYPE_VF] = {
142 .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED,
143 .proto_act_func = ulp_rte_vf_act_handler
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
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
153 [RTE_FLOW_ACTION_TYPE_METER] = {
154 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
155 .proto_act_func = NULL
157 [RTE_FLOW_ACTION_TYPE_SECURITY] = {
158 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
159 .proto_act_func = NULL
161 [RTE_FLOW_ACTION_TYPE_OF_SET_MPLS_TTL] = {
162 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
163 .proto_act_func = NULL
165 [RTE_FLOW_ACTION_TYPE_OF_DEC_MPLS_TTL] = {
166 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
167 .proto_act_func = NULL
169 [RTE_FLOW_ACTION_TYPE_OF_SET_NW_TTL] = {
170 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
171 .proto_act_func = NULL
173 [RTE_FLOW_ACTION_TYPE_OF_DEC_NW_TTL] = {
174 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
175 .proto_act_func = NULL
177 [RTE_FLOW_ACTION_TYPE_OF_COPY_TTL_OUT] = {
178 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
179 .proto_act_func = NULL
181 [RTE_FLOW_ACTION_TYPE_OF_COPY_TTL_IN] = {
182 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
183 .proto_act_func = NULL
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
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
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
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
201 [RTE_FLOW_ACTION_TYPE_OF_POP_MPLS] = {
202 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
203 .proto_act_func = NULL
205 [RTE_FLOW_ACTION_TYPE_OF_PUSH_MPLS] = {
206 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
207 .proto_act_func = NULL
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
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
217 [RTE_FLOW_ACTION_TYPE_NVGRE_ENCAP] = {
218 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
219 .proto_act_func = NULL
221 [RTE_FLOW_ACTION_TYPE_NVGRE_DECAP] = {
222 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
223 .proto_act_func = NULL
225 [RTE_FLOW_ACTION_TYPE_RAW_ENCAP] = {
226 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
227 .proto_act_func = NULL
229 [RTE_FLOW_ACTION_TYPE_RAW_DECAP] = {
230 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
231 .proto_act_func = NULL
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
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
241 [RTE_FLOW_ACTION_TYPE_SET_IPV6_SRC] = {
242 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
243 .proto_act_func = NULL
245 [RTE_FLOW_ACTION_TYPE_SET_IPV6_DST] = {
246 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
247 .proto_act_func = NULL
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
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
257 [RTE_FLOW_ACTION_TYPE_MAC_SWAP] = {
258 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
259 .proto_act_func = NULL
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
265 [RTE_FLOW_ACTION_TYPE_SET_TTL] = {
266 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
267 .proto_act_func = NULL
269 [RTE_FLOW_ACTION_TYPE_SET_MAC_SRC] = {
270 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
271 .proto_act_func = NULL
273 [RTE_FLOW_ACTION_TYPE_SET_MAC_DST] = {
274 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
275 .proto_act_func = NULL
277 [RTE_FLOW_ACTION_TYPE_INC_TCP_SEQ] = {
278 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
279 .proto_act_func = NULL
281 [RTE_FLOW_ACTION_TYPE_DEC_TCP_SEQ] = {
282 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
283 .proto_act_func = NULL
285 [RTE_FLOW_ACTION_TYPE_INC_TCP_ACK] = {
286 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
287 .proto_act_func = NULL
289 [RTE_FLOW_ACTION_TYPE_DEC_TCP_ACK] = {
290 .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
291 .proto_act_func = NULL
295 struct bnxt_ulp_cache_tbl_params ulp_cache_tbl_params[] = {
296 [BNXT_ULP_RESOURCE_SUB_TYPE_CACHE_TYPE_L2_CNTXT_TCAM << 1 |
300 [BNXT_ULP_RESOURCE_SUB_TYPE_CACHE_TYPE_L2_CNTXT_TCAM << 1 |
304 [BNXT_ULP_RESOURCE_SUB_TYPE_CACHE_TYPE_PROFILE_TCAM << 1 |
308 [BNXT_ULP_RESOURCE_SUB_TYPE_CACHE_TYPE_PROFILE_TCAM << 1 |
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,
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
333 struct bnxt_ulp_glb_resource_info ulp_glb_resource_tbl[] = {
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
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
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
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
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
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
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
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
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
389 [RTE_FLOW_ITEM_TYPE_VOID] = {
390 .hdr_type = BNXT_ULP_HDR_TYPE_SUPPORTED,
391 .proto_hdr_func = ulp_rte_void_hdr_handler
393 [RTE_FLOW_ITEM_TYPE_INVERT] = {
394 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
395 .proto_hdr_func = NULL
397 [RTE_FLOW_ITEM_TYPE_ANY] = {
398 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
399 .proto_hdr_func = NULL
401 [RTE_FLOW_ITEM_TYPE_PF] = {
402 .hdr_type = BNXT_ULP_HDR_TYPE_SUPPORTED,
403 .proto_hdr_func = ulp_rte_pf_hdr_handler
405 [RTE_FLOW_ITEM_TYPE_VF] = {
406 .hdr_type = BNXT_ULP_HDR_TYPE_SUPPORTED,
407 .proto_hdr_func = ulp_rte_vf_hdr_handler
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
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
417 [RTE_FLOW_ITEM_TYPE_RAW] = {
418 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
419 .proto_hdr_func = NULL
421 [RTE_FLOW_ITEM_TYPE_ETH] = {
422 .hdr_type = BNXT_ULP_HDR_TYPE_SUPPORTED,
423 .proto_hdr_func = ulp_rte_eth_hdr_handler
425 [RTE_FLOW_ITEM_TYPE_VLAN] = {
426 .hdr_type = BNXT_ULP_HDR_TYPE_SUPPORTED,
427 .proto_hdr_func = ulp_rte_vlan_hdr_handler
429 [RTE_FLOW_ITEM_TYPE_IPV4] = {
430 .hdr_type = BNXT_ULP_HDR_TYPE_SUPPORTED,
431 .proto_hdr_func = ulp_rte_ipv4_hdr_handler
433 [RTE_FLOW_ITEM_TYPE_IPV6] = {
434 .hdr_type = BNXT_ULP_HDR_TYPE_SUPPORTED,
435 .proto_hdr_func = ulp_rte_ipv6_hdr_handler
437 [RTE_FLOW_ITEM_TYPE_ICMP] = {
438 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
439 .proto_hdr_func = NULL
441 [RTE_FLOW_ITEM_TYPE_UDP] = {
442 .hdr_type = BNXT_ULP_HDR_TYPE_SUPPORTED,
443 .proto_hdr_func = ulp_rte_udp_hdr_handler
445 [RTE_FLOW_ITEM_TYPE_TCP] = {
446 .hdr_type = BNXT_ULP_HDR_TYPE_SUPPORTED,
447 .proto_hdr_func = ulp_rte_tcp_hdr_handler
449 [RTE_FLOW_ITEM_TYPE_SCTP] = {
450 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
451 .proto_hdr_func = NULL
453 [RTE_FLOW_ITEM_TYPE_VXLAN] = {
454 .hdr_type = BNXT_ULP_HDR_TYPE_SUPPORTED,
455 .proto_hdr_func = ulp_rte_vxlan_hdr_handler
457 [RTE_FLOW_ITEM_TYPE_E_TAG] = {
458 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
459 .proto_hdr_func = NULL
461 [RTE_FLOW_ITEM_TYPE_NVGRE] = {
462 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
463 .proto_hdr_func = NULL
465 [RTE_FLOW_ITEM_TYPE_MPLS] = {
466 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
467 .proto_hdr_func = NULL
469 [RTE_FLOW_ITEM_TYPE_GRE] = {
470 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
471 .proto_hdr_func = NULL
473 [RTE_FLOW_ITEM_TYPE_FUZZY] = {
474 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
475 .proto_hdr_func = NULL
477 [RTE_FLOW_ITEM_TYPE_GTP] = {
478 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
479 .proto_hdr_func = NULL
481 [RTE_FLOW_ITEM_TYPE_GTPC] = {
482 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
483 .proto_hdr_func = NULL
485 [RTE_FLOW_ITEM_TYPE_GTPU] = {
486 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
487 .proto_hdr_func = NULL
489 [RTE_FLOW_ITEM_TYPE_ESP] = {
490 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
491 .proto_hdr_func = NULL
493 [RTE_FLOW_ITEM_TYPE_GENEVE] = {
494 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
495 .proto_hdr_func = NULL
497 [RTE_FLOW_ITEM_TYPE_VXLAN_GPE] = {
498 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
499 .proto_hdr_func = NULL
501 [RTE_FLOW_ITEM_TYPE_ARP_ETH_IPV4] = {
502 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
503 .proto_hdr_func = NULL
505 [RTE_FLOW_ITEM_TYPE_IPV6_EXT] = {
506 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
507 .proto_hdr_func = NULL
509 [RTE_FLOW_ITEM_TYPE_ICMP6] = {
510 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
511 .proto_hdr_func = NULL
513 [RTE_FLOW_ITEM_TYPE_ICMP6_ND_NS] = {
514 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
515 .proto_hdr_func = NULL
517 [RTE_FLOW_ITEM_TYPE_ICMP6_ND_NA] = {
518 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
519 .proto_hdr_func = NULL
521 [RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT] = {
522 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
523 .proto_hdr_func = NULL
525 [RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT_SLA_ETH] = {
526 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
527 .proto_hdr_func = NULL
529 [RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT_TLA_ETH] = {
530 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
531 .proto_hdr_func = NULL
533 [RTE_FLOW_ITEM_TYPE_MARK] = {
534 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
535 .proto_hdr_func = NULL
537 [RTE_FLOW_ITEM_TYPE_META] = {
538 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
539 .proto_hdr_func = NULL
541 [RTE_FLOW_ITEM_TYPE_GRE_KEY] = {
542 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
543 .proto_hdr_func = NULL
545 [RTE_FLOW_ITEM_TYPE_GTP_PSC] = {
546 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
547 .proto_hdr_func = NULL
549 [RTE_FLOW_ITEM_TYPE_PPPOES] = {
550 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
551 .proto_hdr_func = NULL
553 [RTE_FLOW_ITEM_TYPE_PPPOED] = {
554 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
555 .proto_hdr_func = NULL
557 [RTE_FLOW_ITEM_TYPE_PPPOE_PROTO_ID] = {
558 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
559 .proto_hdr_func = NULL
561 [RTE_FLOW_ITEM_TYPE_NSH] = {
562 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
563 .proto_hdr_func = NULL
565 [RTE_FLOW_ITEM_TYPE_IGMP] = {
566 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
567 .proto_hdr_func = NULL
569 [RTE_FLOW_ITEM_TYPE_AH] = {
570 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
571 .proto_hdr_func = NULL
573 [RTE_FLOW_ITEM_TYPE_HIGIG2] = {
574 .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
575 .proto_hdr_func = NULL
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
585 uint32_t ulp_glb_template_tbl[] = {
586 BNXT_ULP_DF_TPL_LOOPBACK_ACTION_REC