net/bnxt: divide ULP template database to smaller modules
[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                 .global_fid_enable       = BNXT_ULP_SYM_YES,
317                 .byte_order              = BNXT_ULP_BYTE_ORDER_LE,
318                 .encap_byte_swap         = 1,
319                 .lfid_entries            = 16384,
320                 .lfid_entry_size         = 4,
321                 .gfid_entries            = 65536,
322                 .gfid_entry_size         = 4,
323                 .num_flows               = 32768,
324                 .num_resources_per_flow  = 8
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 };
342
343 struct bnxt_ulp_rte_hdr_info ulp_hdr_info[] = {
344         [RTE_FLOW_ITEM_TYPE_END] = {
345                 .hdr_type                = BNXT_ULP_HDR_TYPE_END,
346                 .proto_hdr_func          = NULL
347         },
348         [RTE_FLOW_ITEM_TYPE_VOID] = {
349                 .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
350                 .proto_hdr_func          = ulp_rte_void_hdr_handler
351         },
352         [RTE_FLOW_ITEM_TYPE_INVERT] = {
353                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
354                 .proto_hdr_func          = NULL
355         },
356         [RTE_FLOW_ITEM_TYPE_ANY] = {
357                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
358                 .proto_hdr_func          = NULL
359         },
360         [RTE_FLOW_ITEM_TYPE_PF] = {
361                 .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
362                 .proto_hdr_func          = ulp_rte_pf_hdr_handler
363         },
364         [RTE_FLOW_ITEM_TYPE_VF] = {
365                 .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
366                 .proto_hdr_func          = ulp_rte_vf_hdr_handler
367         },
368         [RTE_FLOW_ITEM_TYPE_PHY_PORT] = {
369                 .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
370                 .proto_hdr_func          = ulp_rte_phy_port_hdr_handler
371         },
372         [RTE_FLOW_ITEM_TYPE_PORT_ID] = {
373                 .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
374                 .proto_hdr_func          = ulp_rte_port_id_hdr_handler
375         },
376         [RTE_FLOW_ITEM_TYPE_RAW] = {
377                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
378                 .proto_hdr_func          = NULL
379         },
380         [RTE_FLOW_ITEM_TYPE_ETH] = {
381                 .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
382                 .proto_hdr_func          = ulp_rte_eth_hdr_handler
383         },
384         [RTE_FLOW_ITEM_TYPE_VLAN] = {
385                 .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
386                 .proto_hdr_func          = ulp_rte_vlan_hdr_handler
387         },
388         [RTE_FLOW_ITEM_TYPE_IPV4] = {
389                 .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
390                 .proto_hdr_func          = ulp_rte_ipv4_hdr_handler
391         },
392         [RTE_FLOW_ITEM_TYPE_IPV6] = {
393                 .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
394                 .proto_hdr_func          = ulp_rte_ipv6_hdr_handler
395         },
396         [RTE_FLOW_ITEM_TYPE_ICMP] = {
397                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
398                 .proto_hdr_func          = NULL
399         },
400         [RTE_FLOW_ITEM_TYPE_UDP] = {
401                 .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
402                 .proto_hdr_func          = ulp_rte_udp_hdr_handler
403         },
404         [RTE_FLOW_ITEM_TYPE_TCP] = {
405                 .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
406                 .proto_hdr_func          = ulp_rte_tcp_hdr_handler
407         },
408         [RTE_FLOW_ITEM_TYPE_SCTP] = {
409                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
410                 .proto_hdr_func          = NULL
411         },
412         [RTE_FLOW_ITEM_TYPE_VXLAN] = {
413                 .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
414                 .proto_hdr_func          = ulp_rte_vxlan_hdr_handler
415         },
416         [RTE_FLOW_ITEM_TYPE_E_TAG] = {
417                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
418                 .proto_hdr_func          = NULL
419         },
420         [RTE_FLOW_ITEM_TYPE_NVGRE] = {
421                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
422                 .proto_hdr_func          = NULL
423         },
424         [RTE_FLOW_ITEM_TYPE_MPLS] = {
425                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
426                 .proto_hdr_func          = NULL
427         },
428         [RTE_FLOW_ITEM_TYPE_GRE] = {
429                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
430                 .proto_hdr_func          = NULL
431         },
432         [RTE_FLOW_ITEM_TYPE_FUZZY] = {
433                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
434                 .proto_hdr_func          = NULL
435         },
436         [RTE_FLOW_ITEM_TYPE_GTP] = {
437                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
438                 .proto_hdr_func          = NULL
439         },
440         [RTE_FLOW_ITEM_TYPE_GTPC] = {
441                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
442                 .proto_hdr_func          = NULL
443         },
444         [RTE_FLOW_ITEM_TYPE_GTPU] = {
445                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
446                 .proto_hdr_func          = NULL
447         },
448         [RTE_FLOW_ITEM_TYPE_ESP] = {
449                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
450                 .proto_hdr_func          = NULL
451         },
452         [RTE_FLOW_ITEM_TYPE_GENEVE] = {
453                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
454                 .proto_hdr_func          = NULL
455         },
456         [RTE_FLOW_ITEM_TYPE_VXLAN_GPE] = {
457                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
458                 .proto_hdr_func          = NULL
459         },
460         [RTE_FLOW_ITEM_TYPE_ARP_ETH_IPV4] = {
461                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
462                 .proto_hdr_func          = NULL
463         },
464         [RTE_FLOW_ITEM_TYPE_IPV6_EXT] = {
465                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
466                 .proto_hdr_func          = NULL
467         },
468         [RTE_FLOW_ITEM_TYPE_ICMP6] = {
469                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
470                 .proto_hdr_func          = NULL
471         },
472         [RTE_FLOW_ITEM_TYPE_ICMP6_ND_NS] = {
473                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
474                 .proto_hdr_func          = NULL
475         },
476         [RTE_FLOW_ITEM_TYPE_ICMP6_ND_NA] = {
477                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
478                 .proto_hdr_func          = NULL
479         },
480         [RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT] = {
481                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
482                 .proto_hdr_func          = NULL
483         },
484         [RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT_SLA_ETH] = {
485                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
486                 .proto_hdr_func          = NULL
487         },
488         [RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT_TLA_ETH] = {
489                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
490                 .proto_hdr_func          = NULL
491         },
492         [RTE_FLOW_ITEM_TYPE_MARK] = {
493                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
494                 .proto_hdr_func          = NULL
495         },
496         [RTE_FLOW_ITEM_TYPE_META] = {
497                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
498                 .proto_hdr_func          = NULL
499         },
500         [RTE_FLOW_ITEM_TYPE_GRE_KEY] = {
501                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
502                 .proto_hdr_func          = NULL
503         },
504         [RTE_FLOW_ITEM_TYPE_GTP_PSC] = {
505                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
506                 .proto_hdr_func          = NULL
507         },
508         [RTE_FLOW_ITEM_TYPE_PPPOES] = {
509                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
510                 .proto_hdr_func          = NULL
511         },
512         [RTE_FLOW_ITEM_TYPE_PPPOED] = {
513                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
514                 .proto_hdr_func          = NULL
515         },
516         [RTE_FLOW_ITEM_TYPE_PPPOE_PROTO_ID] = {
517                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
518                 .proto_hdr_func          = NULL
519         },
520         [RTE_FLOW_ITEM_TYPE_NSH] = {
521                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
522                 .proto_hdr_func          = NULL
523         },
524         [RTE_FLOW_ITEM_TYPE_IGMP] = {
525                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
526                 .proto_hdr_func          = NULL
527         },
528         [RTE_FLOW_ITEM_TYPE_AH] = {
529                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
530                 .proto_hdr_func          = NULL
531         },
532         [RTE_FLOW_ITEM_TYPE_HIGIG2] = {
533                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
534                 .proto_hdr_func          = NULL
535         }
536 };
537
538 uint32_t bnxt_ulp_encap_vtag_map[] = {
539         [0] = BNXT_ULP_SYM_ECV_VTAG_TYPE_NOP,
540         [1] = BNXT_ULP_SYM_ECV_VTAG_TYPE_ADD_1_ENCAP_PRI,
541         [2] = BNXT_ULP_SYM_ECV_VTAG_TYPE_ADD_2_ENCAP_PRI
542 };