56ebee9323c9a090eb59593717e0d83a87a27db2
[dpdk.git] / drivers / net / bnxt / tf_ulp / ulp_template_db_wh_plus_act.c
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2014-2021 Broadcom
3  * All rights reserved.
4  */
5
6 /* date: Tue Dec  1 17:07:12 2020 */
7
8 #include "ulp_template_db_enum.h"
9 #include "ulp_template_db_field.h"
10 #include "ulp_template_struct.h"
11 #include "ulp_template_db_tbl.h"
12
13 /* Mapper templates for header act list */
14 struct bnxt_ulp_mapper_tmpl_info ulp_wh_plus_act_tmpl_list[] = {
15         /* act_tid: 1, wh_plus, ingress */
16         [1] = {
17         .device_name = BNXT_ULP_DEVICE_ID_WH_PLUS,
18         .num_tbls = 4,
19         .start_tbl_idx = 0,
20         .reject_info = {
21                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_FALSE,
22                 .cond_start_idx = 0,
23                 .cond_nums = 0 }
24         }
25 };
26
27 struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_act_tbl_list[] = {
28         { /* act_tid: 1, wh_plus, table: int_flow_counter_tbl.0 */
29         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
30         .resource_type = TF_TBL_TYPE_ACT_STATS_64,
31         .resource_sub_type =
32                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_INT_COUNT,
33         .direction = TF_DIR_RX,
34         .execute_info = {
35                 .cond_goto = 1,
36                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_OR,
37                 .cond_start_idx = 0,
38                 .cond_nums = 1 },
39         .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_REGFILE,
40         .tbl_operand = BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0,
41         .accept_opcode = BNXT_ULP_ACCEPT_OPC_ALWAYS,
42         .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH,
43         .mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
44         .result_start_idx = 0,
45         .result_bit_size = 64,
46         .result_num_fields = 1,
47         .encap_num_fields = 0
48         },
49         { /* act_tid: 1, wh_plus, table: int_vtag_encap_record.0 */
50         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
51         .resource_type = TF_TBL_TYPE_ACT_ENCAP_16B,
52         .resource_sub_type =
53                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_NORMAL,
54         .direction = TF_DIR_RX,
55         .mem_type_opcode = BNXT_ULP_MEM_TYPE_OPC_EXECUTE_IF_INT,
56         .execute_info = {
57                 .cond_goto = 1,
58                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_OR,
59                 .cond_start_idx = 1,
60                 .cond_nums = 1 },
61         .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
62         .tbl_operand = BNXT_ULP_RF_IDX_ENCAP_PTR_0,
63         .accept_opcode = BNXT_ULP_ACCEPT_OPC_ALWAYS,
64         .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH,
65         .mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
66         .result_start_idx = 1,
67         .result_bit_size = 0,
68         .result_num_fields = 0,
69         .encap_num_fields = 12
70         },
71         { /* act_tid: 1, wh_plus, table: int_full_act_record.0 */
72         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
73         .resource_type = TF_TBL_TYPE_FULL_ACT_RECORD,
74         .resource_sub_type =
75                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_NORMAL,
76         .direction = TF_DIR_RX,
77         .mem_type_opcode = BNXT_ULP_MEM_TYPE_OPC_EXECUTE_IF_INT,
78         .execute_info = {
79                 .cond_goto = 1,
80                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_TRUE,
81                 .cond_start_idx = 2,
82                 .cond_nums = 0 },
83         .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
84         .tbl_operand = BNXT_ULP_RF_IDX_MAIN_ACTION_PTR,
85         .accept_opcode = BNXT_ULP_ACCEPT_OPC_ALWAYS,
86         .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH,
87         .mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
88         .result_start_idx = 13,
89         .result_bit_size = 128,
90         .result_num_fields = 26,
91         .encap_num_fields = 0
92         },
93         { /* act_tid: 1, wh_plus, table: ext_full_act_record.0 */
94         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
95         .resource_type = TF_TBL_TYPE_EXT,
96         .resource_sub_type =
97                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_NORMAL,
98         .direction = TF_DIR_RX,
99         .mem_type_opcode = BNXT_ULP_MEM_TYPE_OPC_EXECUTE_IF_EXT,
100         .execute_info = {
101                 .cond_goto = 0,
102                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_TRUE,
103                 .cond_start_idx = 2,
104                 .cond_nums = 0 },
105         .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
106         .tbl_operand = BNXT_ULP_RF_IDX_MAIN_ACTION_PTR,
107         .accept_opcode = BNXT_ULP_ACCEPT_OPC_ALWAYS,
108         .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH,
109         .mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
110         .result_start_idx = 39,
111         .result_bit_size = 128,
112         .result_num_fields = 26,
113         .encap_num_fields = 0
114         }
115 };
116
117 struct bnxt_ulp_mapper_cond_info ulp_wh_plus_act_cond_list[] = {
118         {
119         .cond_opcode = BNXT_ULP_COND_OPC_ACT_BIT_IS_SET,
120         .cond_operand = BNXT_ULP_ACT_BIT_COUNT
121         },
122         {
123         .cond_opcode = BNXT_ULP_COND_OPC_ACT_BIT_IS_SET,
124         .cond_operand = BNXT_ULP_ACT_BIT_PUSH_VLAN
125         }
126 };
127
128 struct bnxt_ulp_mapper_field_info ulp_wh_plus_act_result_field_list[] = {
129         /* act_tid: 1, wh_plus, table: int_flow_counter_tbl.0 */
130         {
131         .description = "count",
132         .field_bit_size = 64,
133         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
134         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
135         },
136         /* act_tid: 1, wh_plus, table: int_vtag_encap_record.0 */
137         {
138         .description = "ecv_tun_type",
139         .field_bit_size = 3,
140         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
141         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
142         },
143         {
144         .description = "ecv_l4_type",
145         .field_bit_size = 3,
146         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
147         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
148         },
149         {
150         .description = "ecv_l3_type",
151         .field_bit_size = 3,
152         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
153         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
154         },
155         {
156         .description = "ecv_l2_en",
157         .field_bit_size = 1,
158         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
159         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
160         },
161         {
162         .description = "ecv_vtag_type",
163         .field_bit_size = 4,
164         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
165         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
166         .field_opr1 = {
167                 ULP_WP_SYM_ECV_VTAG_TYPE_ADD_1_ENCAP_PRI}
168         },
169         {
170         .description = "ecv_custom_en",
171         .field_bit_size = 1,
172         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
173         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
174         },
175         {
176         .description = "ecv_valid",
177         .field_bit_size = 1,
178         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
179         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
180         },
181         {
182         .description = "vtag_tpid",
183         .field_bit_size = 16,
184         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
185         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
186         .field_opr1 = {
187                 (BNXT_ULP_ACT_PROP_IDX_PUSH_VLAN >> 8) & 0xff,
188                 BNXT_ULP_ACT_PROP_IDX_PUSH_VLAN & 0xff}
189         },
190         {
191         .description = "vtag_vid",
192         .field_bit_size = 12,
193         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
194         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
195         .field_opr1 = {
196                 (BNXT_ULP_ACT_PROP_IDX_SET_VLAN_VID >> 8) & 0xff,
197                 BNXT_ULP_ACT_PROP_IDX_SET_VLAN_VID & 0xff}
198         },
199         {
200         .description = "vtag_de",
201         .field_bit_size = 1,
202         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
203         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
204         },
205         {
206         .description = "vtag_pcp",
207         .field_bit_size = 3,
208         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
209         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
210         .field_opr1 = {
211                 (BNXT_ULP_ACT_PROP_IDX_SET_VLAN_PCP >> 8) & 0xff,
212                 BNXT_ULP_ACT_PROP_IDX_SET_VLAN_PCP & 0xff}
213         },
214         {
215         .description = "spare",
216         .field_bit_size = 80,
217         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
218         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
219         },
220         /* act_tid: 1, wh_plus, table: int_full_act_record.0 */
221         {
222         .description = "flow_cntr_ptr",
223         .field_bit_size = 14,
224         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
225         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
226         .field_opr1 = {
227                 (BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 >> 8) & 0xff,
228                 BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 & 0xff}
229         },
230         {
231         .description = "age_enable",
232         .field_bit_size = 1,
233         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
234         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
235         },
236         {
237         .description = "agg_cntr_en",
238         .field_bit_size = 1,
239         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
240         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
241         },
242         {
243         .description = "rate_cntr_en",
244         .field_bit_size = 1,
245         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
246         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
247         },
248         {
249         .description = "flow_cntr_en",
250         .field_bit_size = 1,
251         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
252         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
253         .field_opr1 = {
254                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 56) & 0xff,
255                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 48) & 0xff,
256                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 40) & 0xff,
257                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 32) & 0xff,
258                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 24) & 0xff,
259                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 16) & 0xff,
260                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 8) & 0xff,
261                 (uint64_t)BNXT_ULP_ACT_BIT_COUNT & 0xff}
262         },
263         {
264         .description = "tcpflags_key",
265         .field_bit_size = 8,
266         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
267         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
268         },
269         {
270         .description = "tcpflags_mir",
271         .field_bit_size = 1,
272         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
273         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
274         },
275         {
276         .description = "tcpflags_match",
277         .field_bit_size = 1,
278         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
279         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
280         },
281         {
282         .description = "encap_ptr",
283         .field_bit_size = 11,
284         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
285         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
286         .field_opr1 = {
287                 (BNXT_ULP_RF_IDX_ENCAP_PTR_0 >> 8) & 0xff,
288                 BNXT_ULP_RF_IDX_ENCAP_PTR_0 & 0xff}
289         },
290         {
291         .description = "dst_ip_ptr",
292         .field_bit_size = 10,
293         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
294         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
295         .field_opr1 = {
296                 (BNXT_ULP_RF_IDX_MODIFY_IPV4_DST_PTR_0 >> 8) & 0xff,
297                 BNXT_ULP_RF_IDX_MODIFY_IPV4_DST_PTR_0 & 0xff}
298         },
299         {
300         .description = "tcp_dst_port",
301         .field_bit_size = 16,
302         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_ACT_BIT,
303         .field_cond_opr = {
304                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 56) & 0xff,
305                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 48) & 0xff,
306                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 40) & 0xff,
307                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 32) & 0xff,
308                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 24) & 0xff,
309                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 16) & 0xff,
310                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 8) & 0xff,
311                 (uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST & 0xff},
312         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
313         .field_opr1 = {
314                 (BNXT_ULP_ACT_PROP_IDX_SET_TP_DST >> 8) & 0xff,
315                 BNXT_ULP_ACT_PROP_IDX_SET_TP_DST & 0xff},
316         .field_src2 = BNXT_ULP_FIELD_SRC_CONST
317         },
318         {
319         .description = "src_ip_ptr",
320         .field_bit_size = 10,
321         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
322         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
323         .field_opr1 = {
324                 (BNXT_ULP_RF_IDX_MODIFY_IPV4_SRC_PTR_0 >> 8) & 0xff,
325                 BNXT_ULP_RF_IDX_MODIFY_IPV4_SRC_PTR_0 & 0xff}
326         },
327         {
328         .description = "tcp_src_port",
329         .field_bit_size = 16,
330         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_ACT_BIT,
331         .field_cond_opr = {
332                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 56) & 0xff,
333                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 48) & 0xff,
334                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 40) & 0xff,
335                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 32) & 0xff,
336                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 24) & 0xff,
337                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 16) & 0xff,
338                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 8) & 0xff,
339                 (uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC & 0xff},
340         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
341         .field_opr1 = {
342                 (BNXT_ULP_ACT_PROP_IDX_SET_TP_SRC >> 8) & 0xff,
343                 BNXT_ULP_ACT_PROP_IDX_SET_TP_SRC & 0xff},
344         .field_src2 = BNXT_ULP_FIELD_SRC_CONST
345         },
346         {
347         .description = "meter_id",
348         .field_bit_size = 10,
349         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
350         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
351         },
352         {
353         .description = "l3_rdir",
354         .field_bit_size = 1,
355         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
356         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
357         },
358         {
359         .description = "tl3_rdir",
360         .field_bit_size = 1,
361         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
362         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
363         },
364         {
365         .description = "l3_ttl_dec",
366         .field_bit_size = 1,
367         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
368         .field_src1 = BNXT_ULP_FIELD_SRC_CF,
369         .field_opr1 = {
370                 (BNXT_ULP_CF_IDX_ACT_DEC_TTL >> 8) & 0xff,
371                 BNXT_ULP_CF_IDX_ACT_DEC_TTL & 0xff}
372         },
373         {
374         .description = "tl3_ttl_dec",
375         .field_bit_size = 1,
376         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
377         .field_src1 = BNXT_ULP_FIELD_SRC_CF,
378         .field_opr1 = {
379                 (BNXT_ULP_CF_IDX_ACT_T_DEC_TTL >> 8) & 0xff,
380                 BNXT_ULP_CF_IDX_ACT_T_DEC_TTL & 0xff}
381         },
382         {
383         .description = "decap_func",
384         .field_bit_size = 4,
385         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_ACT_BIT,
386         .field_cond_opr = {
387                 ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 56) & 0xff,
388                 ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 48) & 0xff,
389                 ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 40) & 0xff,
390                 ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 32) & 0xff,
391                 ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 24) & 0xff,
392                 ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 16) & 0xff,
393                 ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 8) & 0xff,
394                 (uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP & 0xff},
395         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
396         .field_opr1 = {
397                 ULP_WP_SYM_DECAP_FUNC_THRU_TUN},
398         .field_src2 = BNXT_ULP_FIELD_SRC_CONST,
399         .field_opr2 = {
400                 ULP_WP_SYM_DECAP_FUNC_NONE}
401         },
402         {
403         .description = "vnic_or_vport",
404         .field_bit_size = 12,
405         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
406         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
407         .field_opr1 = {
408                 (BNXT_ULP_ACT_PROP_IDX_VNIC >> 8) & 0xff,
409                 BNXT_ULP_ACT_PROP_IDX_VNIC & 0xff}
410         },
411         {
412         .description = "pop_vlan",
413         .field_bit_size = 1,
414         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
415         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
416         .field_opr1 = {
417                 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 56) & 0xff,
418                 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 48) & 0xff,
419                 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 40) & 0xff,
420                 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 32) & 0xff,
421                 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 24) & 0xff,
422                 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 16) & 0xff,
423                 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 8) & 0xff,
424                 (uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN & 0xff}
425         },
426         {
427         .description = "meter",
428         .field_bit_size = 1,
429         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
430         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
431         },
432         {
433         .description = "mirror",
434         .field_bit_size = 2,
435         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
436         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
437         },
438         {
439         .description = "drop",
440         .field_bit_size = 1,
441         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
442         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
443         .field_opr1 = {
444                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 56) & 0xff,
445                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 48) & 0xff,
446                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 40) & 0xff,
447                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 32) & 0xff,
448                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 24) & 0xff,
449                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 16) & 0xff,
450                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 8) & 0xff,
451                 (uint64_t)BNXT_ULP_ACT_BIT_DROP & 0xff}
452         },
453         {
454         .description = "hit",
455         .field_bit_size = 1,
456         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
457         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
458         },
459         {
460         .description = "type",
461         .field_bit_size = 1,
462         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
463         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
464         },
465         /* act_tid: 1, wh_plus, table: ext_full_act_record.0 */
466         {
467         .description = "flow_cntr_ptr",
468         .field_bit_size = 14,
469         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
470         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
471         .field_opr1 = {
472                 (BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 >> 8) & 0xff,
473                 BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 & 0xff}
474         },
475         {
476         .description = "age_enable",
477         .field_bit_size = 1,
478         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
479         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
480         },
481         {
482         .description = "agg_cntr_en",
483         .field_bit_size = 1,
484         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
485         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
486         },
487         {
488         .description = "rate_cntr_en",
489         .field_bit_size = 1,
490         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
491         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
492         },
493         {
494         .description = "flow_cntr_en",
495         .field_bit_size = 1,
496         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
497         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
498         .field_opr1 = {
499                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 56) & 0xff,
500                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 48) & 0xff,
501                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 40) & 0xff,
502                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 32) & 0xff,
503                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 24) & 0xff,
504                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 16) & 0xff,
505                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 8) & 0xff,
506                 (uint64_t)BNXT_ULP_ACT_BIT_COUNT & 0xff}
507         },
508         {
509         .description = "flow_cntr_ext",
510         .field_bit_size = 1,
511         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
512         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
513         },
514         {
515         .description = "tcpflags_key",
516         .field_bit_size = 8,
517         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
518         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
519         },
520         {
521         .description = "tcpflags_mir",
522         .field_bit_size = 1,
523         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
524         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
525         },
526         {
527         .description = "tcpflags_match",
528         .field_bit_size = 1,
529         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
530         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
531         },
532         {
533         .description = "encap_ptr",
534         .field_bit_size = 11,
535         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
536         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
537         },
538         {
539         .description = "encap_rec_int",
540         .field_bit_size = 1,
541         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
542         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
543         },
544         {
545         .description = "dst_ip_ptr",
546         .field_bit_size = 10,
547         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
548         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
549         .field_opr1 = {
550                 (BNXT_ULP_RF_IDX_MODIFY_IPV4_DST_PTR_0 >> 8) & 0xff,
551                 BNXT_ULP_RF_IDX_MODIFY_IPV4_DST_PTR_0 & 0xff}
552         },
553         {
554         .description = "tcp_dst_port",
555         .field_bit_size = 16,
556         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_ACT_BIT,
557         .field_cond_opr = {
558                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 56) & 0xff,
559                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 48) & 0xff,
560                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 40) & 0xff,
561                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 32) & 0xff,
562                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 24) & 0xff,
563                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 16) & 0xff,
564                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 8) & 0xff,
565                 (uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST & 0xff},
566         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
567         .field_opr1 = {
568                 (BNXT_ULP_ACT_PROP_IDX_SET_TP_DST >> 8) & 0xff,
569                 BNXT_ULP_ACT_PROP_IDX_SET_TP_DST & 0xff},
570         .field_src2 = BNXT_ULP_FIELD_SRC_CONST
571         },
572         {
573         .description = "src_ip_ptr",
574         .field_bit_size = 10,
575         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
576         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
577         .field_opr1 = {
578                 (BNXT_ULP_RF_IDX_MODIFY_IPV4_SRC_PTR_0 >> 8) & 0xff,
579                 BNXT_ULP_RF_IDX_MODIFY_IPV4_SRC_PTR_0 & 0xff}
580         },
581         {
582         .description = "tcp_src_port",
583         .field_bit_size = 16,
584         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_ACT_BIT,
585         .field_cond_opr = {
586                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 56) & 0xff,
587                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 48) & 0xff,
588                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 40) & 0xff,
589                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 32) & 0xff,
590                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 24) & 0xff,
591                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 16) & 0xff,
592                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 8) & 0xff,
593                 (uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC & 0xff},
594         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
595         .field_opr1 = {
596                 (BNXT_ULP_ACT_PROP_IDX_SET_TP_SRC >> 8) & 0xff,
597                 BNXT_ULP_ACT_PROP_IDX_SET_TP_SRC & 0xff},
598         .field_src2 = BNXT_ULP_FIELD_SRC_CONST
599         },
600         {
601         .description = "meter_id",
602         .field_bit_size = 10,
603         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
604         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
605         },
606         {
607         .description = "l3_rdir",
608         .field_bit_size = 1,
609         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
610         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
611         },
612         {
613         .description = "tl3_rdir",
614         .field_bit_size = 1,
615         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
616         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
617         },
618         {
619         .description = "l3_ttl_dec",
620         .field_bit_size = 1,
621         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
622         .field_src1 = BNXT_ULP_FIELD_SRC_CF,
623         .field_opr1 = {
624                 (BNXT_ULP_CF_IDX_ACT_DEC_TTL >> 8) & 0xff,
625                 BNXT_ULP_CF_IDX_ACT_DEC_TTL & 0xff}
626         },
627         {
628         .description = "tl3_ttl_dec",
629         .field_bit_size = 1,
630         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
631         .field_src1 = BNXT_ULP_FIELD_SRC_CF,
632         .field_opr1 = {
633                 (BNXT_ULP_CF_IDX_ACT_T_DEC_TTL >> 8) & 0xff,
634                 BNXT_ULP_CF_IDX_ACT_T_DEC_TTL & 0xff}
635         },
636         {
637         .description = "decap_func",
638         .field_bit_size = 4,
639         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_ACT_BIT,
640         .field_cond_opr = {
641                 ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 56) & 0xff,
642                 ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 48) & 0xff,
643                 ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 40) & 0xff,
644                 ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 32) & 0xff,
645                 ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 24) & 0xff,
646                 ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 16) & 0xff,
647                 ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 8) & 0xff,
648                 (uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP & 0xff},
649         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
650         .field_opr1 = {
651                 ULP_WP_SYM_DECAP_FUNC_THRU_TUN},
652         .field_src2 = BNXT_ULP_FIELD_SRC_CONST,
653         .field_opr2 = {
654                 ULP_WP_SYM_DECAP_FUNC_NONE}
655         },
656         {
657         .description = "vnic_or_vport",
658         .field_bit_size = 12,
659         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
660         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
661         .field_opr1 = {
662                 (BNXT_ULP_ACT_PROP_IDX_VNIC >> 8) & 0xff,
663                 BNXT_ULP_ACT_PROP_IDX_VNIC & 0xff}
664         },
665         {
666         .description = "pop_vlan",
667         .field_bit_size = 1,
668         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
669         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
670         .field_opr1 = {
671                 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 56) & 0xff,
672                 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 48) & 0xff,
673                 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 40) & 0xff,
674                 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 32) & 0xff,
675                 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 24) & 0xff,
676                 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 16) & 0xff,
677                 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 8) & 0xff,
678                 (uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN & 0xff}
679         },
680         {
681         .description = "meter",
682         .field_bit_size = 1,
683         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
684         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
685         },
686         {
687         .description = "mirror",
688         .field_bit_size = 2,
689         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
690         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
691         },
692         {
693         .description = "drop",
694         .field_bit_size = 1,
695         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
696         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
697         .field_opr1 = {
698                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 56) & 0xff,
699                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 48) & 0xff,
700                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 40) & 0xff,
701                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 32) & 0xff,
702                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 24) & 0xff,
703                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 16) & 0xff,
704                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 8) & 0xff,
705                 (uint64_t)BNXT_ULP_ACT_BIT_DROP & 0xff}
706         }
707 };