net/bnxt: refactor flow parser in ULP
[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 Jan 26 15:51:49 2021 */
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 = 5,
19         .start_tbl_idx = 0,
20         .reject_info = {
21                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_OR,
22                 .cond_start_idx = 0,
23                 .cond_nums = 9 }
24         },
25         /* act_tid: 2, wh_plus, ingress */
26         [2] = {
27         .device_name = BNXT_ULP_DEVICE_ID_WH_PLUS,
28         .num_tbls = 7,
29         .start_tbl_idx = 5,
30         .reject_info = {
31                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_FALSE,
32                 .cond_start_idx = 14,
33                 .cond_nums = 0 }
34         },
35         /* act_tid: 3, wh_plus, ingress */
36         [3] = {
37         .device_name = BNXT_ULP_DEVICE_ID_WH_PLUS,
38         .num_tbls = 6,
39         .start_tbl_idx = 12,
40         .reject_info = {
41                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_FALSE,
42                 .cond_start_idx = 15,
43                 .cond_nums = 0 }
44         },
45         /* act_tid: 4, wh_plus, egress */
46         [4] = {
47         .device_name = BNXT_ULP_DEVICE_ID_WH_PLUS,
48         .num_tbls = 5,
49         .start_tbl_idx = 18,
50         .reject_info = {
51                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_FALSE,
52                 .cond_start_idx = 20,
53                 .cond_nums = 0 }
54         },
55         /* act_tid: 5, wh_plus, egress */
56         [5] = {
57         .device_name = BNXT_ULP_DEVICE_ID_WH_PLUS,
58         .num_tbls = 6,
59         .start_tbl_idx = 23,
60         .reject_info = {
61                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_FALSE,
62                 .cond_start_idx = 28,
63                 .cond_nums = 0 }
64         },
65         /* act_tid: 6, wh_plus, egress */
66         [6] = {
67         .device_name = BNXT_ULP_DEVICE_ID_WH_PLUS,
68         .num_tbls = 6,
69         .start_tbl_idx = 29,
70         .reject_info = {
71                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_FALSE,
72                 .cond_start_idx = 33,
73                 .cond_nums = 0 }
74         }
75 };
76
77 struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_act_tbl_list[] = {
78         { /* act_tid: 1, wh_plus, table: shared_mirror_record.rd */
79         .resource_func = BNXT_ULP_RESOURCE_FUNC_GENERIC_TABLE,
80         .resource_type = TF_TBL_TYPE_MIRROR_CONFIG,
81         .resource_sub_type =
82                 BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_SHARED_MIRROR,
83         .direction = TF_DIR_RX,
84         .execute_info = {
85                 .cond_true_goto  = 1,
86                 .cond_false_goto = 1,
87                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
88                 .cond_start_idx = 9,
89                 .cond_nums = 1 },
90         .tbl_opcode = BNXT_ULP_GENERIC_TBL_OPC_READ,
91         .gen_tbl_lkup_type = BNXT_ULP_GENERIC_TBL_LKUP_TYPE_INDEX,
92         .fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
93         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
94         .key_start_idx = 0,
95         .blob_key_bit_size = 1,
96         .key_bit_size = 1,
97         .key_num_fields = 1,
98         .ident_start_idx = 0,
99         .ident_nums = 1
100         },
101         { /* act_tid: 1, wh_plus, table: int_flow_counter_tbl.0 */
102         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
103         .resource_type = TF_TBL_TYPE_ACT_STATS_64,
104         .resource_sub_type =
105                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_INT_COUNT,
106         .direction = TF_DIR_RX,
107         .execute_info = {
108                 .cond_true_goto  = 1,
109                 .cond_false_goto = 1,
110                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
111                 .cond_start_idx = 10,
112                 .cond_nums = 1 },
113         .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_REGFILE,
114         .tbl_operand = BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0,
115         .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
116         .mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
117         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
118         .result_start_idx = 0,
119         .result_bit_size = 64,
120         .result_num_fields = 1
121         },
122         { /* act_tid: 1, wh_plus, table: int_vtag_encap_record.0 */
123         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
124         .resource_type = TF_TBL_TYPE_ACT_ENCAP_16B,
125         .resource_sub_type =
126                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_NORMAL,
127         .direction = TF_DIR_RX,
128         .execute_info = {
129                 .cond_true_goto  = 1,
130                 .cond_false_goto = 1,
131                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
132                 .cond_start_idx = 11,
133                 .cond_nums = 1 },
134         .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
135         .tbl_operand = BNXT_ULP_RF_IDX_ENCAP_PTR_0,
136         .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
137         .mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
138         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
139         .result_start_idx = 1,
140         .result_bit_size = 0,
141         .result_num_fields = 0,
142         .encap_num_fields = 12
143         },
144         { /* act_tid: 1, wh_plus, table: int_full_act_record.0 */
145         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
146         .resource_type = TF_TBL_TYPE_FULL_ACT_RECORD,
147         .resource_sub_type =
148                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_NORMAL,
149         .direction = TF_DIR_RX,
150         .execute_info = {
151                 .cond_true_goto  = 1,
152                 .cond_false_goto = 1,
153                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
154                 .cond_start_idx = 12,
155                 .cond_nums = 1 },
156         .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
157         .tbl_operand = BNXT_ULP_RF_IDX_MAIN_ACTION_PTR,
158         .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
159         .mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
160         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
161         .result_start_idx = 13,
162         .result_bit_size = 128,
163         .result_num_fields = 26,
164         .encap_num_fields = 0
165         },
166         { /* act_tid: 1, wh_plus, table: ext_full_act_record.0 */
167         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
168         .resource_type = TF_TBL_TYPE_EXT,
169         .resource_sub_type =
170                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_NORMAL,
171         .direction = TF_DIR_RX,
172         .execute_info = {
173                 .cond_true_goto  = 0,
174                 .cond_false_goto = 0,
175                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
176                 .cond_start_idx = 13,
177                 .cond_nums = 1 },
178         .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
179         .tbl_operand = BNXT_ULP_RF_IDX_MAIN_ACTION_PTR,
180         .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
181         .mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
182         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
183         .result_start_idx = 39,
184         .result_bit_size = 128,
185         .result_num_fields = 26,
186         .encap_num_fields = 12
187         },
188         { /* act_tid: 2, wh_plus, table: control.0 */
189         .resource_func = BNXT_ULP_RESOURCE_FUNC_CTRL_TABLE,
190         .direction = TF_DIR_RX,
191         .execute_info = {
192                 .cond_true_goto  = 1,
193                 .cond_false_goto = 1,
194                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_TRUE,
195                 .cond_start_idx = 14,
196                 .cond_nums = 0 },
197         .fdb_opcode = BNXT_ULP_FDB_OPC_ALLOC_RID_REGFILE,
198         .fdb_operand = BNXT_ULP_RF_IDX_RID,
199         .byte_order = BNXT_ULP_BYTE_ORDER_LE
200         },
201         { /* act_tid: 2, wh_plus, table: mirror_tbl.alloc */
202         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
203         .resource_type = TF_TBL_TYPE_MIRROR_CONFIG,
204         .resource_sub_type =
205                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_NORMAL,
206         .direction = TF_DIR_RX,
207         .execute_info = {
208                 .cond_true_goto  = 1,
209                 .cond_false_goto = 1,
210                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_TRUE,
211                 .cond_start_idx = 14,
212                 .cond_nums = 0 },
213         .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_REGFILE,
214         .tbl_operand = BNXT_ULP_RF_IDX_MIRROR_PTR_0,
215         .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_RID_REGFILE,
216         .fdb_operand = BNXT_ULP_RF_IDX_RID,
217         .mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
218         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
219         .result_start_idx = 77,
220         .result_bit_size = 32,
221         .result_num_fields = 6
222         },
223         { /* act_tid: 2, wh_plus, table: int_flow_counter_tbl.0 */
224         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
225         .resource_type = TF_TBL_TYPE_ACT_STATS_64,
226         .resource_sub_type =
227                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_INT_COUNT,
228         .direction = TF_DIR_RX,
229         .execute_info = {
230                 .cond_true_goto  = 1,
231                 .cond_false_goto = 1,
232                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
233                 .cond_start_idx = 14,
234                 .cond_nums = 1 },
235         .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_REGFILE,
236         .tbl_operand = BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0,
237         .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_RID_REGFILE,
238         .fdb_operand = BNXT_ULP_RF_IDX_RID,
239         .mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
240         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
241         .result_start_idx = 83,
242         .result_bit_size = 64,
243         .result_num_fields = 1
244         },
245         { /* act_tid: 2, wh_plus, table: int_full_act_record.0 */
246         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
247         .resource_type = TF_TBL_TYPE_FULL_ACT_RECORD,
248         .resource_sub_type =
249                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_NORMAL,
250         .direction = TF_DIR_RX,
251         .execute_info = {
252                 .cond_true_goto  = 1,
253                 .cond_false_goto = 1,
254                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_TRUE,
255                 .cond_start_idx = 15,
256                 .cond_nums = 0 },
257         .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
258         .tbl_operand = BNXT_ULP_RF_IDX_MAIN_ACTION_PTR,
259         .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_RID_REGFILE,
260         .fdb_operand = BNXT_ULP_RF_IDX_RID,
261         .mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
262         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
263         .result_start_idx = 84,
264         .result_bit_size = 128,
265         .result_num_fields = 26,
266         .encap_num_fields = 0
267         },
268         { /* act_tid: 2, wh_plus, table: ext_full_act_record.0 */
269         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
270         .resource_type = TF_TBL_TYPE_EXT,
271         .resource_sub_type =
272                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_NORMAL,
273         .direction = TF_DIR_RX,
274         .execute_info = {
275                 .cond_true_goto  = 1,
276                 .cond_false_goto = 1,
277                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_TRUE,
278                 .cond_start_idx = 15,
279                 .cond_nums = 0 },
280         .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
281         .tbl_operand = BNXT_ULP_RF_IDX_MAIN_ACTION_PTR,
282         .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_RID_REGFILE,
283         .fdb_operand = BNXT_ULP_RF_IDX_RID,
284         .mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
285         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
286         .result_start_idx = 110,
287         .result_bit_size = 128,
288         .result_num_fields = 26,
289         .encap_num_fields = 12
290         },
291         { /* act_tid: 2, wh_plus, table: mirror_tbl.wr */
292         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
293         .resource_type = TF_TBL_TYPE_MIRROR_CONFIG,
294         .resource_sub_type =
295                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_NORMAL,
296         .direction = TF_DIR_RX,
297         .execute_info = {
298                 .cond_true_goto  = 1,
299                 .cond_false_goto = 1,
300                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_TRUE,
301                 .cond_start_idx = 15,
302                 .cond_nums = 0 },
303         .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_WR_REGFILE,
304         .tbl_operand = BNXT_ULP_RF_IDX_MIRROR_PTR_0,
305         .fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
306         .mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
307         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
308         .result_start_idx = 148,
309         .result_bit_size = 32,
310         .result_num_fields = 6
311         },
312         { /* act_tid: 2, wh_plus, table: shared_mirror_record.wr */
313         .resource_func = BNXT_ULP_RESOURCE_FUNC_GENERIC_TABLE,
314         .resource_type = TF_TBL_TYPE_MIRROR_CONFIG,
315         .resource_sub_type =
316                 BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_SHARED_MIRROR,
317         .direction = TF_DIR_RX,
318         .execute_info = {
319                 .cond_true_goto  = 0,
320                 .cond_false_goto = 0,
321                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_TRUE,
322                 .cond_start_idx = 15,
323                 .cond_nums = 0 },
324         .tbl_opcode = BNXT_ULP_GENERIC_TBL_OPC_WRITE,
325         .gen_tbl_lkup_type = BNXT_ULP_GENERIC_TBL_LKUP_TYPE_INDEX,
326         .fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
327         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
328         .key_start_idx = 1,
329         .blob_key_bit_size = 1,
330         .key_bit_size = 1,
331         .key_num_fields = 1,
332         .result_start_idx = 154,
333         .result_bit_size = 34,
334         .result_num_fields = 2
335         },
336         { /* act_tid: 3, wh_plus, table: int_flow_counter_tbl.0 */
337         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
338         .resource_type = TF_TBL_TYPE_ACT_STATS_64,
339         .resource_sub_type =
340                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_INT_COUNT,
341         .direction = TF_DIR_RX,
342         .execute_info = {
343                 .cond_true_goto  = 1,
344                 .cond_false_goto = 1,
345                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
346                 .cond_start_idx = 15,
347                 .cond_nums = 1 },
348         .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_REGFILE,
349         .tbl_operand = BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0,
350         .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
351         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
352         .result_start_idx = 156,
353         .result_bit_size = 64,
354         .result_num_fields = 1
355         },
356         { /* act_tid: 3, wh_plus, table: act_modify_ipv4_src.0 */
357         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
358         .resource_type = TF_TBL_TYPE_ACT_MODIFY_IPV4,
359         .resource_sub_type =
360                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_NORMAL,
361         .direction = TF_DIR_RX,
362         .execute_info = {
363                 .cond_true_goto  = 1,
364                 .cond_false_goto = 1,
365                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
366                 .cond_start_idx = 16,
367                 .cond_nums = 1 },
368         .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
369         .tbl_operand = BNXT_ULP_RF_IDX_MODIFY_IPV4_SRC_PTR_0,
370         .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
371         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
372         .result_start_idx = 157,
373         .result_bit_size = 32,
374         .result_num_fields = 1
375         },
376         { /* act_tid: 3, wh_plus, table: act_modify_ipv4_dst.0 */
377         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
378         .resource_type = TF_TBL_TYPE_ACT_MODIFY_IPV4,
379         .resource_sub_type =
380                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_NORMAL,
381         .direction = TF_DIR_RX,
382         .execute_info = {
383                 .cond_true_goto  = 1,
384                 .cond_false_goto = 1,
385                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
386                 .cond_start_idx = 17,
387                 .cond_nums = 1 },
388         .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
389         .tbl_operand = BNXT_ULP_RF_IDX_MODIFY_IPV4_DST_PTR_0,
390         .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
391         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
392         .result_start_idx = 158,
393         .result_bit_size = 32,
394         .result_num_fields = 1
395         },
396         { /* act_tid: 3, wh_plus, table: int_encap_mac_record.0 */
397         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
398         .resource_type = TF_TBL_TYPE_ACT_ENCAP_16B,
399         .resource_sub_type =
400                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_NORMAL,
401         .direction = TF_DIR_RX,
402         .execute_info = {
403                 .cond_true_goto  = 1,
404                 .cond_false_goto = 1,
405                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_TRUE,
406                 .cond_start_idx = 18,
407                 .cond_nums = 0 },
408         .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_WR_GLB_REGFILE,
409         .tbl_operand = BNXT_ULP_GLB_RF_IDX_ENCAP_MAC_PTR,
410         .fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
411         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
412         .result_start_idx = 159,
413         .result_bit_size = 0,
414         .result_num_fields = 0,
415         .encap_num_fields = 12
416         },
417         { /* act_tid: 3, wh_plus, table: int_full_act_record.0 */
418         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
419         .resource_type = TF_TBL_TYPE_FULL_ACT_RECORD,
420         .resource_sub_type =
421                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_NORMAL,
422         .direction = TF_DIR_RX,
423         .execute_info = {
424                 .cond_true_goto  = 1,
425                 .cond_false_goto = 1,
426                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
427                 .cond_start_idx = 18,
428                 .cond_nums = 1 },
429         .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
430         .tbl_operand = BNXT_ULP_RF_IDX_MAIN_ACTION_PTR,
431         .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
432         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
433         .result_start_idx = 171,
434         .result_bit_size = 128,
435         .result_num_fields = 26
436         },
437         { /* act_tid: 3, wh_plus, table: ext_full_act_record.0 */
438         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
439         .resource_type = TF_TBL_TYPE_EXT,
440         .resource_sub_type =
441                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_NORMAL,
442         .direction = TF_DIR_RX,
443         .execute_info = {
444                 .cond_true_goto  = 0,
445                 .cond_false_goto = 0,
446                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
447                 .cond_start_idx = 19,
448                 .cond_nums = 1 },
449         .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
450         .tbl_operand = BNXT_ULP_RF_IDX_MAIN_ACTION_PTR,
451         .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
452         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
453         .result_start_idx = 197,
454         .result_bit_size = 128,
455         .result_num_fields = 26,
456         .encap_num_fields = 12
457         },
458         { /* act_tid: 4, wh_plus, table: int_flow_counter_tbl.0 */
459         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
460         .resource_type = TF_TBL_TYPE_ACT_STATS_64,
461         .resource_sub_type =
462                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_INT_COUNT,
463         .direction = TF_DIR_TX,
464         .execute_info = {
465                 .cond_true_goto  = 1,
466                 .cond_false_goto = 1,
467                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
468                 .cond_start_idx = 20,
469                 .cond_nums = 1 },
470         .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_REGFILE,
471         .tbl_operand = BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0,
472         .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
473         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
474         .result_start_idx = 235,
475         .result_bit_size = 64,
476         .result_num_fields = 1
477         },
478         { /* act_tid: 4, wh_plus, table: int_vtag_encap_record.0 */
479         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
480         .resource_type = TF_TBL_TYPE_ACT_ENCAP_16B,
481         .resource_sub_type =
482                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_NORMAL,
483         .direction = TF_DIR_TX,
484         .execute_info = {
485                 .cond_true_goto  = 1,
486                 .cond_false_goto = 1,
487                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
488                 .cond_start_idx = 21,
489                 .cond_nums = 2 },
490         .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
491         .tbl_operand = BNXT_ULP_RF_IDX_ENCAP_PTR_0,
492         .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
493         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
494         .result_start_idx = 236,
495         .result_bit_size = 0,
496         .result_num_fields = 0,
497         .encap_num_fields = 12
498         },
499         { /* act_tid: 4, wh_plus, table: int_full_act_record.0 */
500         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
501         .resource_type = TF_TBL_TYPE_FULL_ACT_RECORD,
502         .resource_sub_type =
503                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_NORMAL,
504         .direction = TF_DIR_TX,
505         .execute_info = {
506                 .cond_true_goto  = 1,
507                 .cond_false_goto = 1,
508                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
509                 .cond_start_idx = 23,
510                 .cond_nums = 1 },
511         .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
512         .tbl_operand = BNXT_ULP_RF_IDX_MAIN_ACTION_PTR,
513         .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
514         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
515         .result_start_idx = 248,
516         .result_bit_size = 128,
517         .result_num_fields = 26
518         },
519         { /* act_tid: 4, wh_plus, table: ext_full_act_record.no_tag */
520         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
521         .resource_type = TF_TBL_TYPE_EXT,
522         .resource_sub_type =
523                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_NORMAL,
524         .direction = TF_DIR_TX,
525         .execute_info = {
526                 .cond_true_goto  = 1,
527                 .cond_false_goto = 1,
528                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
529                 .cond_start_idx = 24,
530                 .cond_nums = 2 },
531         .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
532         .tbl_operand = BNXT_ULP_RF_IDX_MAIN_ACTION_PTR,
533         .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
534         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
535         .result_start_idx = 274,
536         .result_bit_size = 128,
537         .result_num_fields = 26,
538         .encap_num_fields = 12
539         },
540         { /* act_tid: 4, wh_plus, table: ext_full_act_record.one_tag */
541         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
542         .resource_type = TF_TBL_TYPE_EXT,
543         .resource_sub_type =
544                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_NORMAL,
545         .direction = TF_DIR_TX,
546         .execute_info = {
547                 .cond_true_goto  = 0,
548                 .cond_false_goto = 0,
549                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
550                 .cond_start_idx = 26,
551                 .cond_nums = 2 },
552         .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
553         .tbl_operand = BNXT_ULP_RF_IDX_MAIN_ACTION_PTR,
554         .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
555         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
556         .result_start_idx = 312,
557         .result_bit_size = 128,
558         .result_num_fields = 26,
559         .encap_num_fields = 12
560         },
561         { /* act_tid: 5, wh_plus, table: int_flow_counter_tbl.0 */
562         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
563         .resource_type = TF_TBL_TYPE_ACT_STATS_64,
564         .resource_sub_type =
565                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_INT_COUNT,
566         .direction = TF_DIR_TX,
567         .execute_info = {
568                 .cond_true_goto  = 1,
569                 .cond_false_goto = 1,
570                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
571                 .cond_start_idx = 28,
572                 .cond_nums = 1 },
573         .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_REGFILE,
574         .tbl_operand = BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0,
575         .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
576         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
577         .result_start_idx = 350,
578         .result_bit_size = 64,
579         .result_num_fields = 1
580         },
581         { /* act_tid: 5, wh_plus, table: act_modify_ipv4_src.0 */
582         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
583         .resource_type = TF_TBL_TYPE_ACT_MODIFY_IPV4,
584         .resource_sub_type =
585                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_NORMAL,
586         .direction = TF_DIR_TX,
587         .execute_info = {
588                 .cond_true_goto  = 1,
589                 .cond_false_goto = 1,
590                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
591                 .cond_start_idx = 29,
592                 .cond_nums = 1 },
593         .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
594         .tbl_operand = BNXT_ULP_RF_IDX_MODIFY_IPV4_SRC_PTR_0,
595         .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
596         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
597         .result_start_idx = 351,
598         .result_bit_size = 32,
599         .result_num_fields = 1
600         },
601         { /* act_tid: 5, wh_plus, table: act_modify_ipv4_dst.0 */
602         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
603         .resource_type = TF_TBL_TYPE_ACT_MODIFY_IPV4,
604         .resource_sub_type =
605                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_NORMAL,
606         .direction = TF_DIR_TX,
607         .execute_info = {
608                 .cond_true_goto  = 1,
609                 .cond_false_goto = 1,
610                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
611                 .cond_start_idx = 30,
612                 .cond_nums = 1 },
613         .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
614         .tbl_operand = BNXT_ULP_RF_IDX_MODIFY_IPV4_DST_PTR_0,
615         .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
616         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
617         .result_start_idx = 352,
618         .result_bit_size = 32,
619         .result_num_fields = 1
620         },
621         { /* act_tid: 5, wh_plus, table: int_encap_mac_record.dummy */
622         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
623         .resource_type = TF_TBL_TYPE_ACT_ENCAP_16B,
624         .resource_sub_type =
625                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_NORMAL,
626         .direction = TF_DIR_TX,
627         .execute_info = {
628                 .cond_true_goto  = 1,
629                 .cond_false_goto = 1,
630                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_TRUE,
631                 .cond_start_idx = 31,
632                 .cond_nums = 0 },
633         .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_WR_GLB_REGFILE,
634         .tbl_operand = BNXT_ULP_GLB_RF_IDX_ENCAP_MAC_PTR,
635         .fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
636         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
637         .result_start_idx = 353,
638         .result_bit_size = 0,
639         .result_num_fields = 0,
640         .encap_num_fields = 12
641         },
642         { /* act_tid: 5, wh_plus, table: int_full_act_record.0 */
643         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
644         .resource_type = TF_TBL_TYPE_FULL_ACT_RECORD,
645         .resource_sub_type =
646                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_NORMAL,
647         .direction = TF_DIR_TX,
648         .execute_info = {
649                 .cond_true_goto  = 1,
650                 .cond_false_goto = 1,
651                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
652                 .cond_start_idx = 31,
653                 .cond_nums = 1 },
654         .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
655         .tbl_operand = BNXT_ULP_RF_IDX_MAIN_ACTION_PTR,
656         .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
657         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
658         .result_start_idx = 365,
659         .result_bit_size = 128,
660         .result_num_fields = 26
661         },
662         { /* act_tid: 5, wh_plus, table: ext_full_act_record.0 */
663         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
664         .resource_type = TF_TBL_TYPE_EXT,
665         .resource_sub_type =
666                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_NORMAL,
667         .direction = TF_DIR_TX,
668         .execute_info = {
669                 .cond_true_goto  = 0,
670                 .cond_false_goto = 0,
671                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
672                 .cond_start_idx = 32,
673                 .cond_nums = 1 },
674         .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
675         .tbl_operand = BNXT_ULP_RF_IDX_MAIN_ACTION_PTR,
676         .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
677         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
678         .result_start_idx = 391,
679         .result_bit_size = 128,
680         .result_num_fields = 26,
681         .encap_num_fields = 12
682         },
683         { /* act_tid: 6, wh_plus, table: int_flow_counter_tbl.0 */
684         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
685         .resource_type = TF_TBL_TYPE_ACT_STATS_64,
686         .resource_sub_type =
687                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_INT_COUNT,
688         .direction = TF_DIR_TX,
689         .execute_info = {
690                 .cond_true_goto  = 1,
691                 .cond_false_goto = 1,
692                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
693                 .cond_start_idx = 33,
694                 .cond_nums = 1 },
695         .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_REGFILE,
696         .tbl_operand = BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0,
697         .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
698         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
699         .result_start_idx = 429,
700         .result_bit_size = 64,
701         .result_num_fields = 1
702         },
703         { /* act_tid: 6, wh_plus, table: sp_smac_ipv4.0 */
704         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
705         .resource_type = TF_TBL_TYPE_ACT_SP_SMAC_IPV4,
706         .resource_sub_type =
707                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_NORMAL,
708         .direction = TF_DIR_TX,
709         .execute_info = {
710                 .cond_true_goto  = 1,
711                 .cond_false_goto = 1,
712                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
713                 .cond_start_idx = 34,
714                 .cond_nums = 1 },
715         .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
716         .tbl_operand = BNXT_ULP_RF_IDX_MAIN_SP_PTR,
717         .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
718         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
719         .result_start_idx = 430,
720         .result_bit_size = 0,
721         .result_num_fields = 0,
722         .encap_num_fields = 3
723         },
724         { /* act_tid: 6, wh_plus, table: sp_smac_ipv6.0 */
725         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
726         .resource_type = TF_TBL_TYPE_ACT_SP_SMAC_IPV6,
727         .resource_sub_type =
728                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_NORMAL,
729         .direction = TF_DIR_TX,
730         .execute_info = {
731                 .cond_true_goto  = 1,
732                 .cond_false_goto = 1,
733                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
734                 .cond_start_idx = 35,
735                 .cond_nums = 1 },
736         .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
737         .tbl_operand = BNXT_ULP_RF_IDX_MAIN_SP_PTR,
738         .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
739         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
740         .result_start_idx = 433,
741         .result_bit_size = 0,
742         .result_num_fields = 0,
743         .encap_num_fields = 3
744         },
745         { /* act_tid: 6, wh_plus, table: int_tun_encap_record.0 */
746         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
747         .resource_type = TF_TBL_TYPE_ACT_ENCAP_64B,
748         .resource_sub_type =
749                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_NORMAL,
750         .direction = TF_DIR_TX,
751         .execute_info = {
752                 .cond_true_goto  = 1,
753                 .cond_false_goto = 1,
754                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
755                 .cond_start_idx = 36,
756                 .cond_nums = 1 },
757         .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
758         .tbl_operand = BNXT_ULP_RF_IDX_ENCAP_PTR_0,
759         .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
760         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
761         .result_start_idx = 436,
762         .result_bit_size = 0,
763         .result_num_fields = 0,
764         .encap_num_fields = 12
765         },
766         { /* act_tid: 6, wh_plus, table: int_full_act_record.0 */
767         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
768         .resource_type = TF_TBL_TYPE_FULL_ACT_RECORD,
769         .resource_sub_type =
770                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_NORMAL,
771         .direction = TF_DIR_TX,
772         .execute_info = {
773                 .cond_true_goto  = 1,
774                 .cond_false_goto = 1,
775                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
776                 .cond_start_idx = 37,
777                 .cond_nums = 1 },
778         .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
779         .tbl_operand = BNXT_ULP_RF_IDX_MAIN_ACTION_PTR,
780         .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
781         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
782         .result_start_idx = 448,
783         .result_bit_size = 128,
784         .result_num_fields = 26
785         },
786         { /* act_tid: 6, wh_plus, table: ext_full_act_record_vxlan.0 */
787         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
788         .resource_type = TF_TBL_TYPE_EXT,
789         .resource_sub_type =
790                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_NORMAL,
791         .direction = TF_DIR_TX,
792         .execute_info = {
793                 .cond_true_goto  = 0,
794                 .cond_false_goto = 0,
795                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
796                 .cond_start_idx = 38,
797                 .cond_nums = 1 },
798         .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
799         .tbl_operand = BNXT_ULP_RF_IDX_MAIN_ACTION_PTR,
800         .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
801         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
802         .result_start_idx = 474,
803         .result_bit_size = 128,
804         .result_num_fields = 26,
805         .encap_num_fields = 12
806         }
807 };
808
809 struct bnxt_ulp_mapper_cond_info ulp_wh_plus_act_cond_list[] = {
810         /* cond_reject: wh_plus, act_tid: 1 */
811         {
812         .cond_opcode = BNXT_ULP_COND_OPC_ACT_BIT_IS_SET,
813         .cond_operand = BNXT_ULP_ACT_BIT_SET_IPV4_SRC
814         },
815         {
816         .cond_opcode = BNXT_ULP_COND_OPC_ACT_BIT_IS_SET,
817         .cond_operand = BNXT_ULP_ACT_BIT_SET_IPV6_SRC
818         },
819         {
820         .cond_opcode = BNXT_ULP_COND_OPC_ACT_BIT_IS_SET,
821         .cond_operand = BNXT_ULP_ACT_BIT_SET_TP_SRC
822         },
823         {
824         .cond_opcode = BNXT_ULP_COND_OPC_ACT_BIT_IS_SET,
825         .cond_operand = BNXT_ULP_ACT_BIT_SET_IPV4_DST
826         },
827         {
828         .cond_opcode = BNXT_ULP_COND_OPC_ACT_BIT_IS_SET,
829         .cond_operand = BNXT_ULP_ACT_BIT_SET_IPV6_DST
830         },
831         {
832         .cond_opcode = BNXT_ULP_COND_OPC_ACT_BIT_IS_SET,
833         .cond_operand = BNXT_ULP_ACT_BIT_SET_TP_DST
834         },
835         {
836         .cond_opcode = BNXT_ULP_COND_OPC_ACT_BIT_IS_SET,
837         .cond_operand = BNXT_ULP_ACT_BIT_PUSH_VLAN
838         },
839         {
840         .cond_opcode = BNXT_ULP_COND_OPC_ACT_BIT_IS_SET,
841         .cond_operand = BNXT_ULP_ACT_BIT_SET_VLAN_VID
842         },
843         {
844         .cond_opcode = BNXT_ULP_COND_OPC_ACT_BIT_IS_SET,
845         .cond_operand = BNXT_ULP_ACT_BIT_SET_VLAN_PCP
846         },
847         /* cond_execute: act_tid: 1, shared_mirror_record.rd */
848         {
849         .cond_opcode = BNXT_ULP_COND_OPC_ACT_BIT_IS_SET,
850         .cond_operand = BNXT_ULP_ACT_BIT_SHARED_SAMPLE
851         },
852         /* cond_execute: act_tid: 1, int_flow_counter_tbl.0 */
853         {
854         .cond_opcode = BNXT_ULP_COND_OPC_ACT_BIT_IS_SET,
855         .cond_operand = BNXT_ULP_ACT_BIT_COUNT
856         },
857         /* cond_execute: act_tid: 1, int_vtag_encap_record.0 */
858         {
859         .cond_opcode = BNXT_ULP_COND_OPC_ACT_BIT_IS_SET,
860         .cond_operand = BNXT_ULP_ACT_BIT_PUSH_VLAN
861         },
862         /* cond_execute: act_tid: 1, int_full_act_record.0 */
863         {
864         .cond_opcode = BNXT_ULP_COND_OPC_EXT_MEM_NOT_SET,
865         },
866         /* cond_execute: act_tid: 1, ext_full_act_record.0 */
867         {
868         .cond_opcode = BNXT_ULP_COND_OPC_EXT_MEM_IS_SET,
869         },
870         /* cond_execute: act_tid: 2, int_flow_counter_tbl.0 */
871         {
872         .cond_opcode = BNXT_ULP_COND_OPC_ACT_BIT_IS_SET,
873         .cond_operand = BNXT_ULP_ACT_BIT_COUNT
874         },
875         /* cond_execute: act_tid: 3, int_flow_counter_tbl.0 */
876         {
877         .cond_opcode = BNXT_ULP_COND_OPC_ACT_BIT_IS_SET,
878         .cond_operand = BNXT_ULP_ACT_BIT_COUNT
879         },
880         /* cond_execute: act_tid: 3, act_modify_ipv4_src.0 */
881         {
882         .cond_opcode = BNXT_ULP_COND_OPC_ACT_BIT_IS_SET,
883         .cond_operand = BNXT_ULP_ACT_BIT_SET_IPV4_SRC
884         },
885         /* cond_execute: act_tid: 3, act_modify_ipv4_dst.0 */
886         {
887         .cond_opcode = BNXT_ULP_COND_OPC_ACT_BIT_IS_SET,
888         .cond_operand = BNXT_ULP_ACT_BIT_SET_IPV4_DST
889         },
890         /* cond_execute: act_tid: 3, int_full_act_record.0 */
891         {
892         .cond_opcode = BNXT_ULP_COND_OPC_EXT_MEM_NOT_SET,
893         },
894         /* cond_execute: act_tid: 3, ext_full_act_record.0 */
895         {
896         .cond_opcode = BNXT_ULP_COND_OPC_EXT_MEM_IS_SET,
897         },
898         /* cond_execute: act_tid: 4, int_flow_counter_tbl.0 */
899         {
900         .cond_opcode = BNXT_ULP_COND_OPC_ACT_BIT_IS_SET,
901         .cond_operand = BNXT_ULP_ACT_BIT_COUNT
902         },
903         /* cond_execute: act_tid: 4, int_vtag_encap_record.0 */
904         {
905         .cond_opcode = BNXT_ULP_COND_OPC_EXT_MEM_NOT_SET,
906         },
907         {
908         .cond_opcode = BNXT_ULP_COND_OPC_ACT_BIT_IS_SET,
909         .cond_operand = BNXT_ULP_ACT_BIT_PUSH_VLAN
910         },
911         /* cond_execute: act_tid: 4, int_full_act_record.0 */
912         {
913         .cond_opcode = BNXT_ULP_COND_OPC_EXT_MEM_NOT_SET,
914         },
915         /* cond_execute: act_tid: 4, ext_full_act_record.no_tag */
916         {
917         .cond_opcode = BNXT_ULP_COND_OPC_EXT_MEM_IS_SET,
918         },
919         {
920         .cond_opcode = BNXT_ULP_COND_OPC_ACT_BIT_NOT_SET,
921         .cond_operand = BNXT_ULP_ACT_BIT_PUSH_VLAN
922         },
923         /* cond_execute: act_tid: 4, ext_full_act_record.one_tag */
924         {
925         .cond_opcode = BNXT_ULP_COND_OPC_EXT_MEM_IS_SET,
926         },
927         {
928         .cond_opcode = BNXT_ULP_COND_OPC_ACT_BIT_IS_SET,
929         .cond_operand = BNXT_ULP_ACT_BIT_PUSH_VLAN
930         },
931         /* cond_execute: act_tid: 5, int_flow_counter_tbl.0 */
932         {
933         .cond_opcode = BNXT_ULP_COND_OPC_ACT_BIT_IS_SET,
934         .cond_operand = BNXT_ULP_ACT_BIT_COUNT
935         },
936         /* cond_execute: act_tid: 5, act_modify_ipv4_src.0 */
937         {
938         .cond_opcode = BNXT_ULP_COND_OPC_ACT_BIT_IS_SET,
939         .cond_operand = BNXT_ULP_ACT_BIT_SET_IPV4_SRC
940         },
941         /* cond_execute: act_tid: 5, act_modify_ipv4_dst.0 */
942         {
943         .cond_opcode = BNXT_ULP_COND_OPC_ACT_BIT_IS_SET,
944         .cond_operand = BNXT_ULP_ACT_BIT_SET_IPV4_DST
945         },
946         /* cond_execute: act_tid: 5, int_full_act_record.0 */
947         {
948         .cond_opcode = BNXT_ULP_COND_OPC_EXT_MEM_NOT_SET,
949         },
950         /* cond_execute: act_tid: 5, ext_full_act_record.0 */
951         {
952         .cond_opcode = BNXT_ULP_COND_OPC_EXT_MEM_IS_SET,
953         },
954         /* cond_execute: act_tid: 6, int_flow_counter_tbl.0 */
955         {
956         .cond_opcode = BNXT_ULP_COND_OPC_ACT_BIT_IS_SET,
957         .cond_operand = BNXT_ULP_ACT_BIT_COUNT
958         },
959         /* cond_execute: act_tid: 6, sp_smac_ipv4.0 */
960         {
961         .cond_opcode = BNXT_ULP_COND_OPC_CF_IS_SET,
962         .cond_operand = BNXT_ULP_CF_IDX_ACT_ENCAP_IPV4_FLAG
963         },
964         /* cond_execute: act_tid: 6, sp_smac_ipv6.0 */
965         {
966         .cond_opcode = BNXT_ULP_COND_OPC_CF_IS_SET,
967         .cond_operand = BNXT_ULP_CF_IDX_ACT_ENCAP_IPV6_FLAG
968         },
969         /* cond_execute: act_tid: 6, int_tun_encap_record.0 */
970         {
971         .cond_opcode = BNXT_ULP_COND_OPC_EXT_MEM_NOT_SET,
972         },
973         /* cond_execute: act_tid: 6, int_full_act_record.0 */
974         {
975         .cond_opcode = BNXT_ULP_COND_OPC_EXT_MEM_NOT_SET,
976         },
977         /* cond_execute: act_tid: 6, ext_full_act_record_vxlan.0 */
978         {
979         .cond_opcode = BNXT_ULP_COND_OPC_EXT_MEM_IS_SET,
980         }
981 };
982
983 struct bnxt_ulp_mapper_key_info ulp_wh_plus_act_key_info_list[] = {
984         /* act_tid: 1, wh_plus, table: shared_mirror_record.rd */
985         {
986         .field_info_mask = {
987                 .description = "shared_index",
988                 .field_bit_size = 1,
989                 .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
990                 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
991                 .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
992                 .field_opr1 = {
993                         0xff}
994                 },
995         .field_info_spec = {
996                 .description = "shared_index",
997                 .field_bit_size = 1,
998                 .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
999                 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1000                 .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
1001                 .field_opr1 = {
1002                         (BNXT_ULP_ACT_PROP_IDX_SHARED_HANDLE >> 8) & 0xff,
1003                         BNXT_ULP_ACT_PROP_IDX_SHARED_HANDLE & 0xff}
1004                 }
1005         },
1006         /* act_tid: 2, wh_plus, table: shared_mirror_record.wr */
1007         {
1008         .field_info_mask = {
1009                 .description = "shared_index",
1010                 .field_bit_size = 1,
1011                 .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1012                 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1013                 .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
1014                 .field_opr1 = {
1015                         0xff}
1016                 },
1017         .field_info_spec = {
1018                 .description = "shared_index",
1019                 .field_bit_size = 1,
1020                 .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1021                 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1022                 .field_src1 = BNXT_ULP_FIELD_SRC_RF,
1023                 .field_opr1 = {
1024                         (BNXT_ULP_RF_IDX_MIRROR_PTR_0 >> 8) & 0xff,
1025                         BNXT_ULP_RF_IDX_MIRROR_PTR_0 & 0xff}
1026                 }
1027         }
1028 };
1029
1030 struct bnxt_ulp_mapper_field_info ulp_wh_plus_act_result_field_list[] = {
1031         /* act_tid: 1, wh_plus, table: int_flow_counter_tbl.0 */
1032         {
1033         .description = "count",
1034         .field_bit_size = 64,
1035         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1036         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1037         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1038         },
1039         /* act_tid: 1, wh_plus, table: int_vtag_encap_record.0 */
1040         {
1041         .description = "ecv_tun_type",
1042         .field_bit_size = 3,
1043         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1044         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1045         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1046         },
1047         {
1048         .description = "ecv_l4_type",
1049         .field_bit_size = 3,
1050         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1051         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1052         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1053         },
1054         {
1055         .description = "ecv_l3_type",
1056         .field_bit_size = 3,
1057         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1058         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1059         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1060         },
1061         {
1062         .description = "ecv_l2_en",
1063         .field_bit_size = 1,
1064         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1065         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1066         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1067         },
1068         {
1069         .description = "ecv_vtag_type",
1070         .field_bit_size = 4,
1071         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1072         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1073         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
1074         .field_opr1 = {
1075                 ULP_WP_SYM_ECV_VTAG_TYPE_ADD_1_ENCAP_PRI}
1076         },
1077         {
1078         .description = "ecv_custom_en",
1079         .field_bit_size = 1,
1080         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1081         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1082         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1083         },
1084         {
1085         .description = "ecv_valid",
1086         .field_bit_size = 1,
1087         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1088         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1089         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
1090         .field_opr1 = {
1091                 1}
1092         },
1093         {
1094         .description = "vtag_tpid",
1095         .field_bit_size = 16,
1096         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1097         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1098         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
1099         .field_opr1 = {
1100                 (BNXT_ULP_ACT_PROP_IDX_PUSH_VLAN >> 8) & 0xff,
1101                 BNXT_ULP_ACT_PROP_IDX_PUSH_VLAN & 0xff}
1102         },
1103         {
1104         .description = "vtag_vid",
1105         .field_bit_size = 12,
1106         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1107         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1108         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
1109         .field_opr1 = {
1110                 (BNXT_ULP_ACT_PROP_IDX_SET_VLAN_VID >> 8) & 0xff,
1111                 BNXT_ULP_ACT_PROP_IDX_SET_VLAN_VID & 0xff}
1112         },
1113         {
1114         .description = "vtag_de",
1115         .field_bit_size = 1,
1116         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1117         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1118         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1119         },
1120         {
1121         .description = "vtag_pcp",
1122         .field_bit_size = 3,
1123         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1124         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1125         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
1126         .field_opr1 = {
1127                 (BNXT_ULP_ACT_PROP_IDX_SET_VLAN_PCP >> 8) & 0xff,
1128                 BNXT_ULP_ACT_PROP_IDX_SET_VLAN_PCP & 0xff}
1129         },
1130         {
1131         .description = "spare",
1132         .field_bit_size = 80,
1133         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1134         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1135         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1136         },
1137         /* act_tid: 1, wh_plus, table: int_full_act_record.0 */
1138         {
1139         .description = "flow_cntr_ptr",
1140         .field_bit_size = 14,
1141         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1142         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1143         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
1144         .field_opr1 = {
1145                 (BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 >> 8) & 0xff,
1146                 BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 & 0xff}
1147         },
1148         {
1149         .description = "age_enable",
1150         .field_bit_size = 1,
1151         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1152         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1153         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1154         },
1155         {
1156         .description = "agg_cntr_en",
1157         .field_bit_size = 1,
1158         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1159         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1160         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1161         },
1162         {
1163         .description = "rate_cntr_en",
1164         .field_bit_size = 1,
1165         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1166         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1167         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1168         },
1169         {
1170         .description = "flow_cntr_en",
1171         .field_bit_size = 1,
1172         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1173         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1174         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
1175         .field_opr1 = {
1176                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 56) & 0xff,
1177                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 48) & 0xff,
1178                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 40) & 0xff,
1179                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 32) & 0xff,
1180                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 24) & 0xff,
1181                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 16) & 0xff,
1182                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 8) & 0xff,
1183                 (uint64_t)BNXT_ULP_ACT_BIT_COUNT & 0xff}
1184         },
1185         {
1186         .description = "tcpflags_key",
1187         .field_bit_size = 8,
1188         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1189         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1190         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1191         },
1192         {
1193         .description = "tcpflags_mir",
1194         .field_bit_size = 1,
1195         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1196         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1197         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1198         },
1199         {
1200         .description = "tcpflags_match",
1201         .field_bit_size = 1,
1202         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1203         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1204         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1205         },
1206         {
1207         .description = "encap_ptr",
1208         .field_bit_size = 11,
1209         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1210         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1211         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
1212         .field_opr1 = {
1213                 (BNXT_ULP_RF_IDX_ENCAP_PTR_0 >> 8) & 0xff,
1214                 BNXT_ULP_RF_IDX_ENCAP_PTR_0 & 0xff}
1215         },
1216         {
1217         .description = "dst_ip_ptr",
1218         .field_bit_size = 10,
1219         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1220         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1221         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
1222         .field_opr1 = {
1223                 (BNXT_ULP_RF_IDX_MODIFY_IPV4_DST_PTR_0 >> 8) & 0xff,
1224                 BNXT_ULP_RF_IDX_MODIFY_IPV4_DST_PTR_0 & 0xff}
1225         },
1226         {
1227         .description = "tcp_dst_port",
1228         .field_bit_size = 16,
1229         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1230         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_ACT_BIT,
1231         .field_cond_opr = {
1232                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 56) & 0xff,
1233                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 48) & 0xff,
1234                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 40) & 0xff,
1235                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 32) & 0xff,
1236                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 24) & 0xff,
1237                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 16) & 0xff,
1238                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 8) & 0xff,
1239                 (uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST & 0xff},
1240         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
1241         .field_opr1 = {
1242                 (BNXT_ULP_ACT_PROP_IDX_SET_TP_DST >> 8) & 0xff,
1243                 BNXT_ULP_ACT_PROP_IDX_SET_TP_DST & 0xff},
1244         .field_src2 = BNXT_ULP_FIELD_SRC_ZERO
1245         },
1246         {
1247         .description = "src_ip_ptr",
1248         .field_bit_size = 10,
1249         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1250         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1251         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
1252         .field_opr1 = {
1253                 (BNXT_ULP_RF_IDX_MODIFY_IPV4_SRC_PTR_0 >> 8) & 0xff,
1254                 BNXT_ULP_RF_IDX_MODIFY_IPV4_SRC_PTR_0 & 0xff}
1255         },
1256         {
1257         .description = "tcp_src_port",
1258         .field_bit_size = 16,
1259         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1260         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_ACT_BIT,
1261         .field_cond_opr = {
1262                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 56) & 0xff,
1263                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 48) & 0xff,
1264                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 40) & 0xff,
1265                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 32) & 0xff,
1266                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 24) & 0xff,
1267                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 16) & 0xff,
1268                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 8) & 0xff,
1269                 (uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC & 0xff},
1270         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
1271         .field_opr1 = {
1272                 (BNXT_ULP_ACT_PROP_IDX_SET_TP_SRC >> 8) & 0xff,
1273                 BNXT_ULP_ACT_PROP_IDX_SET_TP_SRC & 0xff},
1274         .field_src2 = BNXT_ULP_FIELD_SRC_ZERO
1275         },
1276         {
1277         .description = "meter_id",
1278         .field_bit_size = 10,
1279         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1280         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1281         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1282         },
1283         {
1284         .description = "l3_rdir",
1285         .field_bit_size = 1,
1286         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1287         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1288         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1289         },
1290         {
1291         .description = "tl3_rdir",
1292         .field_bit_size = 1,
1293         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1294         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1295         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1296         },
1297         {
1298         .description = "l3_ttl_dec",
1299         .field_bit_size = 1,
1300         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1301         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1302         .field_src1 = BNXT_ULP_FIELD_SRC_CF,
1303         .field_opr1 = {
1304                 (BNXT_ULP_CF_IDX_ACT_DEC_TTL >> 8) & 0xff,
1305                 BNXT_ULP_CF_IDX_ACT_DEC_TTL & 0xff}
1306         },
1307         {
1308         .description = "tl3_ttl_dec",
1309         .field_bit_size = 1,
1310         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1311         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1312         .field_src1 = BNXT_ULP_FIELD_SRC_CF,
1313         .field_opr1 = {
1314                 (BNXT_ULP_CF_IDX_ACT_T_DEC_TTL >> 8) & 0xff,
1315                 BNXT_ULP_CF_IDX_ACT_T_DEC_TTL & 0xff}
1316         },
1317         {
1318         .description = "decap_func",
1319         .field_bit_size = 4,
1320         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1321         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_ACT_BIT,
1322         .field_cond_opr = {
1323                 ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 56) & 0xff,
1324                 ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 48) & 0xff,
1325                 ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 40) & 0xff,
1326                 ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 32) & 0xff,
1327                 ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 24) & 0xff,
1328                 ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 16) & 0xff,
1329                 ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 8) & 0xff,
1330                 (uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP & 0xff},
1331         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
1332         .field_opr1 = {
1333                 ULP_WP_SYM_DECAP_FUNC_THRU_TUN},
1334         .field_src2 = BNXT_ULP_FIELD_SRC_CONST,
1335         .field_opr2 = {
1336                 ULP_WP_SYM_DECAP_FUNC_NONE}
1337         },
1338         {
1339         .description = "vnic_or_vport",
1340         .field_bit_size = 12,
1341         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1342         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1343         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
1344         .field_opr1 = {
1345                 (BNXT_ULP_ACT_PROP_IDX_VNIC >> 8) & 0xff,
1346                 BNXT_ULP_ACT_PROP_IDX_VNIC & 0xff}
1347         },
1348         {
1349         .description = "pop_vlan",
1350         .field_bit_size = 1,
1351         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1352         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1353         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
1354         .field_opr1 = {
1355                 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 56) & 0xff,
1356                 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 48) & 0xff,
1357                 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 40) & 0xff,
1358                 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 32) & 0xff,
1359                 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 24) & 0xff,
1360                 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 16) & 0xff,
1361                 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 8) & 0xff,
1362                 (uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN & 0xff}
1363         },
1364         {
1365         .description = "meter",
1366         .field_bit_size = 1,
1367         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1368         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1369         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1370         },
1371         {
1372         .description = "mirror",
1373         .field_bit_size = 2,
1374         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1375         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_ACT_BIT,
1376         .field_cond_opr = {
1377                 ((uint64_t)BNXT_ULP_ACT_BIT_SHARED_SAMPLE >> 56) & 0xff,
1378                 ((uint64_t)BNXT_ULP_ACT_BIT_SHARED_SAMPLE >> 48) & 0xff,
1379                 ((uint64_t)BNXT_ULP_ACT_BIT_SHARED_SAMPLE >> 40) & 0xff,
1380                 ((uint64_t)BNXT_ULP_ACT_BIT_SHARED_SAMPLE >> 32) & 0xff,
1381                 ((uint64_t)BNXT_ULP_ACT_BIT_SHARED_SAMPLE >> 24) & 0xff,
1382                 ((uint64_t)BNXT_ULP_ACT_BIT_SHARED_SAMPLE >> 16) & 0xff,
1383                 ((uint64_t)BNXT_ULP_ACT_BIT_SHARED_SAMPLE >> 8) & 0xff,
1384                 (uint64_t)BNXT_ULP_ACT_BIT_SHARED_SAMPLE & 0xff},
1385         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
1386         .field_opr1 = {
1387                 (BNXT_ULP_RF_IDX_MIRROR_ID_0 >> 8) & 0xff,
1388                 BNXT_ULP_RF_IDX_MIRROR_ID_0 & 0xff},
1389         .field_src2 = BNXT_ULP_FIELD_SRC_ZERO
1390         },
1391         {
1392         .description = "drop",
1393         .field_bit_size = 1,
1394         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1395         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1396         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
1397         .field_opr1 = {
1398                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 56) & 0xff,
1399                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 48) & 0xff,
1400                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 40) & 0xff,
1401                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 32) & 0xff,
1402                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 24) & 0xff,
1403                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 16) & 0xff,
1404                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 8) & 0xff,
1405                 (uint64_t)BNXT_ULP_ACT_BIT_DROP & 0xff}
1406         },
1407         {
1408         .description = "hit",
1409         .field_bit_size = 1,
1410         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1411         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1412         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1413         },
1414         {
1415         .description = "type",
1416         .field_bit_size = 1,
1417         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1418         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1419         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1420         },
1421         /* act_tid: 1, wh_plus, table: ext_full_act_record.0 */
1422         {
1423         .description = "flow_cntr_ptr",
1424         .field_bit_size = 14,
1425         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1426         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1427         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
1428         .field_opr1 = {
1429                 (BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 >> 8) & 0xff,
1430                 BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 & 0xff}
1431         },
1432         {
1433         .description = "age_enable",
1434         .field_bit_size = 1,
1435         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1436         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1437         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1438         },
1439         {
1440         .description = "agg_cntr_en",
1441         .field_bit_size = 1,
1442         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1443         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1444         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1445         },
1446         {
1447         .description = "rate_cntr_en",
1448         .field_bit_size = 1,
1449         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1450         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1451         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1452         },
1453         {
1454         .description = "flow_cntr_en",
1455         .field_bit_size = 1,
1456         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1457         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1458         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
1459         .field_opr1 = {
1460                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 56) & 0xff,
1461                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 48) & 0xff,
1462                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 40) & 0xff,
1463                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 32) & 0xff,
1464                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 24) & 0xff,
1465                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 16) & 0xff,
1466                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 8) & 0xff,
1467                 (uint64_t)BNXT_ULP_ACT_BIT_COUNT & 0xff}
1468         },
1469         {
1470         .description = "flow_cntr_ext",
1471         .field_bit_size = 1,
1472         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1473         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1474         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1475         },
1476         {
1477         .description = "tcpflags_key",
1478         .field_bit_size = 8,
1479         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1480         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1481         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1482         },
1483         {
1484         .description = "tcpflags_mir",
1485         .field_bit_size = 1,
1486         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1487         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1488         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1489         },
1490         {
1491         .description = "tcpflags_match",
1492         .field_bit_size = 1,
1493         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1494         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1495         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1496         },
1497         {
1498         .description = "encap_ptr",
1499         .field_bit_size = 11,
1500         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1501         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1502         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1503         },
1504         {
1505         .description = "encap_rec_int",
1506         .field_bit_size = 1,
1507         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1508         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1509         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1510         },
1511         {
1512         .description = "dst_ip_ptr",
1513         .field_bit_size = 10,
1514         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1515         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1516         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
1517         .field_opr1 = {
1518                 (BNXT_ULP_RF_IDX_MODIFY_IPV4_DST_PTR_0 >> 8) & 0xff,
1519                 BNXT_ULP_RF_IDX_MODIFY_IPV4_DST_PTR_0 & 0xff}
1520         },
1521         {
1522         .description = "tcp_dst_port",
1523         .field_bit_size = 16,
1524         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1525         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_ACT_BIT,
1526         .field_cond_opr = {
1527                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 56) & 0xff,
1528                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 48) & 0xff,
1529                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 40) & 0xff,
1530                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 32) & 0xff,
1531                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 24) & 0xff,
1532                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 16) & 0xff,
1533                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 8) & 0xff,
1534                 (uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST & 0xff},
1535         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
1536         .field_opr1 = {
1537                 (BNXT_ULP_ACT_PROP_IDX_SET_TP_DST >> 8) & 0xff,
1538                 BNXT_ULP_ACT_PROP_IDX_SET_TP_DST & 0xff},
1539         .field_src2 = BNXT_ULP_FIELD_SRC_ZERO
1540         },
1541         {
1542         .description = "src_ip_ptr",
1543         .field_bit_size = 10,
1544         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1545         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1546         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
1547         .field_opr1 = {
1548                 (BNXT_ULP_RF_IDX_MODIFY_IPV4_SRC_PTR_0 >> 8) & 0xff,
1549                 BNXT_ULP_RF_IDX_MODIFY_IPV4_SRC_PTR_0 & 0xff}
1550         },
1551         {
1552         .description = "tcp_src_port",
1553         .field_bit_size = 16,
1554         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1555         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_ACT_BIT,
1556         .field_cond_opr = {
1557                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 56) & 0xff,
1558                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 48) & 0xff,
1559                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 40) & 0xff,
1560                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 32) & 0xff,
1561                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 24) & 0xff,
1562                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 16) & 0xff,
1563                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 8) & 0xff,
1564                 (uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC & 0xff},
1565         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
1566         .field_opr1 = {
1567                 (BNXT_ULP_ACT_PROP_IDX_SET_TP_SRC >> 8) & 0xff,
1568                 BNXT_ULP_ACT_PROP_IDX_SET_TP_SRC & 0xff},
1569         .field_src2 = BNXT_ULP_FIELD_SRC_ZERO
1570         },
1571         {
1572         .description = "meter_id",
1573         .field_bit_size = 10,
1574         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1575         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1576         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1577         },
1578         {
1579         .description = "l3_rdir",
1580         .field_bit_size = 1,
1581         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1582         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1583         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1584         },
1585         {
1586         .description = "tl3_rdir",
1587         .field_bit_size = 1,
1588         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1589         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1590         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1591         },
1592         {
1593         .description = "l3_ttl_dec",
1594         .field_bit_size = 1,
1595         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1596         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1597         .field_src1 = BNXT_ULP_FIELD_SRC_CF,
1598         .field_opr1 = {
1599                 (BNXT_ULP_CF_IDX_ACT_DEC_TTL >> 8) & 0xff,
1600                 BNXT_ULP_CF_IDX_ACT_DEC_TTL & 0xff}
1601         },
1602         {
1603         .description = "tl3_ttl_dec",
1604         .field_bit_size = 1,
1605         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1606         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1607         .field_src1 = BNXT_ULP_FIELD_SRC_CF,
1608         .field_opr1 = {
1609                 (BNXT_ULP_CF_IDX_ACT_T_DEC_TTL >> 8) & 0xff,
1610                 BNXT_ULP_CF_IDX_ACT_T_DEC_TTL & 0xff}
1611         },
1612         {
1613         .description = "decap_func",
1614         .field_bit_size = 4,
1615         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1616         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_ACT_BIT,
1617         .field_cond_opr = {
1618                 ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 56) & 0xff,
1619                 ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 48) & 0xff,
1620                 ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 40) & 0xff,
1621                 ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 32) & 0xff,
1622                 ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 24) & 0xff,
1623                 ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 16) & 0xff,
1624                 ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 8) & 0xff,
1625                 (uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP & 0xff},
1626         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
1627         .field_opr1 = {
1628                 ULP_WP_SYM_DECAP_FUNC_THRU_TUN},
1629         .field_src2 = BNXT_ULP_FIELD_SRC_CONST,
1630         .field_opr2 = {
1631                 ULP_WP_SYM_DECAP_FUNC_NONE}
1632         },
1633         {
1634         .description = "vnic_or_vport",
1635         .field_bit_size = 12,
1636         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1637         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1638         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
1639         .field_opr1 = {
1640                 (BNXT_ULP_ACT_PROP_IDX_VNIC >> 8) & 0xff,
1641                 BNXT_ULP_ACT_PROP_IDX_VNIC & 0xff}
1642         },
1643         {
1644         .description = "pop_vlan",
1645         .field_bit_size = 1,
1646         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1647         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1648         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
1649         .field_opr1 = {
1650                 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 56) & 0xff,
1651                 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 48) & 0xff,
1652                 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 40) & 0xff,
1653                 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 32) & 0xff,
1654                 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 24) & 0xff,
1655                 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 16) & 0xff,
1656                 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 8) & 0xff,
1657                 (uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN & 0xff}
1658         },
1659         {
1660         .description = "meter",
1661         .field_bit_size = 1,
1662         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1663         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1664         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1665         },
1666         {
1667         .description = "mirror",
1668         .field_bit_size = 2,
1669         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1670         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1671         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
1672         .field_opr1 = {
1673                 (BNXT_ULP_RF_IDX_MIRROR_ID_0 >> 8) & 0xff,
1674                 BNXT_ULP_RF_IDX_MIRROR_ID_0 & 0xff}
1675         },
1676         {
1677         .description = "drop",
1678         .field_bit_size = 1,
1679         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1680         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1681         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
1682         .field_opr1 = {
1683                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 56) & 0xff,
1684                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 48) & 0xff,
1685                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 40) & 0xff,
1686                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 32) & 0xff,
1687                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 24) & 0xff,
1688                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 16) & 0xff,
1689                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 8) & 0xff,
1690                 (uint64_t)BNXT_ULP_ACT_BIT_DROP & 0xff}
1691         },
1692         {
1693         .description = "ecv_tun_type",
1694         .field_bit_size = 3,
1695         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1696         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1697         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1698         },
1699         {
1700         .description = "ecv_l4_type",
1701         .field_bit_size = 3,
1702         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1703         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1704         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1705         },
1706         {
1707         .description = "ecv_l3_type",
1708         .field_bit_size = 3,
1709         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1710         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1711         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1712         },
1713         {
1714         .description = "ecv_l2_en",
1715         .field_bit_size = 1,
1716         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1717         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1718         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
1719         .field_opr1 = {
1720                 ULP_WP_SYM_ECV_L2_EN_YES}
1721         },
1722         {
1723         .description = "ecv_vtag_type",
1724         .field_bit_size = 4,
1725         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1726         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1727         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1728         },
1729         {
1730         .description = "ecv_custom_en",
1731         .field_bit_size = 1,
1732         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1733         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1734         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1735         },
1736         {
1737         .description = "ecv_valid",
1738         .field_bit_size = 1,
1739         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1740         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1741         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1742         },
1743         {
1744         .description = "vtag_tpid",
1745         .field_bit_size = 16,
1746         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1747         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1748         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1749         },
1750         {
1751         .description = "vtag_vid",
1752         .field_bit_size = 12,
1753         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1754         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1755         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1756         },
1757         {
1758         .description = "vtag_de",
1759         .field_bit_size = 1,
1760         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1761         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1762         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1763         },
1764         {
1765         .description = "vtag_pcp",
1766         .field_bit_size = 3,
1767         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1768         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1769         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1770         },
1771         {
1772         .description = "spare",
1773         .field_bit_size = 0,
1774         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1775         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1776         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1777         },
1778         /* act_tid: 2, wh_plus, table: mirror_tbl.alloc */
1779         {
1780         .description = "act_rec_ptr",
1781         .field_bit_size = 16,
1782         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1783         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1784         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1785         },
1786         {
1787         .description = "enable",
1788         .field_bit_size = 1,
1789         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1790         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1791         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
1792         .field_opr1 = {
1793                 1}
1794         },
1795         {
1796         .description = "copy",
1797         .field_bit_size = 1,
1798         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1799         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1800         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1801         },
1802         {
1803         .description = "ign_drop",
1804         .field_bit_size = 1,
1805         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1806         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1807         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1808         },
1809         {
1810         .description = "reserved",
1811         .field_bit_size = 2,
1812         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1813         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1814         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1815         },
1816         {
1817         .description = "sp_ptr",
1818         .field_bit_size = 11,
1819         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1820         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1821         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1822         },
1823         /* act_tid: 2, wh_plus, table: int_flow_counter_tbl.0 */
1824         {
1825         .description = "count",
1826         .field_bit_size = 64,
1827         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1828         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1829         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1830         },
1831         /* act_tid: 2, wh_plus, table: int_full_act_record.0 */
1832         {
1833         .description = "flow_cntr_ptr",
1834         .field_bit_size = 14,
1835         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1836         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1837         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
1838         .field_opr1 = {
1839                 (BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 >> 8) & 0xff,
1840                 BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 & 0xff}
1841         },
1842         {
1843         .description = "age_enable",
1844         .field_bit_size = 1,
1845         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1846         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1847         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1848         },
1849         {
1850         .description = "agg_cntr_en",
1851         .field_bit_size = 1,
1852         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1853         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1854         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1855         },
1856         {
1857         .description = "rate_cntr_en",
1858         .field_bit_size = 1,
1859         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1860         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1861         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1862         },
1863         {
1864         .description = "flow_cntr_en",
1865         .field_bit_size = 1,
1866         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1867         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1868         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
1869         .field_opr1 = {
1870                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 56) & 0xff,
1871                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 48) & 0xff,
1872                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 40) & 0xff,
1873                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 32) & 0xff,
1874                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 24) & 0xff,
1875                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 16) & 0xff,
1876                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 8) & 0xff,
1877                 (uint64_t)BNXT_ULP_ACT_BIT_COUNT & 0xff}
1878         },
1879         {
1880         .description = "tcpflags_key",
1881         .field_bit_size = 8,
1882         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1883         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1884         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1885         },
1886         {
1887         .description = "tcpflags_mir",
1888         .field_bit_size = 1,
1889         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1890         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1891         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1892         },
1893         {
1894         .description = "tcpflags_match",
1895         .field_bit_size = 1,
1896         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1897         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1898         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1899         },
1900         {
1901         .description = "encap_ptr",
1902         .field_bit_size = 11,
1903         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1904         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1905         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1906         },
1907         {
1908         .description = "dst_ip_ptr",
1909         .field_bit_size = 10,
1910         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1911         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1912         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1913         },
1914         {
1915         .description = "tcp_dst_port",
1916         .field_bit_size = 16,
1917         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1918         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1919         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1920         },
1921         {
1922         .description = "src_ip_ptr",
1923         .field_bit_size = 10,
1924         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1925         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1926         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1927         },
1928         {
1929         .description = "tcp_src_port",
1930         .field_bit_size = 16,
1931         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1932         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1933         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1934         },
1935         {
1936         .description = "meter_id",
1937         .field_bit_size = 10,
1938         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1939         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1940         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1941         },
1942         {
1943         .description = "l3_rdir",
1944         .field_bit_size = 1,
1945         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1946         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1947         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1948         },
1949         {
1950         .description = "tl3_rdir",
1951         .field_bit_size = 1,
1952         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1953         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1954         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1955         },
1956         {
1957         .description = "l3_ttl_dec",
1958         .field_bit_size = 1,
1959         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1960         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1961         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1962         },
1963         {
1964         .description = "tl3_ttl_dec",
1965         .field_bit_size = 1,
1966         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1967         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1968         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1969         },
1970         {
1971         .description = "decap_func",
1972         .field_bit_size = 4,
1973         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1974         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1975         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1976         },
1977         {
1978         .description = "vnic_or_vport",
1979         .field_bit_size = 12,
1980         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1981         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1982         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
1983         .field_opr1 = {
1984                 (BNXT_ULP_ACT_PROP_IDX_VNIC >> 8) & 0xff,
1985                 BNXT_ULP_ACT_PROP_IDX_VNIC & 0xff}
1986         },
1987         {
1988         .description = "pop_vlan",
1989         .field_bit_size = 1,
1990         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1991         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1992         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1993         },
1994         {
1995         .description = "meter",
1996         .field_bit_size = 1,
1997         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
1998         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
1999         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2000         },
2001         {
2002         .description = "mirror",
2003         .field_bit_size = 2,
2004         .field_opc = BNXT_ULP_FIELD_OPC_SRC1_PLUS_CONST,
2005         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
2006         .field_opr1 = {
2007                 (BNXT_ULP_RF_IDX_MIRROR_PTR_0 >> 8) & 0xff,
2008                 BNXT_ULP_RF_IDX_MIRROR_PTR_0 & 0xff},
2009         .field_src2 = BNXT_ULP_FIELD_SRC_CONST,
2010         .field_opr2 = {
2011                 1}
2012         },
2013         {
2014         .description = "drop",
2015         .field_bit_size = 1,
2016         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2017         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2018         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2019         },
2020         {
2021         .description = "hit",
2022         .field_bit_size = 1,
2023         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2024         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2025         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2026         },
2027         {
2028         .description = "type",
2029         .field_bit_size = 1,
2030         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2031         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2032         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2033         },
2034         /* act_tid: 2, wh_plus, table: ext_full_act_record.0 */
2035         {
2036         .description = "flow_cntr_ptr",
2037         .field_bit_size = 14,
2038         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2039         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2040         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
2041         .field_opr1 = {
2042                 (BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 >> 8) & 0xff,
2043                 BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 & 0xff}
2044         },
2045         {
2046         .description = "age_enable",
2047         .field_bit_size = 1,
2048         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2049         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2050         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2051         },
2052         {
2053         .description = "agg_cntr_en",
2054         .field_bit_size = 1,
2055         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2056         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2057         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2058         },
2059         {
2060         .description = "rate_cntr_en",
2061         .field_bit_size = 1,
2062         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2063         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2064         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2065         },
2066         {
2067         .description = "flow_cntr_en",
2068         .field_bit_size = 1,
2069         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2070         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2071         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
2072         .field_opr1 = {
2073                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 56) & 0xff,
2074                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 48) & 0xff,
2075                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 40) & 0xff,
2076                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 32) & 0xff,
2077                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 24) & 0xff,
2078                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 16) & 0xff,
2079                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 8) & 0xff,
2080                 (uint64_t)BNXT_ULP_ACT_BIT_COUNT & 0xff}
2081         },
2082         {
2083         .description = "flow_cntr_ext",
2084         .field_bit_size = 1,
2085         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2086         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2087         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2088         },
2089         {
2090         .description = "tcpflags_key",
2091         .field_bit_size = 8,
2092         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2093         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2094         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2095         },
2096         {
2097         .description = "tcpflags_mir",
2098         .field_bit_size = 1,
2099         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2100         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2101         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2102         },
2103         {
2104         .description = "tcpflags_match",
2105         .field_bit_size = 1,
2106         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2107         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2108         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2109         },
2110         {
2111         .description = "encap_ptr",
2112         .field_bit_size = 11,
2113         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2114         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2115         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2116         },
2117         {
2118         .description = "encap_rec_int",
2119         .field_bit_size = 1,
2120         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2121         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2122         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2123         },
2124         {
2125         .description = "dst_ip_ptr",
2126         .field_bit_size = 10,
2127         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2128         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2129         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2130         },
2131         {
2132         .description = "tcp_dst_port",
2133         .field_bit_size = 16,
2134         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2135         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2136         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2137         },
2138         {
2139         .description = "src_ip_ptr",
2140         .field_bit_size = 10,
2141         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2142         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2143         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2144         },
2145         {
2146         .description = "tcp_src_port",
2147         .field_bit_size = 16,
2148         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2149         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2150         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2151         },
2152         {
2153         .description = "meter_id",
2154         .field_bit_size = 10,
2155         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2156         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2157         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2158         },
2159         {
2160         .description = "l3_rdir",
2161         .field_bit_size = 1,
2162         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2163         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2164         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2165         },
2166         {
2167         .description = "tl3_rdir",
2168         .field_bit_size = 1,
2169         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2170         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2171         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2172         },
2173         {
2174         .description = "l3_ttl_dec",
2175         .field_bit_size = 1,
2176         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2177         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2178         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2179         },
2180         {
2181         .description = "tl3_ttl_dec",
2182         .field_bit_size = 1,
2183         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2184         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2185         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2186         },
2187         {
2188         .description = "decap_func",
2189         .field_bit_size = 4,
2190         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2191         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2192         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2193         },
2194         {
2195         .description = "vnic_or_vport",
2196         .field_bit_size = 12,
2197         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2198         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2199         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
2200         .field_opr1 = {
2201                 (BNXT_ULP_ACT_PROP_IDX_VNIC >> 8) & 0xff,
2202                 BNXT_ULP_ACT_PROP_IDX_VNIC & 0xff}
2203         },
2204         {
2205         .description = "pop_vlan",
2206         .field_bit_size = 1,
2207         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2208         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2209         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
2210         .field_opr1 = {
2211                 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 56) & 0xff,
2212                 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 48) & 0xff,
2213                 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 40) & 0xff,
2214                 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 32) & 0xff,
2215                 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 24) & 0xff,
2216                 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 16) & 0xff,
2217                 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 8) & 0xff,
2218                 (uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN & 0xff}
2219         },
2220         {
2221         .description = "meter",
2222         .field_bit_size = 1,
2223         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2224         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2225         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2226         },
2227         {
2228         .description = "mirror",
2229         .field_bit_size = 2,
2230         .field_opc = BNXT_ULP_FIELD_OPC_SRC1_PLUS_CONST,
2231         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
2232         .field_opr1 = {
2233                 (BNXT_ULP_RF_IDX_MIRROR_PTR_0 >> 8) & 0xff,
2234                 BNXT_ULP_RF_IDX_MIRROR_PTR_0 & 0xff},
2235         .field_src2 = BNXT_ULP_FIELD_SRC_CONST,
2236         .field_opr2 = {
2237                 1}
2238         },
2239         {
2240         .description = "drop",
2241         .field_bit_size = 1,
2242         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2243         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2244         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2245         },
2246         {
2247         .description = "ecv_tun_type",
2248         .field_bit_size = 3,
2249         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2250         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2251         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2252         },
2253         {
2254         .description = "ecv_l4_type",
2255         .field_bit_size = 3,
2256         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2257         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2258         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2259         },
2260         {
2261         .description = "ecv_l3_type",
2262         .field_bit_size = 3,
2263         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2264         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2265         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2266         },
2267         {
2268         .description = "ecv_l2_en",
2269         .field_bit_size = 1,
2270         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2271         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2272         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
2273         .field_opr1 = {
2274                 ULP_WP_SYM_ECV_L2_EN_YES}
2275         },
2276         {
2277         .description = "ecv_vtag_type",
2278         .field_bit_size = 4,
2279         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2280         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2281         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2282         },
2283         {
2284         .description = "ecv_custom_en",
2285         .field_bit_size = 1,
2286         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2287         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2288         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2289         },
2290         {
2291         .description = "ecv_valid",
2292         .field_bit_size = 1,
2293         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2294         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2295         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2296         },
2297         {
2298         .description = "vtag_tpid",
2299         .field_bit_size = 16,
2300         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2301         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2302         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2303         },
2304         {
2305         .description = "vtag_vid",
2306         .field_bit_size = 12,
2307         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2308         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2309         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2310         },
2311         {
2312         .description = "vtag_de",
2313         .field_bit_size = 1,
2314         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2315         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2316         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2317         },
2318         {
2319         .description = "vtag_pcp",
2320         .field_bit_size = 3,
2321         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2322         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2323         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2324         },
2325         {
2326         .description = "spare",
2327         .field_bit_size = 0,
2328         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2329         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2330         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2331         },
2332         /* act_tid: 2, wh_plus, table: mirror_tbl.wr */
2333         {
2334         .description = "act_rec_ptr",
2335         .field_bit_size = 16,
2336         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2337         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2338         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
2339         .field_opr1 = {
2340                 (BNXT_ULP_RF_IDX_MAIN_ACTION_PTR >> 8) & 0xff,
2341                 BNXT_ULP_RF_IDX_MAIN_ACTION_PTR & 0xff}
2342         },
2343         {
2344         .description = "enable",
2345         .field_bit_size = 1,
2346         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2347         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2348         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
2349         .field_opr1 = {
2350                 1}
2351         },
2352         {
2353         .description = "copy",
2354         .field_bit_size = 1,
2355         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2356         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2357         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2358         },
2359         {
2360         .description = "ign_drop",
2361         .field_bit_size = 1,
2362         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2363         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2364         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2365         },
2366         {
2367         .description = "reserved",
2368         .field_bit_size = 2,
2369         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2370         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2371         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2372         },
2373         {
2374         .description = "sp_ptr",
2375         .field_bit_size = 11,
2376         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2377         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2378         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2379         },
2380         /* act_tid: 2, wh_plus, table: shared_mirror_record.wr */
2381         {
2382         .description = "rid",
2383         .field_bit_size = 32,
2384         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2385         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2386         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
2387         .field_opr1 = {
2388                 (BNXT_ULP_RF_IDX_RID >> 8) & 0xff,
2389                 BNXT_ULP_RF_IDX_RID & 0xff}
2390         },
2391         {
2392         .description = "mirror_id",
2393         .field_bit_size = 2,
2394         .field_opc = BNXT_ULP_FIELD_OPC_SRC1_PLUS_CONST_POST,
2395         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
2396         .field_opr1 = {
2397                 (BNXT_ULP_RF_IDX_MIRROR_PTR_0 >> 8) & 0xff,
2398                 BNXT_ULP_RF_IDX_MIRROR_PTR_0 & 0xff},
2399         .field_src2 = BNXT_ULP_FIELD_SRC_CONST,
2400         .field_opr2 = {
2401                 (1 >> 8) & 0xff,
2402                 1 & 0xff}
2403         },
2404         /* act_tid: 3, wh_plus, table: int_flow_counter_tbl.0 */
2405         {
2406         .description = "count",
2407         .field_bit_size = 64,
2408         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2409         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2410         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2411         },
2412         /* act_tid: 3, wh_plus, table: act_modify_ipv4_src.0 */
2413         {
2414         .description = "ipv4_addr",
2415         .field_bit_size = 32,
2416         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2417         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2418         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
2419         .field_opr1 = {
2420                 (BNXT_ULP_ACT_PROP_IDX_SET_IPV4_SRC >> 8) & 0xff,
2421                 BNXT_ULP_ACT_PROP_IDX_SET_IPV4_SRC & 0xff}
2422         },
2423         /* act_tid: 3, wh_plus, table: act_modify_ipv4_dst.0 */
2424         {
2425         .description = "ipv4_addr",
2426         .field_bit_size = 32,
2427         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2428         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2429         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
2430         .field_opr1 = {
2431                 (BNXT_ULP_ACT_PROP_IDX_SET_IPV4_DST >> 8) & 0xff,
2432                 BNXT_ULP_ACT_PROP_IDX_SET_IPV4_DST & 0xff}
2433         },
2434         /* act_tid: 3, wh_plus, table: int_encap_mac_record.0 */
2435         {
2436         .description = "ecv_tun_type",
2437         .field_bit_size = 3,
2438         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2439         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2440         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2441         },
2442         {
2443         .description = "ecv_l4_type",
2444         .field_bit_size = 3,
2445         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2446         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2447         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2448         },
2449         {
2450         .description = "ecv_l3_type",
2451         .field_bit_size = 3,
2452         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2453         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2454         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2455         },
2456         {
2457         .description = "ecv_l2_en",
2458         .field_bit_size = 1,
2459         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2460         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2461         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
2462         .field_opr1 = {
2463                 ULP_WP_SYM_ECV_L2_EN_YES}
2464         },
2465         {
2466         .description = "ecv_vtag_type",
2467         .field_bit_size = 4,
2468         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2469         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2470         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2471         },
2472         {
2473         .description = "ecv_custom_en",
2474         .field_bit_size = 1,
2475         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2476         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2477         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2478         },
2479         {
2480         .description = "ecv_valid",
2481         .field_bit_size = 1,
2482         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2483         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2484         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
2485         .field_opr1 = {
2486                 1}
2487         },
2488         {
2489         .description = "vtag_tpid",
2490         .field_bit_size = 16,
2491         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2492         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2493         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2494         },
2495         {
2496         .description = "vtag_vid",
2497         .field_bit_size = 12,
2498         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2499         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2500         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2501         },
2502         {
2503         .description = "vtag_de",
2504         .field_bit_size = 1,
2505         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2506         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2507         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2508         },
2509         {
2510         .description = "vtag_pcp",
2511         .field_bit_size = 3,
2512         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2513         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2514         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2515         },
2516         {
2517         .description = "spare",
2518         .field_bit_size = 80,
2519         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2520         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2521         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2522         },
2523         /* act_tid: 3, wh_plus, table: int_full_act_record.0 */
2524         {
2525         .description = "flow_cntr_ptr",
2526         .field_bit_size = 14,
2527         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2528         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2529         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
2530         .field_opr1 = {
2531                 (BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 >> 8) & 0xff,
2532                 BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 & 0xff}
2533         },
2534         {
2535         .description = "age_enable",
2536         .field_bit_size = 1,
2537         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2538         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2539         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2540         },
2541         {
2542         .description = "agg_cntr_en",
2543         .field_bit_size = 1,
2544         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2545         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2546         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2547         },
2548         {
2549         .description = "rate_cntr_en",
2550         .field_bit_size = 1,
2551         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2552         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2553         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2554         },
2555         {
2556         .description = "flow_cntr_en",
2557         .field_bit_size = 1,
2558         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2559         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2560         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
2561         .field_opr1 = {
2562                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 56) & 0xff,
2563                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 48) & 0xff,
2564                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 40) & 0xff,
2565                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 32) & 0xff,
2566                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 24) & 0xff,
2567                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 16) & 0xff,
2568                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 8) & 0xff,
2569                 (uint64_t)BNXT_ULP_ACT_BIT_COUNT & 0xff}
2570         },
2571         {
2572         .description = "tcpflags_key",
2573         .field_bit_size = 8,
2574         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2575         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2576         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2577         },
2578         {
2579         .description = "tcpflags_mir",
2580         .field_bit_size = 1,
2581         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2582         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2583         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2584         },
2585         {
2586         .description = "tcpflags_match",
2587         .field_bit_size = 1,
2588         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2589         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2590         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2591         },
2592         {
2593         .description = "encap_ptr",
2594         .field_bit_size = 11,
2595         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2596         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2597         .field_src1 = BNXT_ULP_FIELD_SRC_GLB_RF,
2598         .field_opr1 = {
2599                 (BNXT_ULP_GLB_RF_IDX_ENCAP_MAC_PTR >> 8) & 0xff,
2600                 BNXT_ULP_GLB_RF_IDX_ENCAP_MAC_PTR & 0xff}
2601         },
2602         {
2603         .description = "dst_ip_ptr",
2604         .field_bit_size = 10,
2605         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2606         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2607         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
2608         .field_opr1 = {
2609                 (BNXT_ULP_RF_IDX_MODIFY_IPV4_DST_PTR_0 >> 8) & 0xff,
2610                 BNXT_ULP_RF_IDX_MODIFY_IPV4_DST_PTR_0 & 0xff}
2611         },
2612         {
2613         .description = "tcp_dst_port",
2614         .field_bit_size = 16,
2615         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2616         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_ACT_BIT,
2617         .field_cond_opr = {
2618                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 56) & 0xff,
2619                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 48) & 0xff,
2620                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 40) & 0xff,
2621                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 32) & 0xff,
2622                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 24) & 0xff,
2623                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 16) & 0xff,
2624                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 8) & 0xff,
2625                 (uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST & 0xff},
2626         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
2627         .field_opr1 = {
2628                 (BNXT_ULP_ACT_PROP_IDX_SET_TP_DST >> 8) & 0xff,
2629                 BNXT_ULP_ACT_PROP_IDX_SET_TP_DST & 0xff},
2630         .field_src2 = BNXT_ULP_FIELD_SRC_ZERO
2631         },
2632         {
2633         .description = "src_ip_ptr",
2634         .field_bit_size = 10,
2635         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2636         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2637         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
2638         .field_opr1 = {
2639                 (BNXT_ULP_RF_IDX_MODIFY_IPV4_SRC_PTR_0 >> 8) & 0xff,
2640                 BNXT_ULP_RF_IDX_MODIFY_IPV4_SRC_PTR_0 & 0xff}
2641         },
2642         {
2643         .description = "tcp_src_port",
2644         .field_bit_size = 16,
2645         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2646         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_ACT_BIT,
2647         .field_cond_opr = {
2648                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 56) & 0xff,
2649                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 48) & 0xff,
2650                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 40) & 0xff,
2651                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 32) & 0xff,
2652                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 24) & 0xff,
2653                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 16) & 0xff,
2654                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 8) & 0xff,
2655                 (uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC & 0xff},
2656         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
2657         .field_opr1 = {
2658                 (BNXT_ULP_ACT_PROP_IDX_SET_TP_SRC >> 8) & 0xff,
2659                 BNXT_ULP_ACT_PROP_IDX_SET_TP_SRC & 0xff},
2660         .field_src2 = BNXT_ULP_FIELD_SRC_ZERO
2661         },
2662         {
2663         .description = "meter_id",
2664         .field_bit_size = 10,
2665         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2666         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2667         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2668         },
2669         {
2670         .description = "l3_rdir",
2671         .field_bit_size = 1,
2672         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2673         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2674         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2675         },
2676         {
2677         .description = "tl3_rdir",
2678         .field_bit_size = 1,
2679         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2680         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2681         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2682         },
2683         {
2684         .description = "l3_ttl_dec",
2685         .field_bit_size = 1,
2686         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2687         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2688         .field_src1 = BNXT_ULP_FIELD_SRC_CF,
2689         .field_opr1 = {
2690                 (BNXT_ULP_CF_IDX_ACT_DEC_TTL >> 8) & 0xff,
2691                 BNXT_ULP_CF_IDX_ACT_DEC_TTL & 0xff}
2692         },
2693         {
2694         .description = "tl3_ttl_dec",
2695         .field_bit_size = 1,
2696         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2697         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2698         .field_src1 = BNXT_ULP_FIELD_SRC_CF,
2699         .field_opr1 = {
2700                 (BNXT_ULP_CF_IDX_ACT_T_DEC_TTL >> 8) & 0xff,
2701                 BNXT_ULP_CF_IDX_ACT_T_DEC_TTL & 0xff}
2702         },
2703         {
2704         .description = "decap_func",
2705         .field_bit_size = 4,
2706         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2707         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_HDR_BIT,
2708         .field_cond_opr = {
2709                 ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 56) & 0xff,
2710                 ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 48) & 0xff,
2711                 ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 40) & 0xff,
2712                 ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 32) & 0xff,
2713                 ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 24) & 0xff,
2714                 ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 16) & 0xff,
2715                 ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 8) & 0xff,
2716                 (uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN & 0xff},
2717         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
2718         .field_opr1 = {
2719                 ULP_WP_SYM_DECAP_FUNC_THRU_TL2},
2720         .field_src2 = BNXT_ULP_FIELD_SRC_CONST,
2721         .field_opr2 = {
2722                 ULP_WP_SYM_DECAP_FUNC_THRU_L2}
2723         },
2724         {
2725         .description = "vnic_or_vport",
2726         .field_bit_size = 12,
2727         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2728         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2729         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
2730         .field_opr1 = {
2731                 (BNXT_ULP_ACT_PROP_IDX_VNIC >> 8) & 0xff,
2732                 BNXT_ULP_ACT_PROP_IDX_VNIC & 0xff}
2733         },
2734         {
2735         .description = "pop_vlan",
2736         .field_bit_size = 1,
2737         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2738         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2739         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2740         },
2741         {
2742         .description = "meter",
2743         .field_bit_size = 1,
2744         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2745         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2746         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2747         },
2748         {
2749         .description = "mirror",
2750         .field_bit_size = 2,
2751         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2752         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2753         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2754         },
2755         {
2756         .description = "drop",
2757         .field_bit_size = 1,
2758         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2759         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2760         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2761         },
2762         {
2763         .description = "hit",
2764         .field_bit_size = 1,
2765         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2766         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2767         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2768         },
2769         {
2770         .description = "type",
2771         .field_bit_size = 1,
2772         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2773         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2774         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2775         },
2776         /* act_tid: 3, wh_plus, table: ext_full_act_record.0 */
2777         {
2778         .description = "flow_cntr_ptr",
2779         .field_bit_size = 14,
2780         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2781         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2782         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
2783         .field_opr1 = {
2784                 (BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 >> 8) & 0xff,
2785                 BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 & 0xff}
2786         },
2787         {
2788         .description = "age_enable",
2789         .field_bit_size = 1,
2790         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2791         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2792         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2793         },
2794         {
2795         .description = "agg_cntr_en",
2796         .field_bit_size = 1,
2797         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2798         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2799         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2800         },
2801         {
2802         .description = "rate_cntr_en",
2803         .field_bit_size = 1,
2804         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2805         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2806         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2807         },
2808         {
2809         .description = "flow_cntr_en",
2810         .field_bit_size = 1,
2811         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2812         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2813         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
2814         .field_opr1 = {
2815                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 56) & 0xff,
2816                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 48) & 0xff,
2817                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 40) & 0xff,
2818                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 32) & 0xff,
2819                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 24) & 0xff,
2820                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 16) & 0xff,
2821                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 8) & 0xff,
2822                 (uint64_t)BNXT_ULP_ACT_BIT_COUNT & 0xff}
2823         },
2824         {
2825         .description = "flow_cntr_ext",
2826         .field_bit_size = 1,
2827         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2828         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2829         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2830         },
2831         {
2832         .description = "tcpflags_key",
2833         .field_bit_size = 8,
2834         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2835         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2836         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2837         },
2838         {
2839         .description = "tcpflags_mir",
2840         .field_bit_size = 1,
2841         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2842         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2843         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2844         },
2845         {
2846         .description = "tcpflags_match",
2847         .field_bit_size = 1,
2848         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2849         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2850         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2851         },
2852         {
2853         .description = "encap_ptr",
2854         .field_bit_size = 11,
2855         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2856         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2857         .field_src1 = BNXT_ULP_FIELD_SRC_GLB_RF,
2858         .field_opr1 = {
2859                 (BNXT_ULP_GLB_RF_IDX_ENCAP_MAC_PTR >> 8) & 0xff,
2860                 BNXT_ULP_GLB_RF_IDX_ENCAP_MAC_PTR & 0xff}
2861         },
2862         {
2863         .description = "encap_rec_int",
2864         .field_bit_size = 1,
2865         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2866         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2867         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
2868         .field_opr1 = {
2869                 1}
2870         },
2871         {
2872         .description = "dst_ip_ptr",
2873         .field_bit_size = 10,
2874         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2875         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2876         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
2877         .field_opr1 = {
2878                 (BNXT_ULP_RF_IDX_MODIFY_IPV4_DST_PTR_0 >> 8) & 0xff,
2879                 BNXT_ULP_RF_IDX_MODIFY_IPV4_DST_PTR_0 & 0xff}
2880         },
2881         {
2882         .description = "tcp_dst_port",
2883         .field_bit_size = 16,
2884         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2885         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_ACT_BIT,
2886         .field_cond_opr = {
2887                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 56) & 0xff,
2888                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 48) & 0xff,
2889                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 40) & 0xff,
2890                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 32) & 0xff,
2891                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 24) & 0xff,
2892                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 16) & 0xff,
2893                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 8) & 0xff,
2894                 (uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST & 0xff},
2895         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
2896         .field_opr1 = {
2897                 (BNXT_ULP_ACT_PROP_IDX_SET_TP_DST >> 8) & 0xff,
2898                 BNXT_ULP_ACT_PROP_IDX_SET_TP_DST & 0xff},
2899         .field_src2 = BNXT_ULP_FIELD_SRC_ZERO
2900         },
2901         {
2902         .description = "src_ip_ptr",
2903         .field_bit_size = 10,
2904         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2905         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2906         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
2907         .field_opr1 = {
2908                 (BNXT_ULP_RF_IDX_MODIFY_IPV4_SRC_PTR_0 >> 8) & 0xff,
2909                 BNXT_ULP_RF_IDX_MODIFY_IPV4_SRC_PTR_0 & 0xff}
2910         },
2911         {
2912         .description = "tcp_src_port",
2913         .field_bit_size = 16,
2914         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2915         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_ACT_BIT,
2916         .field_cond_opr = {
2917                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 56) & 0xff,
2918                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 48) & 0xff,
2919                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 40) & 0xff,
2920                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 32) & 0xff,
2921                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 24) & 0xff,
2922                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 16) & 0xff,
2923                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 8) & 0xff,
2924                 (uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC & 0xff},
2925         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
2926         .field_opr1 = {
2927                 (BNXT_ULP_ACT_PROP_IDX_SET_TP_SRC >> 8) & 0xff,
2928                 BNXT_ULP_ACT_PROP_IDX_SET_TP_SRC & 0xff},
2929         .field_src2 = BNXT_ULP_FIELD_SRC_ZERO
2930         },
2931         {
2932         .description = "meter_id",
2933         .field_bit_size = 10,
2934         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2935         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2936         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2937         },
2938         {
2939         .description = "l3_rdir",
2940         .field_bit_size = 1,
2941         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2942         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2943         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2944         },
2945         {
2946         .description = "tl3_rdir",
2947         .field_bit_size = 1,
2948         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2949         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2950         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2951         },
2952         {
2953         .description = "l3_ttl_dec",
2954         .field_bit_size = 1,
2955         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2956         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2957         .field_src1 = BNXT_ULP_FIELD_SRC_CF,
2958         .field_opr1 = {
2959                 (BNXT_ULP_CF_IDX_ACT_DEC_TTL >> 8) & 0xff,
2960                 BNXT_ULP_CF_IDX_ACT_DEC_TTL & 0xff}
2961         },
2962         {
2963         .description = "tl3_ttl_dec",
2964         .field_bit_size = 1,
2965         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2966         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2967         .field_src1 = BNXT_ULP_FIELD_SRC_CF,
2968         .field_opr1 = {
2969                 (BNXT_ULP_CF_IDX_ACT_T_DEC_TTL >> 8) & 0xff,
2970                 BNXT_ULP_CF_IDX_ACT_T_DEC_TTL & 0xff}
2971         },
2972         {
2973         .description = "decap_func",
2974         .field_bit_size = 4,
2975         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2976         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_HDR_BIT,
2977         .field_cond_opr = {
2978                 ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 56) & 0xff,
2979                 ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 48) & 0xff,
2980                 ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 40) & 0xff,
2981                 ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 32) & 0xff,
2982                 ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 24) & 0xff,
2983                 ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 16) & 0xff,
2984                 ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 8) & 0xff,
2985                 (uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN & 0xff},
2986         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
2987         .field_opr1 = {
2988                 ULP_WP_SYM_DECAP_FUNC_THRU_TL2},
2989         .field_src2 = BNXT_ULP_FIELD_SRC_CONST,
2990         .field_opr2 = {
2991                 ULP_WP_SYM_DECAP_FUNC_THRU_L2}
2992         },
2993         {
2994         .description = "vnic_or_vport",
2995         .field_bit_size = 12,
2996         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
2997         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
2998         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
2999         .field_opr1 = {
3000                 (BNXT_ULP_ACT_PROP_IDX_VNIC >> 8) & 0xff,
3001                 BNXT_ULP_ACT_PROP_IDX_VNIC & 0xff}
3002         },
3003         {
3004         .description = "pop_vlan",
3005         .field_bit_size = 1,
3006         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3007         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3008         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3009         },
3010         {
3011         .description = "meter",
3012         .field_bit_size = 1,
3013         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3014         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3015         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3016         },
3017         {
3018         .description = "mirror",
3019         .field_bit_size = 2,
3020         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3021         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3022         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3023         },
3024         {
3025         .description = "drop",
3026         .field_bit_size = 1,
3027         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3028         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3029         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3030         },
3031         {
3032         .description = "ecv_tun_type",
3033         .field_bit_size = 3,
3034         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3035         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3036         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3037         },
3038         {
3039         .description = "ecv_l4_type",
3040         .field_bit_size = 3,
3041         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3042         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3043         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3044         },
3045         {
3046         .description = "ecv_l3_type",
3047         .field_bit_size = 3,
3048         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3049         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3050         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3051         },
3052         {
3053         .description = "ecv_l2_en",
3054         .field_bit_size = 1,
3055         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3056         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3057         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
3058         .field_opr1 = {
3059                 ULP_WP_SYM_ECV_L2_EN_YES}
3060         },
3061         {
3062         .description = "ecv_vtag_type",
3063         .field_bit_size = 4,
3064         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3065         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3066         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3067         },
3068         {
3069         .description = "ecv_custom_en",
3070         .field_bit_size = 1,
3071         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3072         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3073         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3074         },
3075         {
3076         .description = "ecv_valid",
3077         .field_bit_size = 1,
3078         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3079         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3080         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3081         },
3082         {
3083         .description = "vtag_tpid",
3084         .field_bit_size = 16,
3085         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3086         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3087         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3088         },
3089         {
3090         .description = "vtag_vid",
3091         .field_bit_size = 12,
3092         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3093         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3094         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3095         },
3096         {
3097         .description = "vtag_de",
3098         .field_bit_size = 1,
3099         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3100         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3101         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3102         },
3103         {
3104         .description = "vtag_pcp",
3105         .field_bit_size = 3,
3106         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3107         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3108         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3109         },
3110         {
3111         .description = "spare",
3112         .field_bit_size = 0,
3113         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3114         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3115         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3116         },
3117         /* act_tid: 4, wh_plus, table: int_flow_counter_tbl.0 */
3118         {
3119         .description = "count",
3120         .field_bit_size = 64,
3121         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3122         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3123         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3124         },
3125         /* act_tid: 4, wh_plus, table: int_vtag_encap_record.0 */
3126         {
3127         .description = "ecv_tun_type",
3128         .field_bit_size = 3,
3129         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3130         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3131         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3132         },
3133         {
3134         .description = "ecv_l4_type",
3135         .field_bit_size = 3,
3136         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3137         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3138         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3139         },
3140         {
3141         .description = "ecv_l3_type",
3142         .field_bit_size = 3,
3143         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3144         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3145         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3146         },
3147         {
3148         .description = "ecv_l2_en",
3149         .field_bit_size = 1,
3150         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3151         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3152         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3153         },
3154         {
3155         .description = "ecv_vtag_type",
3156         .field_bit_size = 4,
3157         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3158         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3159         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
3160         .field_opr1 = {
3161                 ULP_WP_SYM_ECV_VTAG_TYPE_ADD_1_ENCAP_PRI}
3162         },
3163         {
3164         .description = "ecv_custom_en",
3165         .field_bit_size = 1,
3166         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3167         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3168         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3169         },
3170         {
3171         .description = "ecv_valid",
3172         .field_bit_size = 1,
3173         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3174         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3175         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
3176         .field_opr1 = {
3177                 1}
3178         },
3179         {
3180         .description = "vtag_tpid",
3181         .field_bit_size = 16,
3182         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3183         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3184         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
3185         .field_opr1 = {
3186                 (BNXT_ULP_ACT_PROP_IDX_PUSH_VLAN >> 8) & 0xff,
3187                 BNXT_ULP_ACT_PROP_IDX_PUSH_VLAN & 0xff}
3188         },
3189         {
3190         .description = "vtag_vid",
3191         .field_bit_size = 12,
3192         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3193         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3194         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
3195         .field_opr1 = {
3196                 (BNXT_ULP_ACT_PROP_IDX_SET_VLAN_VID >> 8) & 0xff,
3197                 BNXT_ULP_ACT_PROP_IDX_SET_VLAN_VID & 0xff}
3198         },
3199         {
3200         .description = "vtag_de",
3201         .field_bit_size = 1,
3202         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3203         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3204         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3205         },
3206         {
3207         .description = "vtag_pcp",
3208         .field_bit_size = 3,
3209         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3210         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3211         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
3212         .field_opr1 = {
3213                 (BNXT_ULP_ACT_PROP_IDX_SET_VLAN_PCP >> 8) & 0xff,
3214                 BNXT_ULP_ACT_PROP_IDX_SET_VLAN_PCP & 0xff}
3215         },
3216         {
3217         .description = "spare",
3218         .field_bit_size = 80,
3219         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3220         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3221         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3222         },
3223         /* act_tid: 4, wh_plus, table: int_full_act_record.0 */
3224         {
3225         .description = "flow_cntr_ptr",
3226         .field_bit_size = 14,
3227         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3228         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3229         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
3230         .field_opr1 = {
3231                 (BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 >> 8) & 0xff,
3232                 BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 & 0xff}
3233         },
3234         {
3235         .description = "age_enable",
3236         .field_bit_size = 1,
3237         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3238         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3239         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3240         },
3241         {
3242         .description = "agg_cntr_en",
3243         .field_bit_size = 1,
3244         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3245         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3246         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3247         },
3248         {
3249         .description = "rate_cntr_en",
3250         .field_bit_size = 1,
3251         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3252         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3253         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3254         },
3255         {
3256         .description = "flow_cntr_en",
3257         .field_bit_size = 1,
3258         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3259         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3260         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
3261         .field_opr1 = {
3262                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 56) & 0xff,
3263                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 48) & 0xff,
3264                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 40) & 0xff,
3265                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 32) & 0xff,
3266                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 24) & 0xff,
3267                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 16) & 0xff,
3268                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 8) & 0xff,
3269                 (uint64_t)BNXT_ULP_ACT_BIT_COUNT & 0xff}
3270         },
3271         {
3272         .description = "tcpflags_key",
3273         .field_bit_size = 8,
3274         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3275         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3276         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3277         },
3278         {
3279         .description = "tcpflags_mir",
3280         .field_bit_size = 1,
3281         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3282         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3283         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3284         },
3285         {
3286         .description = "tcpflags_match",
3287         .field_bit_size = 1,
3288         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3289         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3290         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3291         },
3292         {
3293         .description = "encap_ptr",
3294         .field_bit_size = 11,
3295         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3296         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3297         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
3298         .field_opr1 = {
3299                 (BNXT_ULP_RF_IDX_ENCAP_PTR_0 >> 8) & 0xff,
3300                 BNXT_ULP_RF_IDX_ENCAP_PTR_0 & 0xff}
3301         },
3302         {
3303         .description = "dst_ip_ptr",
3304         .field_bit_size = 10,
3305         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3306         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3307         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3308         },
3309         {
3310         .description = "tcp_dst_port",
3311         .field_bit_size = 16,
3312         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3313         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3314         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3315         },
3316         {
3317         .description = "src_ip_ptr",
3318         .field_bit_size = 10,
3319         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3320         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3321         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3322         },
3323         {
3324         .description = "tcp_src_port",
3325         .field_bit_size = 16,
3326         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3327         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3328         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3329         },
3330         {
3331         .description = "meter_id",
3332         .field_bit_size = 10,
3333         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3334         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3335         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3336         },
3337         {
3338         .description = "l3_rdir",
3339         .field_bit_size = 1,
3340         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3341         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3342         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3343         },
3344         {
3345         .description = "tl3_rdir",
3346         .field_bit_size = 1,
3347         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3348         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3349         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3350         },
3351         {
3352         .description = "l3_ttl_dec",
3353         .field_bit_size = 1,
3354         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3355         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3356         .field_src1 = BNXT_ULP_FIELD_SRC_CF,
3357         .field_opr1 = {
3358                 (BNXT_ULP_CF_IDX_ACT_DEC_TTL >> 8) & 0xff,
3359                 BNXT_ULP_CF_IDX_ACT_DEC_TTL & 0xff}
3360         },
3361         {
3362         .description = "tl3_ttl_dec",
3363         .field_bit_size = 1,
3364         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3365         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3366         .field_src1 = BNXT_ULP_FIELD_SRC_CF,
3367         .field_opr1 = {
3368                 (BNXT_ULP_CF_IDX_ACT_T_DEC_TTL >> 8) & 0xff,
3369                 BNXT_ULP_CF_IDX_ACT_T_DEC_TTL & 0xff}
3370         },
3371         {
3372         .description = "decap_func",
3373         .field_bit_size = 4,
3374         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3375         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3376         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3377         },
3378         {
3379         .description = "vnic_or_vport",
3380         .field_bit_size = 12,
3381         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3382         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3383         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
3384         .field_opr1 = {
3385                 (BNXT_ULP_ACT_PROP_IDX_VPORT >> 8) & 0xff,
3386                 BNXT_ULP_ACT_PROP_IDX_VPORT & 0xff}
3387         },
3388         {
3389         .description = "pop_vlan",
3390         .field_bit_size = 1,
3391         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3392         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3393         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3394         },
3395         {
3396         .description = "meter",
3397         .field_bit_size = 1,
3398         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3399         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3400         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3401         },
3402         {
3403         .description = "mirror",
3404         .field_bit_size = 2,
3405         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3406         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3407         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3408         },
3409         {
3410         .description = "drop",
3411         .field_bit_size = 1,
3412         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3413         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3414         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
3415         .field_opr1 = {
3416                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 56) & 0xff,
3417                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 48) & 0xff,
3418                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 40) & 0xff,
3419                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 32) & 0xff,
3420                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 24) & 0xff,
3421                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 16) & 0xff,
3422                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 8) & 0xff,
3423                 (uint64_t)BNXT_ULP_ACT_BIT_DROP & 0xff}
3424         },
3425         {
3426         .description = "hit",
3427         .field_bit_size = 1,
3428         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3429         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3430         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3431         },
3432         {
3433         .description = "type",
3434         .field_bit_size = 1,
3435         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3436         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3437         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3438         },
3439         /* act_tid: 4, wh_plus, table: ext_full_act_record.no_tag */
3440         {
3441         .description = "flow_cntr_ptr",
3442         .field_bit_size = 14,
3443         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3444         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3445         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
3446         .field_opr1 = {
3447                 (BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 >> 8) & 0xff,
3448                 BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 & 0xff}
3449         },
3450         {
3451         .description = "age_enable",
3452         .field_bit_size = 1,
3453         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3454         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3455         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3456         },
3457         {
3458         .description = "agg_cntr_en",
3459         .field_bit_size = 1,
3460         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3461         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3462         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3463         },
3464         {
3465         .description = "rate_cntr_en",
3466         .field_bit_size = 1,
3467         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3468         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3469         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3470         },
3471         {
3472         .description = "flow_cntr_en",
3473         .field_bit_size = 1,
3474         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3475         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3476         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
3477         .field_opr1 = {
3478                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 56) & 0xff,
3479                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 48) & 0xff,
3480                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 40) & 0xff,
3481                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 32) & 0xff,
3482                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 24) & 0xff,
3483                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 16) & 0xff,
3484                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 8) & 0xff,
3485                 (uint64_t)BNXT_ULP_ACT_BIT_COUNT & 0xff}
3486         },
3487         {
3488         .description = "flow_cntr_ext",
3489         .field_bit_size = 1,
3490         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3491         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3492         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3493         },
3494         {
3495         .description = "tcpflags_key",
3496         .field_bit_size = 8,
3497         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3498         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3499         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3500         },
3501         {
3502         .description = "tcpflags_mir",
3503         .field_bit_size = 1,
3504         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3505         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3506         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3507         },
3508         {
3509         .description = "tcpflags_match",
3510         .field_bit_size = 1,
3511         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3512         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3513         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3514         },
3515         {
3516         .description = "encap_ptr",
3517         .field_bit_size = 11,
3518         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3519         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3520         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3521         },
3522         {
3523         .description = "encap_rec_int",
3524         .field_bit_size = 1,
3525         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3526         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3527         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3528         },
3529         {
3530         .description = "dst_ip_ptr",
3531         .field_bit_size = 10,
3532         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3533         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3534         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3535         },
3536         {
3537         .description = "tcp_dst_port",
3538         .field_bit_size = 16,
3539         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3540         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3541         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3542         },
3543         {
3544         .description = "src_ip_ptr",
3545         .field_bit_size = 10,
3546         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3547         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3548         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3549         },
3550         {
3551         .description = "tcp_src_port",
3552         .field_bit_size = 16,
3553         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3554         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3555         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3556         },
3557         {
3558         .description = "meter_id",
3559         .field_bit_size = 10,
3560         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3561         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3562         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3563         },
3564         {
3565         .description = "l3_rdir",
3566         .field_bit_size = 1,
3567         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3568         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3569         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3570         },
3571         {
3572         .description = "tl3_rdir",
3573         .field_bit_size = 1,
3574         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3575         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3576         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3577         },
3578         {
3579         .description = "l3_ttl_dec",
3580         .field_bit_size = 1,
3581         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3582         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3583         .field_src1 = BNXT_ULP_FIELD_SRC_CF,
3584         .field_opr1 = {
3585                 (BNXT_ULP_CF_IDX_ACT_DEC_TTL >> 8) & 0xff,
3586                 BNXT_ULP_CF_IDX_ACT_DEC_TTL & 0xff}
3587         },
3588         {
3589         .description = "tl3_ttl_dec",
3590         .field_bit_size = 1,
3591         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3592         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3593         .field_src1 = BNXT_ULP_FIELD_SRC_CF,
3594         .field_opr1 = {
3595                 (BNXT_ULP_CF_IDX_ACT_T_DEC_TTL >> 8) & 0xff,
3596                 BNXT_ULP_CF_IDX_ACT_T_DEC_TTL & 0xff}
3597         },
3598         {
3599         .description = "decap_func",
3600         .field_bit_size = 4,
3601         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3602         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3603         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3604         },
3605         {
3606         .description = "vnic_or_vport",
3607         .field_bit_size = 12,
3608         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3609         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3610         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
3611         .field_opr1 = {
3612                 (BNXT_ULP_ACT_PROP_IDX_VPORT >> 8) & 0xff,
3613                 BNXT_ULP_ACT_PROP_IDX_VPORT & 0xff}
3614         },
3615         {
3616         .description = "pop_vlan",
3617         .field_bit_size = 1,
3618         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3619         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3620         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3621         },
3622         {
3623         .description = "meter",
3624         .field_bit_size = 1,
3625         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3626         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3627         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3628         },
3629         {
3630         .description = "mirror",
3631         .field_bit_size = 2,
3632         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3633         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3634         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3635         },
3636         {
3637         .description = "drop",
3638         .field_bit_size = 1,
3639         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3640         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3641         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
3642         .field_opr1 = {
3643                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 56) & 0xff,
3644                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 48) & 0xff,
3645                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 40) & 0xff,
3646                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 32) & 0xff,
3647                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 24) & 0xff,
3648                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 16) & 0xff,
3649                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 8) & 0xff,
3650                 (uint64_t)BNXT_ULP_ACT_BIT_DROP & 0xff}
3651         },
3652         {
3653         .description = "ecv_tun_type",
3654         .field_bit_size = 3,
3655         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3656         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3657         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3658         },
3659         {
3660         .description = "ecv_l4_type",
3661         .field_bit_size = 3,
3662         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3663         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3664         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3665         },
3666         {
3667         .description = "ecv_l3_type",
3668         .field_bit_size = 3,
3669         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3670         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3671         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3672         },
3673         {
3674         .description = "ecv_l2_en",
3675         .field_bit_size = 1,
3676         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3677         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3678         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
3679         .field_opr1 = {
3680                 ULP_WP_SYM_ECV_L2_EN_YES}
3681         },
3682         {
3683         .description = "ecv_vtag_type",
3684         .field_bit_size = 4,
3685         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3686         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3687         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3688         },
3689         {
3690         .description = "ecv_custom_en",
3691         .field_bit_size = 1,
3692         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3693         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3694         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3695         },
3696         {
3697         .description = "ecv_valid",
3698         .field_bit_size = 1,
3699         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3700         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3701         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3702         },
3703         {
3704         .description = "vtag_tpid",
3705         .field_bit_size = 16,
3706         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3707         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3708         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3709         },
3710         {
3711         .description = "vtag_vid",
3712         .field_bit_size = 12,
3713         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3714         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3715         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3716         },
3717         {
3718         .description = "vtag_de",
3719         .field_bit_size = 1,
3720         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3721         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3722         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3723         },
3724         {
3725         .description = "vtag_pcp",
3726         .field_bit_size = 3,
3727         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3728         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3729         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3730         },
3731         {
3732         .description = "spare",
3733         .field_bit_size = 0,
3734         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3735         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3736         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3737         },
3738         /* act_tid: 4, wh_plus, table: ext_full_act_record.one_tag */
3739         {
3740         .description = "flow_cntr_ptr",
3741         .field_bit_size = 14,
3742         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3743         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3744         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
3745         .field_opr1 = {
3746                 (BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 >> 8) & 0xff,
3747                 BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 & 0xff}
3748         },
3749         {
3750         .description = "age_enable",
3751         .field_bit_size = 1,
3752         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3753         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3754         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3755         },
3756         {
3757         .description = "agg_cntr_en",
3758         .field_bit_size = 1,
3759         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3760         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3761         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3762         },
3763         {
3764         .description = "rate_cntr_en",
3765         .field_bit_size = 1,
3766         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3767         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3768         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3769         },
3770         {
3771         .description = "flow_cntr_en",
3772         .field_bit_size = 1,
3773         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3774         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3775         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
3776         .field_opr1 = {
3777                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 56) & 0xff,
3778                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 48) & 0xff,
3779                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 40) & 0xff,
3780                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 32) & 0xff,
3781                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 24) & 0xff,
3782                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 16) & 0xff,
3783                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 8) & 0xff,
3784                 (uint64_t)BNXT_ULP_ACT_BIT_COUNT & 0xff}
3785         },
3786         {
3787         .description = "flow_cntr_ext",
3788         .field_bit_size = 1,
3789         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3790         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3791         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3792         },
3793         {
3794         .description = "tcpflags_key",
3795         .field_bit_size = 8,
3796         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3797         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3798         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3799         },
3800         {
3801         .description = "tcpflags_mir",
3802         .field_bit_size = 1,
3803         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3804         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3805         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3806         },
3807         {
3808         .description = "tcpflags_match",
3809         .field_bit_size = 1,
3810         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3811         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3812         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3813         },
3814         {
3815         .description = "encap_ptr",
3816         .field_bit_size = 11,
3817         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3818         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3819         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3820         },
3821         {
3822         .description = "encap_rec_int",
3823         .field_bit_size = 1,
3824         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3825         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3826         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3827         },
3828         {
3829         .description = "dst_ip_ptr",
3830         .field_bit_size = 10,
3831         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3832         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3833         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3834         },
3835         {
3836         .description = "tcp_dst_port",
3837         .field_bit_size = 16,
3838         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3839         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3840         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3841         },
3842         {
3843         .description = "src_ip_ptr",
3844         .field_bit_size = 10,
3845         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3846         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3847         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3848         },
3849         {
3850         .description = "tcp_src_port",
3851         .field_bit_size = 16,
3852         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3853         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3854         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3855         },
3856         {
3857         .description = "meter_id",
3858         .field_bit_size = 10,
3859         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3860         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3861         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3862         },
3863         {
3864         .description = "l3_rdir",
3865         .field_bit_size = 1,
3866         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3867         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3868         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3869         },
3870         {
3871         .description = "tl3_rdir",
3872         .field_bit_size = 1,
3873         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3874         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3875         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3876         },
3877         {
3878         .description = "l3_ttl_dec",
3879         .field_bit_size = 1,
3880         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3881         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3882         .field_src1 = BNXT_ULP_FIELD_SRC_CF,
3883         .field_opr1 = {
3884                 (BNXT_ULP_CF_IDX_ACT_DEC_TTL >> 8) & 0xff,
3885                 BNXT_ULP_CF_IDX_ACT_DEC_TTL & 0xff}
3886         },
3887         {
3888         .description = "tl3_ttl_dec",
3889         .field_bit_size = 1,
3890         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3891         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3892         .field_src1 = BNXT_ULP_FIELD_SRC_CF,
3893         .field_opr1 = {
3894                 (BNXT_ULP_CF_IDX_ACT_T_DEC_TTL >> 8) & 0xff,
3895                 BNXT_ULP_CF_IDX_ACT_T_DEC_TTL & 0xff}
3896         },
3897         {
3898         .description = "decap_func",
3899         .field_bit_size = 4,
3900         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3901         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3902         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3903         },
3904         {
3905         .description = "vnic_or_vport",
3906         .field_bit_size = 12,
3907         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3908         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3909         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
3910         .field_opr1 = {
3911                 (BNXT_ULP_ACT_PROP_IDX_VPORT >> 8) & 0xff,
3912                 BNXT_ULP_ACT_PROP_IDX_VPORT & 0xff}
3913         },
3914         {
3915         .description = "pop_vlan",
3916         .field_bit_size = 1,
3917         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3918         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3919         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
3920         .field_opr1 = {
3921                 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 56) & 0xff,
3922                 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 48) & 0xff,
3923                 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 40) & 0xff,
3924                 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 32) & 0xff,
3925                 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 24) & 0xff,
3926                 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 16) & 0xff,
3927                 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 8) & 0xff,
3928                 (uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN & 0xff}
3929         },
3930         {
3931         .description = "meter",
3932         .field_bit_size = 1,
3933         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3934         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3935         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3936         },
3937         {
3938         .description = "mirror",
3939         .field_bit_size = 2,
3940         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3941         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3942         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3943         },
3944         {
3945         .description = "drop",
3946         .field_bit_size = 1,
3947         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3948         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3949         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
3950         .field_opr1 = {
3951                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 56) & 0xff,
3952                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 48) & 0xff,
3953                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 40) & 0xff,
3954                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 32) & 0xff,
3955                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 24) & 0xff,
3956                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 16) & 0xff,
3957                 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 8) & 0xff,
3958                 (uint64_t)BNXT_ULP_ACT_BIT_DROP & 0xff}
3959         },
3960         {
3961         .description = "ecv_tun_type",
3962         .field_bit_size = 3,
3963         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3964         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3965         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3966         },
3967         {
3968         .description = "ecv_l4_type",
3969         .field_bit_size = 3,
3970         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3971         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3972         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3973         },
3974         {
3975         .description = "ecv_l3_type",
3976         .field_bit_size = 3,
3977         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3978         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3979         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3980         },
3981         {
3982         .description = "ecv_l2_en",
3983         .field_bit_size = 1,
3984         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3985         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3986         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3987         },
3988         {
3989         .description = "ecv_vtag_type",
3990         .field_bit_size = 4,
3991         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
3992         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
3993         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
3994         .field_opr1 = {
3995                 ULP_WP_SYM_ECV_VTAG_TYPE_ADD_1_ENCAP_PRI}
3996         },
3997         {
3998         .description = "ecv_custom_en",
3999         .field_bit_size = 1,
4000         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4001         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4002         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4003         },
4004         {
4005         .description = "ecv_valid",
4006         .field_bit_size = 1,
4007         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4008         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4009         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
4010         .field_opr1 = {
4011                 1}
4012         },
4013         {
4014         .description = "vtag_tpid",
4015         .field_bit_size = 16,
4016         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4017         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4018         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
4019         .field_opr1 = {
4020                 (BNXT_ULP_ACT_PROP_IDX_PUSH_VLAN >> 8) & 0xff,
4021                 BNXT_ULP_ACT_PROP_IDX_PUSH_VLAN & 0xff}
4022         },
4023         {
4024         .description = "vtag_vid",
4025         .field_bit_size = 12,
4026         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4027         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4028         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
4029         .field_opr1 = {
4030                 (BNXT_ULP_ACT_PROP_IDX_SET_VLAN_VID >> 8) & 0xff,
4031                 BNXT_ULP_ACT_PROP_IDX_SET_VLAN_VID & 0xff}
4032         },
4033         {
4034         .description = "vtag_de",
4035         .field_bit_size = 1,
4036         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4037         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4038         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4039         },
4040         {
4041         .description = "vtag_pcp",
4042         .field_bit_size = 3,
4043         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4044         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4045         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
4046         .field_opr1 = {
4047                 (BNXT_ULP_ACT_PROP_IDX_SET_VLAN_PCP >> 8) & 0xff,
4048                 BNXT_ULP_ACT_PROP_IDX_SET_VLAN_PCP & 0xff}
4049         },
4050         {
4051         .description = "spare",
4052         .field_bit_size = 0,
4053         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4054         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4055         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4056         },
4057         /* act_tid: 5, wh_plus, table: int_flow_counter_tbl.0 */
4058         {
4059         .description = "count",
4060         .field_bit_size = 64,
4061         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4062         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4063         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4064         },
4065         /* act_tid: 5, wh_plus, table: act_modify_ipv4_src.0 */
4066         {
4067         .description = "ipv4_addr",
4068         .field_bit_size = 32,
4069         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4070         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4071         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
4072         .field_opr1 = {
4073                 (BNXT_ULP_ACT_PROP_IDX_SET_IPV4_SRC >> 8) & 0xff,
4074                 BNXT_ULP_ACT_PROP_IDX_SET_IPV4_SRC & 0xff}
4075         },
4076         /* act_tid: 5, wh_plus, table: act_modify_ipv4_dst.0 */
4077         {
4078         .description = "ipv4_addr",
4079         .field_bit_size = 32,
4080         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4081         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4082         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
4083         .field_opr1 = {
4084                 (BNXT_ULP_ACT_PROP_IDX_SET_IPV4_DST >> 8) & 0xff,
4085                 BNXT_ULP_ACT_PROP_IDX_SET_IPV4_DST & 0xff}
4086         },
4087         /* act_tid: 5, wh_plus, table: int_encap_mac_record.dummy */
4088         {
4089         .description = "ecv_tun_type",
4090         .field_bit_size = 3,
4091         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4092         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4093         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4094         },
4095         {
4096         .description = "ecv_l4_type",
4097         .field_bit_size = 3,
4098         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4099         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4100         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4101         },
4102         {
4103         .description = "ecv_l3_type",
4104         .field_bit_size = 3,
4105         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4106         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4107         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4108         },
4109         {
4110         .description = "ecv_l2_en",
4111         .field_bit_size = 1,
4112         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4113         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4114         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
4115         .field_opr1 = {
4116                 ULP_WP_SYM_ECV_L2_EN_YES}
4117         },
4118         {
4119         .description = "ecv_vtag_type",
4120         .field_bit_size = 4,
4121         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4122         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4123         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4124         },
4125         {
4126         .description = "ecv_custom_en",
4127         .field_bit_size = 1,
4128         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4129         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4130         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4131         },
4132         {
4133         .description = "ecv_valid",
4134         .field_bit_size = 1,
4135         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4136         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4137         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
4138         .field_opr1 = {
4139                 1}
4140         },
4141         {
4142         .description = "vtag_tpid",
4143         .field_bit_size = 16,
4144         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4145         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4146         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4147         },
4148         {
4149         .description = "vtag_vid",
4150         .field_bit_size = 12,
4151         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4152         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4153         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4154         },
4155         {
4156         .description = "vtag_de",
4157         .field_bit_size = 1,
4158         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4159         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4160         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4161         },
4162         {
4163         .description = "vtag_pcp",
4164         .field_bit_size = 3,
4165         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4166         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4167         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4168         },
4169         {
4170         .description = "spare",
4171         .field_bit_size = 80,
4172         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4173         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4174         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4175         },
4176         /* act_tid: 5, wh_plus, table: int_full_act_record.0 */
4177         {
4178         .description = "flow_cntr_ptr",
4179         .field_bit_size = 14,
4180         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4181         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4182         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
4183         .field_opr1 = {
4184                 (BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 >> 8) & 0xff,
4185                 BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 & 0xff}
4186         },
4187         {
4188         .description = "age_enable",
4189         .field_bit_size = 1,
4190         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4191         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4192         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4193         },
4194         {
4195         .description = "agg_cntr_en",
4196         .field_bit_size = 1,
4197         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4198         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4199         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4200         },
4201         {
4202         .description = "rate_cntr_en",
4203         .field_bit_size = 1,
4204         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4205         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4206         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4207         },
4208         {
4209         .description = "flow_cntr_en",
4210         .field_bit_size = 1,
4211         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4212         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4213         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
4214         .field_opr1 = {
4215                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 56) & 0xff,
4216                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 48) & 0xff,
4217                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 40) & 0xff,
4218                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 32) & 0xff,
4219                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 24) & 0xff,
4220                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 16) & 0xff,
4221                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 8) & 0xff,
4222                 (uint64_t)BNXT_ULP_ACT_BIT_COUNT & 0xff}
4223         },
4224         {
4225         .description = "tcpflags_key",
4226         .field_bit_size = 8,
4227         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4228         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4229         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4230         },
4231         {
4232         .description = "tcpflags_mir",
4233         .field_bit_size = 1,
4234         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4235         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4236         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4237         },
4238         {
4239         .description = "tcpflags_match",
4240         .field_bit_size = 1,
4241         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4242         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4243         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4244         },
4245         {
4246         .description = "encap_ptr",
4247         .field_bit_size = 11,
4248         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4249         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4250         .field_src1 = BNXT_ULP_FIELD_SRC_GLB_RF,
4251         .field_opr1 = {
4252                 (BNXT_ULP_GLB_RF_IDX_ENCAP_MAC_PTR >> 8) & 0xff,
4253                 BNXT_ULP_GLB_RF_IDX_ENCAP_MAC_PTR & 0xff}
4254         },
4255         {
4256         .description = "dst_ip_ptr",
4257         .field_bit_size = 10,
4258         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4259         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4260         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
4261         .field_opr1 = {
4262                 (BNXT_ULP_RF_IDX_MODIFY_IPV4_DST_PTR_0 >> 8) & 0xff,
4263                 BNXT_ULP_RF_IDX_MODIFY_IPV4_DST_PTR_0 & 0xff}
4264         },
4265         {
4266         .description = "tcp_dst_port",
4267         .field_bit_size = 16,
4268         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4269         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_ACT_BIT,
4270         .field_cond_opr = {
4271                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 56) & 0xff,
4272                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 48) & 0xff,
4273                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 40) & 0xff,
4274                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 32) & 0xff,
4275                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 24) & 0xff,
4276                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 16) & 0xff,
4277                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 8) & 0xff,
4278                 (uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST & 0xff},
4279         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
4280         .field_opr1 = {
4281                 (BNXT_ULP_ACT_PROP_IDX_SET_TP_DST >> 8) & 0xff,
4282                 BNXT_ULP_ACT_PROP_IDX_SET_TP_DST & 0xff},
4283         .field_src2 = BNXT_ULP_FIELD_SRC_ZERO
4284         },
4285         {
4286         .description = "src_ip_ptr",
4287         .field_bit_size = 10,
4288         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4289         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4290         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
4291         .field_opr1 = {
4292                 (BNXT_ULP_RF_IDX_MODIFY_IPV4_SRC_PTR_0 >> 8) & 0xff,
4293                 BNXT_ULP_RF_IDX_MODIFY_IPV4_SRC_PTR_0 & 0xff}
4294         },
4295         {
4296         .description = "tcp_src_port",
4297         .field_bit_size = 16,
4298         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4299         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_ACT_BIT,
4300         .field_cond_opr = {
4301                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 56) & 0xff,
4302                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 48) & 0xff,
4303                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 40) & 0xff,
4304                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 32) & 0xff,
4305                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 24) & 0xff,
4306                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 16) & 0xff,
4307                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 8) & 0xff,
4308                 (uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC & 0xff},
4309         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
4310         .field_opr1 = {
4311                 (BNXT_ULP_ACT_PROP_IDX_SET_TP_SRC >> 8) & 0xff,
4312                 BNXT_ULP_ACT_PROP_IDX_SET_TP_SRC & 0xff},
4313         .field_src2 = BNXT_ULP_FIELD_SRC_ZERO
4314         },
4315         {
4316         .description = "meter_id",
4317         .field_bit_size = 10,
4318         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4319         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4320         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4321         },
4322         {
4323         .description = "l3_rdir",
4324         .field_bit_size = 1,
4325         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4326         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4327         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4328         },
4329         {
4330         .description = "tl3_rdir",
4331         .field_bit_size = 1,
4332         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4333         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4334         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4335         },
4336         {
4337         .description = "l3_ttl_dec",
4338         .field_bit_size = 1,
4339         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4340         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4341         .field_src1 = BNXT_ULP_FIELD_SRC_CF,
4342         .field_opr1 = {
4343                 (BNXT_ULP_CF_IDX_ACT_DEC_TTL >> 8) & 0xff,
4344                 BNXT_ULP_CF_IDX_ACT_DEC_TTL & 0xff}
4345         },
4346         {
4347         .description = "tl3_ttl_dec",
4348         .field_bit_size = 1,
4349         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4350         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4351         .field_src1 = BNXT_ULP_FIELD_SRC_CF,
4352         .field_opr1 = {
4353                 (BNXT_ULP_CF_IDX_ACT_T_DEC_TTL >> 8) & 0xff,
4354                 BNXT_ULP_CF_IDX_ACT_T_DEC_TTL & 0xff}
4355         },
4356         {
4357         .description = "decap_func",
4358         .field_bit_size = 4,
4359         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4360         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_HDR_BIT,
4361         .field_cond_opr = {
4362                 ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 56) & 0xff,
4363                 ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 48) & 0xff,
4364                 ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 40) & 0xff,
4365                 ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 32) & 0xff,
4366                 ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 24) & 0xff,
4367                 ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 16) & 0xff,
4368                 ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 8) & 0xff,
4369                 (uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN & 0xff},
4370         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
4371         .field_opr1 = {
4372                 ULP_WP_SYM_DECAP_FUNC_THRU_TL2},
4373         .field_src2 = BNXT_ULP_FIELD_SRC_CONST,
4374         .field_opr2 = {
4375                 ULP_WP_SYM_DECAP_FUNC_THRU_L2}
4376         },
4377         {
4378         .description = "vnic_or_vport",
4379         .field_bit_size = 12,
4380         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4381         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4382         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
4383         .field_opr1 = {
4384                 (BNXT_ULP_ACT_PROP_IDX_VPORT >> 8) & 0xff,
4385                 BNXT_ULP_ACT_PROP_IDX_VPORT & 0xff}
4386         },
4387         {
4388         .description = "pop_vlan",
4389         .field_bit_size = 1,
4390         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4391         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4392         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4393         },
4394         {
4395         .description = "meter",
4396         .field_bit_size = 1,
4397         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4398         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4399         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4400         },
4401         {
4402         .description = "mirror",
4403         .field_bit_size = 2,
4404         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4405         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4406         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4407         },
4408         {
4409         .description = "drop",
4410         .field_bit_size = 1,
4411         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4412         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4413         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4414         },
4415         {
4416         .description = "hit",
4417         .field_bit_size = 1,
4418         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4419         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4420         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4421         },
4422         {
4423         .description = "type",
4424         .field_bit_size = 1,
4425         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4426         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4427         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4428         },
4429         /* act_tid: 5, wh_plus, table: ext_full_act_record.0 */
4430         {
4431         .description = "flow_cntr_ptr",
4432         .field_bit_size = 14,
4433         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4434         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4435         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
4436         .field_opr1 = {
4437                 (BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 >> 8) & 0xff,
4438                 BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 & 0xff}
4439         },
4440         {
4441         .description = "age_enable",
4442         .field_bit_size = 1,
4443         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4444         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4445         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4446         },
4447         {
4448         .description = "agg_cntr_en",
4449         .field_bit_size = 1,
4450         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4451         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4452         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4453         },
4454         {
4455         .description = "rate_cntr_en",
4456         .field_bit_size = 1,
4457         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4458         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4459         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4460         },
4461         {
4462         .description = "flow_cntr_en",
4463         .field_bit_size = 1,
4464         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4465         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4466         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
4467         .field_opr1 = {
4468                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 56) & 0xff,
4469                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 48) & 0xff,
4470                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 40) & 0xff,
4471                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 32) & 0xff,
4472                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 24) & 0xff,
4473                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 16) & 0xff,
4474                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 8) & 0xff,
4475                 (uint64_t)BNXT_ULP_ACT_BIT_COUNT & 0xff}
4476         },
4477         {
4478         .description = "flow_cntr_ext",
4479         .field_bit_size = 1,
4480         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4481         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4482         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4483         },
4484         {
4485         .description = "tcpflags_key",
4486         .field_bit_size = 8,
4487         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4488         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4489         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4490         },
4491         {
4492         .description = "tcpflags_mir",
4493         .field_bit_size = 1,
4494         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4495         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4496         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4497         },
4498         {
4499         .description = "tcpflags_match",
4500         .field_bit_size = 1,
4501         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4502         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4503         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4504         },
4505         {
4506         .description = "encap_ptr",
4507         .field_bit_size = 11,
4508         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4509         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4510         .field_src1 = BNXT_ULP_FIELD_SRC_GLB_RF,
4511         .field_opr1 = {
4512                 (BNXT_ULP_GLB_RF_IDX_ENCAP_MAC_PTR >> 8) & 0xff,
4513                 BNXT_ULP_GLB_RF_IDX_ENCAP_MAC_PTR & 0xff}
4514         },
4515         {
4516         .description = "encap_rec_int",
4517         .field_bit_size = 1,
4518         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4519         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4520         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
4521         .field_opr1 = {
4522                 1}
4523         },
4524         {
4525         .description = "dst_ip_ptr",
4526         .field_bit_size = 10,
4527         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4528         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4529         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
4530         .field_opr1 = {
4531                 (BNXT_ULP_RF_IDX_MODIFY_IPV4_DST_PTR_0 >> 8) & 0xff,
4532                 BNXT_ULP_RF_IDX_MODIFY_IPV4_DST_PTR_0 & 0xff}
4533         },
4534         {
4535         .description = "tcp_dst_port",
4536         .field_bit_size = 16,
4537         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4538         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_ACT_BIT,
4539         .field_cond_opr = {
4540                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 56) & 0xff,
4541                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 48) & 0xff,
4542                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 40) & 0xff,
4543                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 32) & 0xff,
4544                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 24) & 0xff,
4545                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 16) & 0xff,
4546                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 8) & 0xff,
4547                 (uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST & 0xff},
4548         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
4549         .field_opr1 = {
4550                 (BNXT_ULP_ACT_PROP_IDX_SET_TP_DST >> 8) & 0xff,
4551                 BNXT_ULP_ACT_PROP_IDX_SET_TP_DST & 0xff},
4552         .field_src2 = BNXT_ULP_FIELD_SRC_ZERO
4553         },
4554         {
4555         .description = "src_ip_ptr",
4556         .field_bit_size = 10,
4557         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4558         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4559         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
4560         .field_opr1 = {
4561                 (BNXT_ULP_RF_IDX_MODIFY_IPV4_SRC_PTR_0 >> 8) & 0xff,
4562                 BNXT_ULP_RF_IDX_MODIFY_IPV4_SRC_PTR_0 & 0xff}
4563         },
4564         {
4565         .description = "tcp_src_port",
4566         .field_bit_size = 16,
4567         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4568         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_ACT_BIT,
4569         .field_cond_opr = {
4570                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 56) & 0xff,
4571                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 48) & 0xff,
4572                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 40) & 0xff,
4573                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 32) & 0xff,
4574                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 24) & 0xff,
4575                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 16) & 0xff,
4576                 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 8) & 0xff,
4577                 (uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC & 0xff},
4578         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
4579         .field_opr1 = {
4580                 (BNXT_ULP_ACT_PROP_IDX_SET_TP_SRC >> 8) & 0xff,
4581                 BNXT_ULP_ACT_PROP_IDX_SET_TP_SRC & 0xff},
4582         .field_src2 = BNXT_ULP_FIELD_SRC_ZERO
4583         },
4584         {
4585         .description = "meter_id",
4586         .field_bit_size = 10,
4587         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4588         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4589         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4590         },
4591         {
4592         .description = "l3_rdir",
4593         .field_bit_size = 1,
4594         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4595         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4596         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4597         },
4598         {
4599         .description = "tl3_rdir",
4600         .field_bit_size = 1,
4601         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4602         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4603         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4604         },
4605         {
4606         .description = "l3_ttl_dec",
4607         .field_bit_size = 1,
4608         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4609         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4610         .field_src1 = BNXT_ULP_FIELD_SRC_CF,
4611         .field_opr1 = {
4612                 (BNXT_ULP_CF_IDX_ACT_DEC_TTL >> 8) & 0xff,
4613                 BNXT_ULP_CF_IDX_ACT_DEC_TTL & 0xff}
4614         },
4615         {
4616         .description = "tl3_ttl_dec",
4617         .field_bit_size = 1,
4618         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4619         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4620         .field_src1 = BNXT_ULP_FIELD_SRC_CF,
4621         .field_opr1 = {
4622                 (BNXT_ULP_CF_IDX_ACT_T_DEC_TTL >> 8) & 0xff,
4623                 BNXT_ULP_CF_IDX_ACT_T_DEC_TTL & 0xff}
4624         },
4625         {
4626         .description = "decap_func",
4627         .field_bit_size = 4,
4628         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4629         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_HDR_BIT,
4630         .field_cond_opr = {
4631                 ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 56) & 0xff,
4632                 ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 48) & 0xff,
4633                 ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 40) & 0xff,
4634                 ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 32) & 0xff,
4635                 ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 24) & 0xff,
4636                 ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 16) & 0xff,
4637                 ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 8) & 0xff,
4638                 (uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN & 0xff},
4639         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
4640         .field_opr1 = {
4641                 ULP_WP_SYM_DECAP_FUNC_THRU_TL2},
4642         .field_src2 = BNXT_ULP_FIELD_SRC_CONST,
4643         .field_opr2 = {
4644                 ULP_WP_SYM_DECAP_FUNC_THRU_L2}
4645         },
4646         {
4647         .description = "vnic_or_vport",
4648         .field_bit_size = 12,
4649         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4650         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4651         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
4652         .field_opr1 = {
4653                 (BNXT_ULP_ACT_PROP_IDX_VPORT >> 8) & 0xff,
4654                 BNXT_ULP_ACT_PROP_IDX_VPORT & 0xff}
4655         },
4656         {
4657         .description = "pop_vlan",
4658         .field_bit_size = 1,
4659         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4660         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4661         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4662         },
4663         {
4664         .description = "meter",
4665         .field_bit_size = 1,
4666         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4667         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4668         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4669         },
4670         {
4671         .description = "mirror",
4672         .field_bit_size = 2,
4673         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4674         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4675         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4676         },
4677         {
4678         .description = "drop",
4679         .field_bit_size = 1,
4680         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4681         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4682         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4683         },
4684         {
4685         .description = "ecv_tun_type",
4686         .field_bit_size = 3,
4687         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4688         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4689         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4690         },
4691         {
4692         .description = "ecv_l4_type",
4693         .field_bit_size = 3,
4694         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4695         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4696         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4697         },
4698         {
4699         .description = "ecv_l3_type",
4700         .field_bit_size = 3,
4701         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4702         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4703         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4704         },
4705         {
4706         .description = "ecv_l2_en",
4707         .field_bit_size = 1,
4708         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4709         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4710         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
4711         .field_opr1 = {
4712                 ULP_WP_SYM_ECV_L2_EN_YES}
4713         },
4714         {
4715         .description = "ecv_vtag_type",
4716         .field_bit_size = 4,
4717         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4718         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4719         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4720         },
4721         {
4722         .description = "ecv_custom_en",
4723         .field_bit_size = 1,
4724         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4725         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4726         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4727         },
4728         {
4729         .description = "ecv_valid",
4730         .field_bit_size = 1,
4731         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4732         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4733         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4734         },
4735         {
4736         .description = "vtag_tpid",
4737         .field_bit_size = 16,
4738         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4739         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4740         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4741         },
4742         {
4743         .description = "vtag_vid",
4744         .field_bit_size = 12,
4745         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4746         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4747         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4748         },
4749         {
4750         .description = "vtag_de",
4751         .field_bit_size = 1,
4752         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4753         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4754         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4755         },
4756         {
4757         .description = "vtag_pcp",
4758         .field_bit_size = 3,
4759         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4760         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4761         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4762         },
4763         {
4764         .description = "spare",
4765         .field_bit_size = 0,
4766         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4767         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4768         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4769         },
4770         /* act_tid: 6, wh_plus, table: int_flow_counter_tbl.0 */
4771         {
4772         .description = "count",
4773         .field_bit_size = 64,
4774         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4775         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4776         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4777         },
4778         /* act_tid: 6, wh_plus, table: sp_smac_ipv4.0 */
4779         {
4780         .description = "smac",
4781         .field_bit_size = 48,
4782         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4783         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4784         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
4785         .field_opr1 = {
4786                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_L2_SMAC >> 8) & 0xff,
4787                 BNXT_ULP_ACT_PROP_IDX_ENCAP_L2_SMAC & 0xff}
4788         },
4789         {
4790         .description = "ipv4_src_addr",
4791         .field_bit_size = 32,
4792         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4793         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4794         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
4795         .field_opr1 = {
4796                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_IP_SRC >> 8) & 0xff,
4797                 BNXT_ULP_ACT_PROP_IDX_ENCAP_IP_SRC & 0xff}
4798         },
4799         {
4800         .description = "reserved",
4801         .field_bit_size = 48,
4802         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4803         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4804         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4805         },
4806         /* act_tid: 6, wh_plus, table: sp_smac_ipv6.0 */
4807         {
4808         .description = "smac",
4809         .field_bit_size = 48,
4810         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4811         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4812         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
4813         .field_opr1 = {
4814                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_L2_SMAC >> 8) & 0xff,
4815                 BNXT_ULP_ACT_PROP_IDX_ENCAP_L2_SMAC & 0xff}
4816         },
4817         {
4818         .description = "ipv6_src_addr",
4819         .field_bit_size = 128,
4820         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4821         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4822         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
4823         .field_opr1 = {
4824                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_IP_SRC >> 8) & 0xff,
4825                 BNXT_ULP_ACT_PROP_IDX_ENCAP_IP_SRC & 0xff}
4826         },
4827         {
4828         .description = "reserved",
4829         .field_bit_size = 16,
4830         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4831         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4832         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4833         },
4834         /* act_tid: 6, wh_plus, table: int_tun_encap_record.0 */
4835         {
4836         .description = "ecv_tun_type",
4837         .field_bit_size = 3,
4838         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4839         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4840         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
4841         .field_opr1 = {
4842                 ULP_WP_SYM_ECV_TUN_TYPE_VXLAN}
4843         },
4844         {
4845         .description = "ecv_l4_type",
4846         .field_bit_size = 3,
4847         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4848         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4849         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
4850         .field_opr1 = {
4851                 ULP_WP_SYM_ECV_L4_TYPE_UDP_CSUM}
4852         },
4853         {
4854         .description = "ecv_l3_type",
4855         .field_bit_size = 3,
4856         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4857         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4858         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
4859         .field_opr1 = {
4860                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_L3_TYPE >> 8) & 0xff,
4861                 BNXT_ULP_ACT_PROP_IDX_ENCAP_L3_TYPE & 0xff}
4862         },
4863         {
4864         .description = "ecv_l2_en",
4865         .field_bit_size = 1,
4866         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4867         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4868         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
4869         .field_opr1 = {
4870                 1}
4871         },
4872         {
4873         .description = "ecv_vtag_type",
4874         .field_bit_size = 4,
4875         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4876         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4877         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
4878         .field_opr1 = {
4879                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_TYPE >> 8) & 0xff,
4880                 BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_TYPE & 0xff}
4881         },
4882         {
4883         .description = "ecv_custom_en",
4884         .field_bit_size = 1,
4885         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4886         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4887         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4888         },
4889         {
4890         .description = "ecv_valid",
4891         .field_bit_size = 1,
4892         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4893         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4894         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
4895         .field_opr1 = {
4896                 1}
4897         },
4898         {
4899         .description = "encap_l2_dmac",
4900         .field_bit_size = 48,
4901         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4902         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4903         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
4904         .field_opr1 = {
4905                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_L2_DMAC >> 8) & 0xff,
4906                 BNXT_ULP_ACT_PROP_IDX_ENCAP_L2_DMAC & 0xff}
4907         },
4908         {
4909         .description = "encap_vtag",
4910         .field_bit_size = 0,
4911         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4912         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4913         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP_SZ,
4914         .field_opr1 = {
4915                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG >> 8) & 0xff,
4916                 BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG & 0xff,
4917                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_SZ >> 8) & 0xff,
4918                 BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_SZ & 0xff}
4919         },
4920         {
4921         .description = "encap_ip",
4922         .field_bit_size = 0,
4923         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4924         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4925         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP_SZ,
4926         .field_opr1 = {
4927                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_IP >> 8) & 0xff,
4928                 BNXT_ULP_ACT_PROP_IDX_ENCAP_IP & 0xff,
4929                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_IP_SZ >> 8) & 0xff,
4930                 BNXT_ULP_ACT_PROP_IDX_ENCAP_IP_SZ & 0xff}
4931         },
4932         {
4933         .description = "encap_udp",
4934         .field_bit_size = 32,
4935         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4936         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4937         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
4938         .field_opr1 = {
4939                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_UDP >> 8) & 0xff,
4940                 BNXT_ULP_ACT_PROP_IDX_ENCAP_UDP & 0xff}
4941         },
4942         {
4943         .description = "encap_tun",
4944         .field_bit_size = 0,
4945         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4946         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4947         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP_SZ,
4948         .field_opr1 = {
4949                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_TUN >> 8) & 0xff,
4950                 BNXT_ULP_ACT_PROP_IDX_ENCAP_TUN & 0xff,
4951                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_TUN_SZ >> 8) & 0xff,
4952                 BNXT_ULP_ACT_PROP_IDX_ENCAP_TUN_SZ & 0xff}
4953         },
4954         /* act_tid: 6, wh_plus, table: int_full_act_record.0 */
4955         {
4956         .description = "flow_cntr_ptr",
4957         .field_bit_size = 14,
4958         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4959         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4960         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
4961         .field_opr1 = {
4962                 (BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 >> 8) & 0xff,
4963                 BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 & 0xff}
4964         },
4965         {
4966         .description = "age_enable",
4967         .field_bit_size = 1,
4968         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4969         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4970         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4971         },
4972         {
4973         .description = "agg_cntr_en",
4974         .field_bit_size = 1,
4975         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4976         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4977         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4978         },
4979         {
4980         .description = "rate_cntr_en",
4981         .field_bit_size = 1,
4982         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4983         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4984         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4985         },
4986         {
4987         .description = "flow_cntr_en",
4988         .field_bit_size = 1,
4989         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
4990         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
4991         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
4992         .field_opr1 = {
4993                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 56) & 0xff,
4994                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 48) & 0xff,
4995                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 40) & 0xff,
4996                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 32) & 0xff,
4997                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 24) & 0xff,
4998                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 16) & 0xff,
4999                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 8) & 0xff,
5000                 (uint64_t)BNXT_ULP_ACT_BIT_COUNT & 0xff}
5001         },
5002         {
5003         .description = "tcpflags_key",
5004         .field_bit_size = 8,
5005         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5006         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5007         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
5008         },
5009         {
5010         .description = "tcpflags_mir",
5011         .field_bit_size = 1,
5012         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5013         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5014         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
5015         },
5016         {
5017         .description = "tcpflags_match",
5018         .field_bit_size = 1,
5019         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5020         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5021         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
5022         },
5023         {
5024         .description = "encap_ptr",
5025         .field_bit_size = 11,
5026         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5027         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5028         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
5029         .field_opr1 = {
5030                 (BNXT_ULP_RF_IDX_ENCAP_PTR_0 >> 8) & 0xff,
5031                 BNXT_ULP_RF_IDX_ENCAP_PTR_0 & 0xff}
5032         },
5033         {
5034         .description = "dst_ip_ptr",
5035         .field_bit_size = 10,
5036         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5037         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5038         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
5039         },
5040         {
5041         .description = "tcp_dst_port",
5042         .field_bit_size = 16,
5043         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5044         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5045         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
5046         },
5047         {
5048         .description = "src_ip_ptr",
5049         .field_bit_size = 10,
5050         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5051         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5052         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
5053         },
5054         {
5055         .description = "tcp_src_port",
5056         .field_bit_size = 16,
5057         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5058         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5059         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
5060         },
5061         {
5062         .description = "meter_id",
5063         .field_bit_size = 10,
5064         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5065         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5066         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
5067         },
5068         {
5069         .description = "l3_rdir",
5070         .field_bit_size = 1,
5071         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5072         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5073         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
5074         },
5075         {
5076         .description = "tl3_rdir",
5077         .field_bit_size = 1,
5078         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5079         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5080         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
5081         },
5082         {
5083         .description = "l3_ttl_dec",
5084         .field_bit_size = 1,
5085         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5086         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5087         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
5088         },
5089         {
5090         .description = "tl3_ttl_dec",
5091         .field_bit_size = 1,
5092         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5093         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5094         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
5095         },
5096         {
5097         .description = "decap_func",
5098         .field_bit_size = 4,
5099         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5100         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5101         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
5102         },
5103         {
5104         .description = "vnic_or_vport",
5105         .field_bit_size = 12,
5106         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5107         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5108         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
5109         .field_opr1 = {
5110                 (BNXT_ULP_ACT_PROP_IDX_VPORT >> 8) & 0xff,
5111                 BNXT_ULP_ACT_PROP_IDX_VPORT & 0xff}
5112         },
5113         {
5114         .description = "pop_vlan",
5115         .field_bit_size = 1,
5116         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5117         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5118         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
5119         },
5120         {
5121         .description = "meter",
5122         .field_bit_size = 1,
5123         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5124         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5125         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
5126         },
5127         {
5128         .description = "mirror",
5129         .field_bit_size = 2,
5130         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5131         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5132         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
5133         },
5134         {
5135         .description = "drop",
5136         .field_bit_size = 1,
5137         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5138         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5139         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
5140         },
5141         {
5142         .description = "hit",
5143         .field_bit_size = 1,
5144         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5145         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5146         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
5147         },
5148         {
5149         .description = "type",
5150         .field_bit_size = 1,
5151         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5152         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5153         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
5154         },
5155         /* act_tid: 6, wh_plus, table: ext_full_act_record_vxlan.0 */
5156         {
5157         .description = "flow_cntr_ptr",
5158         .field_bit_size = 14,
5159         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5160         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5161         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
5162         .field_opr1 = {
5163                 (BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 >> 8) & 0xff,
5164                 BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 & 0xff}
5165         },
5166         {
5167         .description = "age_enable",
5168         .field_bit_size = 1,
5169         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5170         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5171         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
5172         },
5173         {
5174         .description = "agg_cntr_en",
5175         .field_bit_size = 1,
5176         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5177         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5178         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
5179         },
5180         {
5181         .description = "rate_cntr_en",
5182         .field_bit_size = 1,
5183         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5184         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5185         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
5186         },
5187         {
5188         .description = "flow_cntr_en",
5189         .field_bit_size = 1,
5190         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5191         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5192         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
5193         .field_opr1 = {
5194                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 56) & 0xff,
5195                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 48) & 0xff,
5196                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 40) & 0xff,
5197                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 32) & 0xff,
5198                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 24) & 0xff,
5199                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 16) & 0xff,
5200                 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 8) & 0xff,
5201                 (uint64_t)BNXT_ULP_ACT_BIT_COUNT & 0xff}
5202         },
5203         {
5204         .description = "flow_cntr_ext",
5205         .field_bit_size = 1,
5206         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5207         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5208         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
5209         },
5210         {
5211         .description = "tcpflags_key",
5212         .field_bit_size = 8,
5213         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5214         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5215         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
5216         },
5217         {
5218         .description = "tcpflags_mir",
5219         .field_bit_size = 1,
5220         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5221         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5222         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
5223         },
5224         {
5225         .description = "tcpflags_match",
5226         .field_bit_size = 1,
5227         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5228         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5229         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
5230         },
5231         {
5232         .description = "encap_ptr",
5233         .field_bit_size = 11,
5234         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5235         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5236         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
5237         },
5238         {
5239         .description = "encap_rec_int",
5240         .field_bit_size = 1,
5241         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5242         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5243         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
5244         },
5245         {
5246         .description = "dst_ip_ptr",
5247         .field_bit_size = 10,
5248         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5249         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5250         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
5251         },
5252         {
5253         .description = "tcp_dst_port",
5254         .field_bit_size = 16,
5255         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5256         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5257         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
5258         },
5259         {
5260         .description = "src_ip_ptr",
5261         .field_bit_size = 10,
5262         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5263         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5264         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
5265         },
5266         {
5267         .description = "tcp_src_port",
5268         .field_bit_size = 16,
5269         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5270         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5271         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
5272         },
5273         {
5274         .description = "meter_id",
5275         .field_bit_size = 10,
5276         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5277         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5278         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
5279         },
5280         {
5281         .description = "l3_rdir",
5282         .field_bit_size = 1,
5283         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5284         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5285         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
5286         },
5287         {
5288         .description = "tl3_rdir",
5289         .field_bit_size = 1,
5290         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5291         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5292         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
5293         },
5294         {
5295         .description = "l3_ttl_dec",
5296         .field_bit_size = 1,
5297         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5298         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5299         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
5300         },
5301         {
5302         .description = "tl3_ttl_dec",
5303         .field_bit_size = 1,
5304         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5305         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5306         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
5307         },
5308         {
5309         .description = "decap_func",
5310         .field_bit_size = 4,
5311         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5312         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5313         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
5314         },
5315         {
5316         .description = "vnic_or_vport",
5317         .field_bit_size = 12,
5318         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5319         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5320         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
5321         .field_opr1 = {
5322                 (BNXT_ULP_ACT_PROP_IDX_VPORT >> 8) & 0xff,
5323                 BNXT_ULP_ACT_PROP_IDX_VPORT & 0xff}
5324         },
5325         {
5326         .description = "pop_vlan",
5327         .field_bit_size = 1,
5328         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5329         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5330         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
5331         },
5332         {
5333         .description = "meter",
5334         .field_bit_size = 1,
5335         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5336         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5337         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
5338         },
5339         {
5340         .description = "mirror",
5341         .field_bit_size = 2,
5342         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5343         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5344         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
5345         },
5346         {
5347         .description = "drop",
5348         .field_bit_size = 1,
5349         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5350         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5351         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
5352         },
5353         {
5354         .description = "ecv_tun_type",
5355         .field_bit_size = 3,
5356         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5357         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5358         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
5359         .field_opr1 = {
5360                 ULP_WP_SYM_ECV_TUN_TYPE_VXLAN}
5361         },
5362         {
5363         .description = "ecv_l4_type",
5364         .field_bit_size = 3,
5365         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5366         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5367         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
5368         .field_opr1 = {
5369                 ULP_WP_SYM_ECV_L4_TYPE_UDP_CSUM}
5370         },
5371         {
5372         .description = "ecv_l3_type",
5373         .field_bit_size = 3,
5374         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5375         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5376         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
5377         .field_opr1 = {
5378                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_L3_TYPE >> 8) & 0xff,
5379                 BNXT_ULP_ACT_PROP_IDX_ENCAP_L3_TYPE & 0xff}
5380         },
5381         {
5382         .description = "ecv_l2_en",
5383         .field_bit_size = 1,
5384         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5385         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5386         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
5387         .field_opr1 = {
5388                 1}
5389         },
5390         {
5391         .description = "ecv_vtag_type",
5392         .field_bit_size = 4,
5393         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5394         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5395         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
5396         .field_opr1 = {
5397                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_TYPE >> 8) & 0xff,
5398                 BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_TYPE & 0xff}
5399         },
5400         {
5401         .description = "ecv_custom_en",
5402         .field_bit_size = 1,
5403         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5404         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5405         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
5406         },
5407         {
5408         .description = "ecv_valid",
5409         .field_bit_size = 1,
5410         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5411         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5412         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
5413         .field_opr1 = {
5414                 1}
5415         },
5416         {
5417         .description = "encap_l2_dmac",
5418         .field_bit_size = 48,
5419         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5420         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5421         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
5422         .field_opr1 = {
5423                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_L2_DMAC >> 8) & 0xff,
5424                 BNXT_ULP_ACT_PROP_IDX_ENCAP_L2_DMAC & 0xff}
5425         },
5426         {
5427         .description = "encap_vtag",
5428         .field_bit_size = 0,
5429         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5430         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5431         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP_SZ,
5432         .field_opr1 = {
5433                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG >> 8) & 0xff,
5434                 BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG & 0xff,
5435                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_SZ >> 8) & 0xff,
5436                 BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_SZ & 0xff}
5437         },
5438         {
5439         .description = "encap_ip",
5440         .field_bit_size = 0,
5441         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5442         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5443         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP_SZ,
5444         .field_opr1 = {
5445                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_IP >> 8) & 0xff,
5446                 BNXT_ULP_ACT_PROP_IDX_ENCAP_IP & 0xff,
5447                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_IP_SZ >> 8) & 0xff,
5448                 BNXT_ULP_ACT_PROP_IDX_ENCAP_IP_SZ & 0xff}
5449         },
5450         {
5451         .description = "encap_udp",
5452         .field_bit_size = 32,
5453         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5454         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5455         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
5456         .field_opr1 = {
5457                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_UDP >> 8) & 0xff,
5458                 BNXT_ULP_ACT_PROP_IDX_ENCAP_UDP & 0xff}
5459         },
5460         {
5461         .description = "encap_tun",
5462         .field_bit_size = 80,
5463         .field_opc = BNXT_ULP_FIELD_OPC_COND_OP,
5464         .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
5465         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
5466         .field_opr1 = {
5467                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_TUN >> 8) & 0xff,
5468                 BNXT_ULP_ACT_PROP_IDX_ENCAP_TUN & 0xff}
5469         }
5470 };
5471
5472 struct bnxt_ulp_mapper_ident_info ulp_wh_plus_act_ident_list[] = {
5473         /* act_tid: 1, wh_plus, table: shared_mirror_record.rd */
5474         {
5475         .description = "mirror_id",
5476         .regfile_idx = BNXT_ULP_RF_IDX_MIRROR_ID_0,
5477         .ident_bit_size = 2,
5478         .ident_bit_pos = 32
5479         }
5480 };