net/bnxt: update ULP template database for new opcodes
[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_OF_PUSH_VLAN] =
45                 BNXT_ULP_ACT_PROP_SZ_OF_PUSH_VLAN,
46         [BNXT_ULP_ACT_PROP_IDX_OF_SET_VLAN_PCP] =
47                 BNXT_ULP_ACT_PROP_SZ_OF_SET_VLAN_PCP,
48         [BNXT_ULP_ACT_PROP_IDX_OF_SET_VLAN_VID] =
49                 BNXT_ULP_ACT_PROP_SZ_OF_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_NOT_SUPPORTED,
187                 .proto_act_func          = NULL
188         },
189         [RTE_FLOW_ACTION_TYPE_OF_PUSH_VLAN] = {
190                 .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
191                 .proto_act_func          = NULL
192         },
193         [RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_VID] = {
194                 .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
195                 .proto_act_func          = NULL
196         },
197         [RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_PCP] = {
198                 .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
199                 .proto_act_func          = NULL
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_NOT_SUPPORTED,
235                 .proto_act_func          = NULL
236         },
237         [RTE_FLOW_ACTION_TYPE_SET_IPV4_DST] = {
238                 .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
239                 .proto_act_func          = NULL
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_NOT_SUPPORTED,
251                 .proto_act_func          = NULL
252         },
253         [RTE_FLOW_ACTION_TYPE_SET_TP_DST] = {
254                 .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
255                 .proto_act_func          = NULL
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_NOT_SUPPORTED,
263                 .proto_act_func          = NULL
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_EXT,
317         .byte_order             = BNXT_ULP_BYTE_ORDER_LE,
318         .encap_byte_swap        = 1,
319         .flow_db_num_entries    = 32768,
320         .mark_db_lfid_entries   = 65536,
321         .mark_db_gfid_entries   = 65536,
322         .flow_count_db_entries  = 16384,
323         .num_resources_per_flow = 8,
324         .num_phy_ports          = 2
325         }
326 };
327
328 struct bnxt_ulp_glb_resource_info ulp_glb_resource_tbl[] = {
329         [0] = {
330         .resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
331         .resource_type           = TF_IDENT_TYPE_PROF_FUNC,
332         .glb_regfile_index       = BNXT_ULP_GLB_REGFILE_INDEX_GLB_PROF_FUNC_ID,
333         .direction               = TF_DIR_RX
334         },
335         [1] = {
336         .resource_func      = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
337         .resource_type      = TF_IDENT_TYPE_PROF_FUNC,
338         .glb_regfile_index  = BNXT_ULP_GLB_REGFILE_INDEX_GLB_PROF_FUNC_ID,
339         .direction          = TF_DIR_TX
340         },
341         [2] = {
342         .resource_func      = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
343         .resource_type      = TF_IDENT_TYPE_L2_CTXT,
344         .glb_regfile_index  = BNXT_ULP_GLB_REGFILE_INDEX_GLB_L2_CNTXT_ID,
345         .direction          = TF_DIR_RX
346         }
347 };
348
349 struct bnxt_ulp_rte_hdr_info ulp_hdr_info[] = {
350         [RTE_FLOW_ITEM_TYPE_END] = {
351                 .hdr_type                = BNXT_ULP_HDR_TYPE_END,
352                 .proto_hdr_func          = NULL
353         },
354         [RTE_FLOW_ITEM_TYPE_VOID] = {
355                 .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
356                 .proto_hdr_func          = ulp_rte_void_hdr_handler
357         },
358         [RTE_FLOW_ITEM_TYPE_INVERT] = {
359                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
360                 .proto_hdr_func          = NULL
361         },
362         [RTE_FLOW_ITEM_TYPE_ANY] = {
363                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
364                 .proto_hdr_func          = NULL
365         },
366         [RTE_FLOW_ITEM_TYPE_PF] = {
367                 .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
368                 .proto_hdr_func          = ulp_rte_pf_hdr_handler
369         },
370         [RTE_FLOW_ITEM_TYPE_VF] = {
371                 .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
372                 .proto_hdr_func          = ulp_rte_vf_hdr_handler
373         },
374         [RTE_FLOW_ITEM_TYPE_PHY_PORT] = {
375                 .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
376                 .proto_hdr_func          = ulp_rte_phy_port_hdr_handler
377         },
378         [RTE_FLOW_ITEM_TYPE_PORT_ID] = {
379                 .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
380                 .proto_hdr_func          = ulp_rte_port_id_hdr_handler
381         },
382         [RTE_FLOW_ITEM_TYPE_RAW] = {
383                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
384                 .proto_hdr_func          = NULL
385         },
386         [RTE_FLOW_ITEM_TYPE_ETH] = {
387                 .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
388                 .proto_hdr_func          = ulp_rte_eth_hdr_handler
389         },
390         [RTE_FLOW_ITEM_TYPE_VLAN] = {
391                 .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
392                 .proto_hdr_func          = ulp_rte_vlan_hdr_handler
393         },
394         [RTE_FLOW_ITEM_TYPE_IPV4] = {
395                 .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
396                 .proto_hdr_func          = ulp_rte_ipv4_hdr_handler
397         },
398         [RTE_FLOW_ITEM_TYPE_IPV6] = {
399                 .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
400                 .proto_hdr_func          = ulp_rte_ipv6_hdr_handler
401         },
402         [RTE_FLOW_ITEM_TYPE_ICMP] = {
403                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
404                 .proto_hdr_func          = NULL
405         },
406         [RTE_FLOW_ITEM_TYPE_UDP] = {
407                 .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
408                 .proto_hdr_func          = ulp_rte_udp_hdr_handler
409         },
410         [RTE_FLOW_ITEM_TYPE_TCP] = {
411                 .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
412                 .proto_hdr_func          = ulp_rte_tcp_hdr_handler
413         },
414         [RTE_FLOW_ITEM_TYPE_SCTP] = {
415                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
416                 .proto_hdr_func          = NULL
417         },
418         [RTE_FLOW_ITEM_TYPE_VXLAN] = {
419                 .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
420                 .proto_hdr_func          = ulp_rte_vxlan_hdr_handler
421         },
422         [RTE_FLOW_ITEM_TYPE_E_TAG] = {
423                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
424                 .proto_hdr_func          = NULL
425         },
426         [RTE_FLOW_ITEM_TYPE_NVGRE] = {
427                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
428                 .proto_hdr_func          = NULL
429         },
430         [RTE_FLOW_ITEM_TYPE_MPLS] = {
431                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
432                 .proto_hdr_func          = NULL
433         },
434         [RTE_FLOW_ITEM_TYPE_GRE] = {
435                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
436                 .proto_hdr_func          = NULL
437         },
438         [RTE_FLOW_ITEM_TYPE_FUZZY] = {
439                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
440                 .proto_hdr_func          = NULL
441         },
442         [RTE_FLOW_ITEM_TYPE_GTP] = {
443                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
444                 .proto_hdr_func          = NULL
445         },
446         [RTE_FLOW_ITEM_TYPE_GTPC] = {
447                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
448                 .proto_hdr_func          = NULL
449         },
450         [RTE_FLOW_ITEM_TYPE_GTPU] = {
451                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
452                 .proto_hdr_func          = NULL
453         },
454         [RTE_FLOW_ITEM_TYPE_ESP] = {
455                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
456                 .proto_hdr_func          = NULL
457         },
458         [RTE_FLOW_ITEM_TYPE_GENEVE] = {
459                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
460                 .proto_hdr_func          = NULL
461         },
462         [RTE_FLOW_ITEM_TYPE_VXLAN_GPE] = {
463                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
464                 .proto_hdr_func          = NULL
465         },
466         [RTE_FLOW_ITEM_TYPE_ARP_ETH_IPV4] = {
467                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
468                 .proto_hdr_func          = NULL
469         },
470         [RTE_FLOW_ITEM_TYPE_IPV6_EXT] = {
471                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
472                 .proto_hdr_func          = NULL
473         },
474         [RTE_FLOW_ITEM_TYPE_ICMP6] = {
475                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
476                 .proto_hdr_func          = NULL
477         },
478         [RTE_FLOW_ITEM_TYPE_ICMP6_ND_NS] = {
479                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
480                 .proto_hdr_func          = NULL
481         },
482         [RTE_FLOW_ITEM_TYPE_ICMP6_ND_NA] = {
483                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
484                 .proto_hdr_func          = NULL
485         },
486         [RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT] = {
487                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
488                 .proto_hdr_func          = NULL
489         },
490         [RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT_SLA_ETH] = {
491                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
492                 .proto_hdr_func          = NULL
493         },
494         [RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT_TLA_ETH] = {
495                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
496                 .proto_hdr_func          = NULL
497         },
498         [RTE_FLOW_ITEM_TYPE_MARK] = {
499                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
500                 .proto_hdr_func          = NULL
501         },
502         [RTE_FLOW_ITEM_TYPE_META] = {
503                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
504                 .proto_hdr_func          = NULL
505         },
506         [RTE_FLOW_ITEM_TYPE_GRE_KEY] = {
507                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
508                 .proto_hdr_func          = NULL
509         },
510         [RTE_FLOW_ITEM_TYPE_GTP_PSC] = {
511                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
512                 .proto_hdr_func          = NULL
513         },
514         [RTE_FLOW_ITEM_TYPE_PPPOES] = {
515                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
516                 .proto_hdr_func          = NULL
517         },
518         [RTE_FLOW_ITEM_TYPE_PPPOED] = {
519                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
520                 .proto_hdr_func          = NULL
521         },
522         [RTE_FLOW_ITEM_TYPE_PPPOE_PROTO_ID] = {
523                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
524                 .proto_hdr_func          = NULL
525         },
526         [RTE_FLOW_ITEM_TYPE_NSH] = {
527                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
528                 .proto_hdr_func          = NULL
529         },
530         [RTE_FLOW_ITEM_TYPE_IGMP] = {
531                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
532                 .proto_hdr_func          = NULL
533         },
534         [RTE_FLOW_ITEM_TYPE_AH] = {
535                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
536                 .proto_hdr_func          = NULL
537         },
538         [RTE_FLOW_ITEM_TYPE_HIGIG2] = {
539                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
540                 .proto_hdr_func          = NULL
541         }
542 };
543
544 uint32_t bnxt_ulp_encap_vtag_map[] = {
545         [0] = BNXT_ULP_SYM_ECV_VTAG_TYPE_NOP,
546         [1] = BNXT_ULP_SYM_ECV_VTAG_TYPE_ADD_1_ENCAP_PRI,
547         [2] = BNXT_ULP_SYM_ECV_VTAG_TYPE_ADD_2_ENCAP_PRI
548 };