net/bnxt: support VLAN push and pop actions
[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_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
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_SUPPORTED,
187                 .proto_act_func          = ulp_rte_of_pop_vlan_act_handler
188         },
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
192         },
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
196         },
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
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                 .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
330         }
331 };
332
333 struct bnxt_ulp_glb_resource_info ulp_glb_resource_tbl[] = {
334         [0] = {
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
339         },
340         [1] = {
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
345         },
346         [2] = {
347                 .resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
348                 .resource_type           = TF_IDENT_TYPE_L2_CTXT,
349                 .glb_regfile_index = BNXT_ULP_GLB_REGFILE_INDEX_GLB_L2_CNTXT_ID,
350                 .direction               = TF_DIR_RX
351         },
352         [3] = {
353                 .resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
354                 .resource_type           = TF_IDENT_TYPE_L2_CTXT,
355                 .glb_regfile_index = BNXT_ULP_GLB_REGFILE_INDEX_GLB_L2_CNTXT_ID,
356                 .direction               = TF_DIR_TX
357         },
358         [4] = {
359                 .resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
360                 .resource_type           = TF_TBL_TYPE_FULL_ACT_RECORD,
361                 .glb_regfile_index = BNXT_ULP_GLB_REGFILE_INDEX_GLB_LB_AREC_PTR,
362                 .direction               = TF_DIR_TX
363         }
364 };
365
366 struct bnxt_ulp_rte_hdr_info ulp_hdr_info[] = {
367         [RTE_FLOW_ITEM_TYPE_END] = {
368                 .hdr_type                = BNXT_ULP_HDR_TYPE_END,
369                 .proto_hdr_func          = NULL
370         },
371         [RTE_FLOW_ITEM_TYPE_VOID] = {
372                 .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
373                 .proto_hdr_func          = ulp_rte_void_hdr_handler
374         },
375         [RTE_FLOW_ITEM_TYPE_INVERT] = {
376                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
377                 .proto_hdr_func          = NULL
378         },
379         [RTE_FLOW_ITEM_TYPE_ANY] = {
380                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
381                 .proto_hdr_func          = NULL
382         },
383         [RTE_FLOW_ITEM_TYPE_PF] = {
384                 .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
385                 .proto_hdr_func          = ulp_rte_pf_hdr_handler
386         },
387         [RTE_FLOW_ITEM_TYPE_VF] = {
388                 .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
389                 .proto_hdr_func          = ulp_rte_vf_hdr_handler
390         },
391         [RTE_FLOW_ITEM_TYPE_PHY_PORT] = {
392                 .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
393                 .proto_hdr_func          = ulp_rte_phy_port_hdr_handler
394         },
395         [RTE_FLOW_ITEM_TYPE_PORT_ID] = {
396                 .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
397                 .proto_hdr_func          = ulp_rte_port_id_hdr_handler
398         },
399         [RTE_FLOW_ITEM_TYPE_RAW] = {
400                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
401                 .proto_hdr_func          = NULL
402         },
403         [RTE_FLOW_ITEM_TYPE_ETH] = {
404                 .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
405                 .proto_hdr_func          = ulp_rte_eth_hdr_handler
406         },
407         [RTE_FLOW_ITEM_TYPE_VLAN] = {
408                 .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
409                 .proto_hdr_func          = ulp_rte_vlan_hdr_handler
410         },
411         [RTE_FLOW_ITEM_TYPE_IPV4] = {
412                 .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
413                 .proto_hdr_func          = ulp_rte_ipv4_hdr_handler
414         },
415         [RTE_FLOW_ITEM_TYPE_IPV6] = {
416                 .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
417                 .proto_hdr_func          = ulp_rte_ipv6_hdr_handler
418         },
419         [RTE_FLOW_ITEM_TYPE_ICMP] = {
420                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
421                 .proto_hdr_func          = NULL
422         },
423         [RTE_FLOW_ITEM_TYPE_UDP] = {
424                 .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
425                 .proto_hdr_func          = ulp_rte_udp_hdr_handler
426         },
427         [RTE_FLOW_ITEM_TYPE_TCP] = {
428                 .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
429                 .proto_hdr_func          = ulp_rte_tcp_hdr_handler
430         },
431         [RTE_FLOW_ITEM_TYPE_SCTP] = {
432                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
433                 .proto_hdr_func          = NULL
434         },
435         [RTE_FLOW_ITEM_TYPE_VXLAN] = {
436                 .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
437                 .proto_hdr_func          = ulp_rte_vxlan_hdr_handler
438         },
439         [RTE_FLOW_ITEM_TYPE_E_TAG] = {
440                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
441                 .proto_hdr_func          = NULL
442         },
443         [RTE_FLOW_ITEM_TYPE_NVGRE] = {
444                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
445                 .proto_hdr_func          = NULL
446         },
447         [RTE_FLOW_ITEM_TYPE_MPLS] = {
448                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
449                 .proto_hdr_func          = NULL
450         },
451         [RTE_FLOW_ITEM_TYPE_GRE] = {
452                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
453                 .proto_hdr_func          = NULL
454         },
455         [RTE_FLOW_ITEM_TYPE_FUZZY] = {
456                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
457                 .proto_hdr_func          = NULL
458         },
459         [RTE_FLOW_ITEM_TYPE_GTP] = {
460                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
461                 .proto_hdr_func          = NULL
462         },
463         [RTE_FLOW_ITEM_TYPE_GTPC] = {
464                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
465                 .proto_hdr_func          = NULL
466         },
467         [RTE_FLOW_ITEM_TYPE_GTPU] = {
468                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
469                 .proto_hdr_func          = NULL
470         },
471         [RTE_FLOW_ITEM_TYPE_ESP] = {
472                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
473                 .proto_hdr_func          = NULL
474         },
475         [RTE_FLOW_ITEM_TYPE_GENEVE] = {
476                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
477                 .proto_hdr_func          = NULL
478         },
479         [RTE_FLOW_ITEM_TYPE_VXLAN_GPE] = {
480                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
481                 .proto_hdr_func          = NULL
482         },
483         [RTE_FLOW_ITEM_TYPE_ARP_ETH_IPV4] = {
484                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
485                 .proto_hdr_func          = NULL
486         },
487         [RTE_FLOW_ITEM_TYPE_IPV6_EXT] = {
488                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
489                 .proto_hdr_func          = NULL
490         },
491         [RTE_FLOW_ITEM_TYPE_ICMP6] = {
492                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
493                 .proto_hdr_func          = NULL
494         },
495         [RTE_FLOW_ITEM_TYPE_ICMP6_ND_NS] = {
496                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
497                 .proto_hdr_func          = NULL
498         },
499         [RTE_FLOW_ITEM_TYPE_ICMP6_ND_NA] = {
500                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
501                 .proto_hdr_func          = NULL
502         },
503         [RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT] = {
504                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
505                 .proto_hdr_func          = NULL
506         },
507         [RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT_SLA_ETH] = {
508                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
509                 .proto_hdr_func          = NULL
510         },
511         [RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT_TLA_ETH] = {
512                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
513                 .proto_hdr_func          = NULL
514         },
515         [RTE_FLOW_ITEM_TYPE_MARK] = {
516                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
517                 .proto_hdr_func          = NULL
518         },
519         [RTE_FLOW_ITEM_TYPE_META] = {
520                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
521                 .proto_hdr_func          = NULL
522         },
523         [RTE_FLOW_ITEM_TYPE_GRE_KEY] = {
524                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
525                 .proto_hdr_func          = NULL
526         },
527         [RTE_FLOW_ITEM_TYPE_GTP_PSC] = {
528                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
529                 .proto_hdr_func          = NULL
530         },
531         [RTE_FLOW_ITEM_TYPE_PPPOES] = {
532                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
533                 .proto_hdr_func          = NULL
534         },
535         [RTE_FLOW_ITEM_TYPE_PPPOED] = {
536                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
537                 .proto_hdr_func          = NULL
538         },
539         [RTE_FLOW_ITEM_TYPE_PPPOE_PROTO_ID] = {
540                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
541                 .proto_hdr_func          = NULL
542         },
543         [RTE_FLOW_ITEM_TYPE_NSH] = {
544                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
545                 .proto_hdr_func          = NULL
546         },
547         [RTE_FLOW_ITEM_TYPE_IGMP] = {
548                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
549                 .proto_hdr_func          = NULL
550         },
551         [RTE_FLOW_ITEM_TYPE_AH] = {
552                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
553                 .proto_hdr_func          = NULL
554         },
555         [RTE_FLOW_ITEM_TYPE_HIGIG2] = {
556                 .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
557                 .proto_hdr_func          = NULL
558         }
559 };
560
561 uint32_t bnxt_ulp_encap_vtag_map[] = {
562         BNXT_ULP_SYM_ECV_VTAG_TYPE_NOP,
563         BNXT_ULP_SYM_ECV_VTAG_TYPE_ADD_1_ENCAP_PRI,
564         BNXT_ULP_SYM_ECV_VTAG_TYPE_ADD_2_ENCAP_PRI
565 };
566
567 uint32_t ulp_glb_template_tbl[] = {
568         BNXT_ULP_DF_TPL_LOOPBACK_ACTION_REC
569 };