net/bnxt: add templates for shared sessions
[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: Sun Mar 21 13:04:51 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_SRC1,
990                 .field_src1 = BNXT_ULP_FIELD_SRC_ONES,
991                 .field_opr1 = {
992                         0xff}
993                 },
994         .field_info_spec = {
995                 .description = "shared_index",
996                 .field_bit_size = 1,
997                 .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
998                 .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
999                 .field_opr1 = {
1000                 (BNXT_ULP_ACT_PROP_IDX_SHARED_HANDLE >> 8) & 0xff,
1001                 BNXT_ULP_ACT_PROP_IDX_SHARED_HANDLE & 0xff}
1002                 }
1003         },
1004         /* act_tid: 2, wh_plus, table: shared_mirror_record.wr */
1005         {
1006         .field_info_mask = {
1007                 .description = "shared_index",
1008                 .field_bit_size = 1,
1009                 .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1010                 .field_src1 = BNXT_ULP_FIELD_SRC_ONES,
1011                 .field_opr1 = {
1012                         0xff}
1013                 },
1014         .field_info_spec = {
1015                 .description = "shared_index",
1016                 .field_bit_size = 1,
1017                 .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1018                 .field_src1 = BNXT_ULP_FIELD_SRC_RF,
1019                 .field_opr1 = {
1020                 (BNXT_ULP_RF_IDX_MIRROR_PTR_0 >> 8) & 0xff,
1021                 BNXT_ULP_RF_IDX_MIRROR_PTR_0 & 0xff}
1022                 }
1023         }
1024 };
1025
1026 struct bnxt_ulp_mapper_field_info ulp_wh_plus_act_result_field_list[] = {
1027         /* act_tid: 1, wh_plus, table: int_flow_counter_tbl.0 */
1028         {
1029         .description = "count",
1030         .field_bit_size = 64,
1031         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1032         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1033         },
1034         /* act_tid: 1, wh_plus, table: int_vtag_encap_record.0 */
1035         {
1036         .description = "ecv_tun_type",
1037         .field_bit_size = 3,
1038         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1039         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1040         },
1041         {
1042         .description = "ecv_l4_type",
1043         .field_bit_size = 3,
1044         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1045         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1046         },
1047         {
1048         .description = "ecv_l3_type",
1049         .field_bit_size = 3,
1050         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1051         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1052         },
1053         {
1054         .description = "ecv_l2_en",
1055         .field_bit_size = 1,
1056         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1057         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1058         },
1059         {
1060         .description = "ecv_vtag_type",
1061         .field_bit_size = 4,
1062         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1063         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
1064         .field_opr1 = {
1065         ULP_WP_SYM_ECV_VTAG_TYPE_ADD_1_ENCAP_PRI}
1066         },
1067         {
1068         .description = "ecv_custom_en",
1069         .field_bit_size = 1,
1070         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1071         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1072         },
1073         {
1074         .description = "ecv_valid",
1075         .field_bit_size = 1,
1076         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1077         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
1078         .field_opr1 = {
1079         1}
1080         },
1081         {
1082         .description = "vtag_tpid",
1083         .field_bit_size = 16,
1084         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1085         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
1086         .field_opr1 = {
1087         (BNXT_ULP_ACT_PROP_IDX_PUSH_VLAN >> 8) & 0xff,
1088         BNXT_ULP_ACT_PROP_IDX_PUSH_VLAN & 0xff}
1089         },
1090         {
1091         .description = "vtag_vid",
1092         .field_bit_size = 12,
1093         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1094         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
1095         .field_opr1 = {
1096         (BNXT_ULP_ACT_PROP_IDX_SET_VLAN_VID >> 8) & 0xff,
1097         BNXT_ULP_ACT_PROP_IDX_SET_VLAN_VID & 0xff}
1098         },
1099         {
1100         .description = "vtag_de",
1101         .field_bit_size = 1,
1102         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1103         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1104         },
1105         {
1106         .description = "vtag_pcp",
1107         .field_bit_size = 3,
1108         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1109         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
1110         .field_opr1 = {
1111         (BNXT_ULP_ACT_PROP_IDX_SET_VLAN_PCP >> 8) & 0xff,
1112         BNXT_ULP_ACT_PROP_IDX_SET_VLAN_PCP & 0xff}
1113         },
1114         {
1115         .description = "spare",
1116         .field_bit_size = 80,
1117         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1118         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1119         },
1120         /* act_tid: 1, wh_plus, table: int_full_act_record.0 */
1121         {
1122         .description = "flow_cntr_ptr",
1123         .field_bit_size = 14,
1124         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1125         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
1126         .field_opr1 = {
1127         (BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 >> 8) & 0xff,
1128         BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 & 0xff}
1129         },
1130         {
1131         .description = "age_enable",
1132         .field_bit_size = 1,
1133         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1134         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1135         },
1136         {
1137         .description = "agg_cntr_en",
1138         .field_bit_size = 1,
1139         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1140         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1141         },
1142         {
1143         .description = "rate_cntr_en",
1144         .field_bit_size = 1,
1145         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1146         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1147         },
1148         {
1149         .description = "flow_cntr_en",
1150         .field_bit_size = 1,
1151         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1152         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
1153         .field_opr1 = {
1154         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 56) & 0xff,
1155         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 48) & 0xff,
1156         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 40) & 0xff,
1157         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 32) & 0xff,
1158         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 24) & 0xff,
1159         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 16) & 0xff,
1160         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 8) & 0xff,
1161         (uint64_t)BNXT_ULP_ACT_BIT_COUNT & 0xff}
1162         },
1163         {
1164         .description = "tcpflags_key",
1165         .field_bit_size = 8,
1166         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1167         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1168         },
1169         {
1170         .description = "tcpflags_mir",
1171         .field_bit_size = 1,
1172         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1173         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1174         },
1175         {
1176         .description = "tcpflags_match",
1177         .field_bit_size = 1,
1178         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1179         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1180         },
1181         {
1182         .description = "encap_ptr",
1183         .field_bit_size = 11,
1184         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1185         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
1186         .field_opr1 = {
1187         (BNXT_ULP_RF_IDX_ENCAP_PTR_0 >> 8) & 0xff,
1188         BNXT_ULP_RF_IDX_ENCAP_PTR_0 & 0xff}
1189         },
1190         {
1191         .description = "dst_ip_ptr",
1192         .field_bit_size = 10,
1193         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1194         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
1195         .field_opr1 = {
1196         (BNXT_ULP_RF_IDX_MODIFY_IPV4_DST_PTR_0 >> 8) & 0xff,
1197         BNXT_ULP_RF_IDX_MODIFY_IPV4_DST_PTR_0 & 0xff}
1198         },
1199         {
1200         .description = "tcp_dst_port",
1201         .field_bit_size = 16,
1202         .field_opc = BNXT_ULP_FIELD_OPC_SRC1_THEN_SRC2_ELSE_SRC3,
1203         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
1204         .field_opr1 = {
1205         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 56) & 0xff,
1206         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 48) & 0xff,
1207         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 40) & 0xff,
1208         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 32) & 0xff,
1209         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 24) & 0xff,
1210         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 16) & 0xff,
1211         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 8) & 0xff,
1212         (uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST & 0xff},
1213         .field_src2 = BNXT_ULP_FIELD_SRC_ACT_PROP,
1214         .field_opr2 = {
1215                 (BNXT_ULP_ACT_PROP_IDX_SET_TP_DST >> 8) & 0xff,
1216                 BNXT_ULP_ACT_PROP_IDX_SET_TP_DST & 0xff},
1217         .field_src3 = BNXT_ULP_FIELD_SRC_ZERO
1218         },
1219         {
1220         .description = "src_ip_ptr",
1221         .field_bit_size = 10,
1222         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1223         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
1224         .field_opr1 = {
1225         (BNXT_ULP_RF_IDX_MODIFY_IPV4_SRC_PTR_0 >> 8) & 0xff,
1226         BNXT_ULP_RF_IDX_MODIFY_IPV4_SRC_PTR_0 & 0xff}
1227         },
1228         {
1229         .description = "tcp_src_port",
1230         .field_bit_size = 16,
1231         .field_opc = BNXT_ULP_FIELD_OPC_SRC1_THEN_SRC2_ELSE_SRC3,
1232         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
1233         .field_opr1 = {
1234         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 56) & 0xff,
1235         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 48) & 0xff,
1236         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 40) & 0xff,
1237         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 32) & 0xff,
1238         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 24) & 0xff,
1239         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 16) & 0xff,
1240         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 8) & 0xff,
1241         (uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC & 0xff},
1242         .field_src2 = BNXT_ULP_FIELD_SRC_ACT_PROP,
1243         .field_opr2 = {
1244                 (BNXT_ULP_ACT_PROP_IDX_SET_TP_SRC >> 8) & 0xff,
1245                 BNXT_ULP_ACT_PROP_IDX_SET_TP_SRC & 0xff},
1246         .field_src3 = BNXT_ULP_FIELD_SRC_ZERO
1247         },
1248         {
1249         .description = "meter_id",
1250         .field_bit_size = 10,
1251         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1252         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1253         },
1254         {
1255         .description = "l3_rdir",
1256         .field_bit_size = 1,
1257         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1258         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1259         },
1260         {
1261         .description = "tl3_rdir",
1262         .field_bit_size = 1,
1263         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1264         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1265         },
1266         {
1267         .description = "l3_ttl_dec",
1268         .field_bit_size = 1,
1269         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1270         .field_src1 = BNXT_ULP_FIELD_SRC_CF,
1271         .field_opr1 = {
1272         (BNXT_ULP_CF_IDX_ACT_DEC_TTL >> 8) & 0xff,
1273         BNXT_ULP_CF_IDX_ACT_DEC_TTL & 0xff}
1274         },
1275         {
1276         .description = "tl3_ttl_dec",
1277         .field_bit_size = 1,
1278         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1279         .field_src1 = BNXT_ULP_FIELD_SRC_CF,
1280         .field_opr1 = {
1281         (BNXT_ULP_CF_IDX_ACT_T_DEC_TTL >> 8) & 0xff,
1282         BNXT_ULP_CF_IDX_ACT_T_DEC_TTL & 0xff}
1283         },
1284         {
1285         .description = "decap_func",
1286         .field_bit_size = 4,
1287         .field_opc = BNXT_ULP_FIELD_OPC_SRC1_THEN_SRC2_ELSE_SRC3,
1288         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
1289         .field_opr1 = {
1290         ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 56) & 0xff,
1291         ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 48) & 0xff,
1292         ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 40) & 0xff,
1293         ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 32) & 0xff,
1294         ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 24) & 0xff,
1295         ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 16) & 0xff,
1296         ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 8) & 0xff,
1297         (uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP & 0xff},
1298         .field_src2 = BNXT_ULP_FIELD_SRC_CONST,
1299         .field_opr2 = {
1300                 ULP_WP_SYM_DECAP_FUNC_THRU_TUN},
1301         .field_src3 = BNXT_ULP_FIELD_SRC_CONST,
1302         .field_opr3 = {
1303         ULP_WP_SYM_DECAP_FUNC_NONE}
1304         },
1305         {
1306         .description = "vnic_or_vport",
1307         .field_bit_size = 12,
1308         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1309         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
1310         .field_opr1 = {
1311         (BNXT_ULP_ACT_PROP_IDX_VNIC >> 8) & 0xff,
1312         BNXT_ULP_ACT_PROP_IDX_VNIC & 0xff}
1313         },
1314         {
1315         .description = "pop_vlan",
1316         .field_bit_size = 1,
1317         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1318         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
1319         .field_opr1 = {
1320         ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 56) & 0xff,
1321         ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 48) & 0xff,
1322         ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 40) & 0xff,
1323         ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 32) & 0xff,
1324         ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 24) & 0xff,
1325         ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 16) & 0xff,
1326         ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 8) & 0xff,
1327         (uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN & 0xff}
1328         },
1329         {
1330         .description = "meter",
1331         .field_bit_size = 1,
1332         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1333         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1334         },
1335         {
1336         .description = "mirror",
1337         .field_bit_size = 2,
1338         .field_opc = BNXT_ULP_FIELD_OPC_SRC1_THEN_SRC2_ELSE_SRC3,
1339         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
1340         .field_opr1 = {
1341         ((uint64_t)BNXT_ULP_ACT_BIT_SHARED_SAMPLE >> 56) & 0xff,
1342         ((uint64_t)BNXT_ULP_ACT_BIT_SHARED_SAMPLE >> 48) & 0xff,
1343         ((uint64_t)BNXT_ULP_ACT_BIT_SHARED_SAMPLE >> 40) & 0xff,
1344         ((uint64_t)BNXT_ULP_ACT_BIT_SHARED_SAMPLE >> 32) & 0xff,
1345         ((uint64_t)BNXT_ULP_ACT_BIT_SHARED_SAMPLE >> 24) & 0xff,
1346         ((uint64_t)BNXT_ULP_ACT_BIT_SHARED_SAMPLE >> 16) & 0xff,
1347         ((uint64_t)BNXT_ULP_ACT_BIT_SHARED_SAMPLE >> 8) & 0xff,
1348         (uint64_t)BNXT_ULP_ACT_BIT_SHARED_SAMPLE & 0xff},
1349         .field_src2 = BNXT_ULP_FIELD_SRC_RF,
1350         .field_opr2 = {
1351                 (BNXT_ULP_RF_IDX_MIRROR_ID_0 >> 8) & 0xff,
1352                 BNXT_ULP_RF_IDX_MIRROR_ID_0 & 0xff},
1353         .field_src3 = BNXT_ULP_FIELD_SRC_ZERO
1354         },
1355         {
1356         .description = "drop",
1357         .field_bit_size = 1,
1358         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1359         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
1360         .field_opr1 = {
1361         ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 56) & 0xff,
1362         ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 48) & 0xff,
1363         ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 40) & 0xff,
1364         ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 32) & 0xff,
1365         ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 24) & 0xff,
1366         ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 16) & 0xff,
1367         ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 8) & 0xff,
1368         (uint64_t)BNXT_ULP_ACT_BIT_DROP & 0xff}
1369         },
1370         {
1371         .description = "hit",
1372         .field_bit_size = 1,
1373         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1374         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1375         },
1376         {
1377         .description = "type",
1378         .field_bit_size = 1,
1379         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1380         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1381         },
1382         /* act_tid: 1, wh_plus, table: ext_full_act_record.0 */
1383         {
1384         .description = "flow_cntr_ptr",
1385         .field_bit_size = 14,
1386         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1387         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
1388         .field_opr1 = {
1389         (BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 >> 8) & 0xff,
1390         BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 & 0xff}
1391         },
1392         {
1393         .description = "age_enable",
1394         .field_bit_size = 1,
1395         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1396         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1397         },
1398         {
1399         .description = "agg_cntr_en",
1400         .field_bit_size = 1,
1401         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1402         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1403         },
1404         {
1405         .description = "rate_cntr_en",
1406         .field_bit_size = 1,
1407         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1408         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1409         },
1410         {
1411         .description = "flow_cntr_en",
1412         .field_bit_size = 1,
1413         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1414         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
1415         .field_opr1 = {
1416         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 56) & 0xff,
1417         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 48) & 0xff,
1418         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 40) & 0xff,
1419         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 32) & 0xff,
1420         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 24) & 0xff,
1421         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 16) & 0xff,
1422         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 8) & 0xff,
1423         (uint64_t)BNXT_ULP_ACT_BIT_COUNT & 0xff}
1424         },
1425         {
1426         .description = "flow_cntr_ext",
1427         .field_bit_size = 1,
1428         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1429         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1430         },
1431         {
1432         .description = "tcpflags_key",
1433         .field_bit_size = 8,
1434         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1435         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1436         },
1437         {
1438         .description = "tcpflags_mir",
1439         .field_bit_size = 1,
1440         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1441         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1442         },
1443         {
1444         .description = "tcpflags_match",
1445         .field_bit_size = 1,
1446         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1447         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1448         },
1449         {
1450         .description = "encap_ptr",
1451         .field_bit_size = 11,
1452         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1453         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1454         },
1455         {
1456         .description = "encap_rec_int",
1457         .field_bit_size = 1,
1458         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1459         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1460         },
1461         {
1462         .description = "dst_ip_ptr",
1463         .field_bit_size = 10,
1464         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1465         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
1466         .field_opr1 = {
1467         (BNXT_ULP_RF_IDX_MODIFY_IPV4_DST_PTR_0 >> 8) & 0xff,
1468         BNXT_ULP_RF_IDX_MODIFY_IPV4_DST_PTR_0 & 0xff}
1469         },
1470         {
1471         .description = "tcp_dst_port",
1472         .field_bit_size = 16,
1473         .field_opc = BNXT_ULP_FIELD_OPC_SRC1_THEN_SRC2_ELSE_SRC3,
1474         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
1475         .field_opr1 = {
1476         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 56) & 0xff,
1477         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 48) & 0xff,
1478         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 40) & 0xff,
1479         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 32) & 0xff,
1480         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 24) & 0xff,
1481         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 16) & 0xff,
1482         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 8) & 0xff,
1483         (uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST & 0xff},
1484         .field_src2 = BNXT_ULP_FIELD_SRC_ACT_PROP,
1485         .field_opr2 = {
1486                 (BNXT_ULP_ACT_PROP_IDX_SET_TP_DST >> 8) & 0xff,
1487                 BNXT_ULP_ACT_PROP_IDX_SET_TP_DST & 0xff},
1488         .field_src3 = BNXT_ULP_FIELD_SRC_ZERO
1489         },
1490         {
1491         .description = "src_ip_ptr",
1492         .field_bit_size = 10,
1493         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1494         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
1495         .field_opr1 = {
1496         (BNXT_ULP_RF_IDX_MODIFY_IPV4_SRC_PTR_0 >> 8) & 0xff,
1497         BNXT_ULP_RF_IDX_MODIFY_IPV4_SRC_PTR_0 & 0xff}
1498         },
1499         {
1500         .description = "tcp_src_port",
1501         .field_bit_size = 16,
1502         .field_opc = BNXT_ULP_FIELD_OPC_SRC1_THEN_SRC2_ELSE_SRC3,
1503         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
1504         .field_opr1 = {
1505         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 56) & 0xff,
1506         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 48) & 0xff,
1507         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 40) & 0xff,
1508         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 32) & 0xff,
1509         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 24) & 0xff,
1510         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 16) & 0xff,
1511         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 8) & 0xff,
1512         (uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC & 0xff},
1513         .field_src2 = BNXT_ULP_FIELD_SRC_ACT_PROP,
1514         .field_opr2 = {
1515                 (BNXT_ULP_ACT_PROP_IDX_SET_TP_SRC >> 8) & 0xff,
1516                 BNXT_ULP_ACT_PROP_IDX_SET_TP_SRC & 0xff},
1517         .field_src3 = BNXT_ULP_FIELD_SRC_ZERO
1518         },
1519         {
1520         .description = "meter_id",
1521         .field_bit_size = 10,
1522         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1523         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1524         },
1525         {
1526         .description = "l3_rdir",
1527         .field_bit_size = 1,
1528         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1529         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1530         },
1531         {
1532         .description = "tl3_rdir",
1533         .field_bit_size = 1,
1534         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1535         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1536         },
1537         {
1538         .description = "l3_ttl_dec",
1539         .field_bit_size = 1,
1540         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1541         .field_src1 = BNXT_ULP_FIELD_SRC_CF,
1542         .field_opr1 = {
1543         (BNXT_ULP_CF_IDX_ACT_DEC_TTL >> 8) & 0xff,
1544         BNXT_ULP_CF_IDX_ACT_DEC_TTL & 0xff}
1545         },
1546         {
1547         .description = "tl3_ttl_dec",
1548         .field_bit_size = 1,
1549         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1550         .field_src1 = BNXT_ULP_FIELD_SRC_CF,
1551         .field_opr1 = {
1552         (BNXT_ULP_CF_IDX_ACT_T_DEC_TTL >> 8) & 0xff,
1553         BNXT_ULP_CF_IDX_ACT_T_DEC_TTL & 0xff}
1554         },
1555         {
1556         .description = "decap_func",
1557         .field_bit_size = 4,
1558         .field_opc = BNXT_ULP_FIELD_OPC_SRC1_THEN_SRC2_ELSE_SRC3,
1559         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
1560         .field_opr1 = {
1561         ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 56) & 0xff,
1562         ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 48) & 0xff,
1563         ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 40) & 0xff,
1564         ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 32) & 0xff,
1565         ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 24) & 0xff,
1566         ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 16) & 0xff,
1567         ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 8) & 0xff,
1568         (uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP & 0xff},
1569         .field_src2 = BNXT_ULP_FIELD_SRC_CONST,
1570         .field_opr2 = {
1571                 ULP_WP_SYM_DECAP_FUNC_THRU_TUN},
1572         .field_src3 = BNXT_ULP_FIELD_SRC_CONST,
1573         .field_opr3 = {
1574         ULP_WP_SYM_DECAP_FUNC_NONE}
1575         },
1576         {
1577         .description = "vnic_or_vport",
1578         .field_bit_size = 12,
1579         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1580         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
1581         .field_opr1 = {
1582         (BNXT_ULP_ACT_PROP_IDX_VNIC >> 8) & 0xff,
1583         BNXT_ULP_ACT_PROP_IDX_VNIC & 0xff}
1584         },
1585         {
1586         .description = "pop_vlan",
1587         .field_bit_size = 1,
1588         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1589         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
1590         .field_opr1 = {
1591         ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 56) & 0xff,
1592         ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 48) & 0xff,
1593         ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 40) & 0xff,
1594         ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 32) & 0xff,
1595         ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 24) & 0xff,
1596         ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 16) & 0xff,
1597         ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 8) & 0xff,
1598         (uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN & 0xff}
1599         },
1600         {
1601         .description = "meter",
1602         .field_bit_size = 1,
1603         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1604         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1605         },
1606         {
1607         .description = "mirror",
1608         .field_bit_size = 2,
1609         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1610         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
1611         .field_opr1 = {
1612         (BNXT_ULP_RF_IDX_MIRROR_ID_0 >> 8) & 0xff,
1613         BNXT_ULP_RF_IDX_MIRROR_ID_0 & 0xff}
1614         },
1615         {
1616         .description = "drop",
1617         .field_bit_size = 1,
1618         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1619         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
1620         .field_opr1 = {
1621         ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 56) & 0xff,
1622         ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 48) & 0xff,
1623         ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 40) & 0xff,
1624         ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 32) & 0xff,
1625         ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 24) & 0xff,
1626         ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 16) & 0xff,
1627         ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 8) & 0xff,
1628         (uint64_t)BNXT_ULP_ACT_BIT_DROP & 0xff}
1629         },
1630         {
1631         .description = "ecv_tun_type",
1632         .field_bit_size = 3,
1633         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1634         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1635         },
1636         {
1637         .description = "ecv_l4_type",
1638         .field_bit_size = 3,
1639         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1640         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1641         },
1642         {
1643         .description = "ecv_l3_type",
1644         .field_bit_size = 3,
1645         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1646         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1647         },
1648         {
1649         .description = "ecv_l2_en",
1650         .field_bit_size = 1,
1651         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1652         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
1653         .field_opr1 = {
1654         ULP_WP_SYM_ECV_L2_EN_YES}
1655         },
1656         {
1657         .description = "ecv_vtag_type",
1658         .field_bit_size = 4,
1659         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1660         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1661         },
1662         {
1663         .description = "ecv_custom_en",
1664         .field_bit_size = 1,
1665         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1666         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1667         },
1668         {
1669         .description = "ecv_valid",
1670         .field_bit_size = 1,
1671         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1672         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1673         },
1674         {
1675         .description = "vtag_tpid",
1676         .field_bit_size = 16,
1677         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1678         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1679         },
1680         {
1681         .description = "vtag_vid",
1682         .field_bit_size = 12,
1683         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1684         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1685         },
1686         {
1687         .description = "vtag_de",
1688         .field_bit_size = 1,
1689         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1690         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1691         },
1692         {
1693         .description = "vtag_pcp",
1694         .field_bit_size = 3,
1695         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1696         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1697         },
1698         {
1699         .description = "spare",
1700         .field_bit_size = 0,
1701         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1702         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1703         },
1704         /* act_tid: 2, wh_plus, table: mirror_tbl.alloc */
1705         {
1706         .description = "act_rec_ptr",
1707         .field_bit_size = 16,
1708         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1709         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1710         },
1711         {
1712         .description = "enable",
1713         .field_bit_size = 1,
1714         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1715         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
1716         .field_opr1 = {
1717         1}
1718         },
1719         {
1720         .description = "copy",
1721         .field_bit_size = 1,
1722         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1723         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1724         },
1725         {
1726         .description = "ign_drop",
1727         .field_bit_size = 1,
1728         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1729         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1730         },
1731         {
1732         .description = "reserved",
1733         .field_bit_size = 2,
1734         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1735         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1736         },
1737         {
1738         .description = "sp_ptr",
1739         .field_bit_size = 11,
1740         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1741         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1742         },
1743         /* act_tid: 2, wh_plus, table: int_flow_counter_tbl.0 */
1744         {
1745         .description = "count",
1746         .field_bit_size = 64,
1747         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1748         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1749         },
1750         /* act_tid: 2, wh_plus, table: int_full_act_record.0 */
1751         {
1752         .description = "flow_cntr_ptr",
1753         .field_bit_size = 14,
1754         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1755         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
1756         .field_opr1 = {
1757         (BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 >> 8) & 0xff,
1758         BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 & 0xff}
1759         },
1760         {
1761         .description = "age_enable",
1762         .field_bit_size = 1,
1763         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1764         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1765         },
1766         {
1767         .description = "agg_cntr_en",
1768         .field_bit_size = 1,
1769         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1770         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1771         },
1772         {
1773         .description = "rate_cntr_en",
1774         .field_bit_size = 1,
1775         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1776         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1777         },
1778         {
1779         .description = "flow_cntr_en",
1780         .field_bit_size = 1,
1781         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1782         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
1783         .field_opr1 = {
1784         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 56) & 0xff,
1785         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 48) & 0xff,
1786         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 40) & 0xff,
1787         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 32) & 0xff,
1788         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 24) & 0xff,
1789         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 16) & 0xff,
1790         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 8) & 0xff,
1791         (uint64_t)BNXT_ULP_ACT_BIT_COUNT & 0xff}
1792         },
1793         {
1794         .description = "tcpflags_key",
1795         .field_bit_size = 8,
1796         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1797         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1798         },
1799         {
1800         .description = "tcpflags_mir",
1801         .field_bit_size = 1,
1802         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1803         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1804         },
1805         {
1806         .description = "tcpflags_match",
1807         .field_bit_size = 1,
1808         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1809         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1810         },
1811         {
1812         .description = "encap_ptr",
1813         .field_bit_size = 11,
1814         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1815         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1816         },
1817         {
1818         .description = "dst_ip_ptr",
1819         .field_bit_size = 10,
1820         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1821         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1822         },
1823         {
1824         .description = "tcp_dst_port",
1825         .field_bit_size = 16,
1826         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1827         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1828         },
1829         {
1830         .description = "src_ip_ptr",
1831         .field_bit_size = 10,
1832         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1833         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1834         },
1835         {
1836         .description = "tcp_src_port",
1837         .field_bit_size = 16,
1838         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1839         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1840         },
1841         {
1842         .description = "meter_id",
1843         .field_bit_size = 10,
1844         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1845         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1846         },
1847         {
1848         .description = "l3_rdir",
1849         .field_bit_size = 1,
1850         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1851         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1852         },
1853         {
1854         .description = "tl3_rdir",
1855         .field_bit_size = 1,
1856         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1857         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1858         },
1859         {
1860         .description = "l3_ttl_dec",
1861         .field_bit_size = 1,
1862         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1863         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1864         },
1865         {
1866         .description = "tl3_ttl_dec",
1867         .field_bit_size = 1,
1868         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1869         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1870         },
1871         {
1872         .description = "decap_func",
1873         .field_bit_size = 4,
1874         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1875         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1876         },
1877         {
1878         .description = "vnic_or_vport",
1879         .field_bit_size = 12,
1880         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1881         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
1882         .field_opr1 = {
1883         (BNXT_ULP_ACT_PROP_IDX_VNIC >> 8) & 0xff,
1884         BNXT_ULP_ACT_PROP_IDX_VNIC & 0xff}
1885         },
1886         {
1887         .description = "pop_vlan",
1888         .field_bit_size = 1,
1889         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1890         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1891         },
1892         {
1893         .description = "meter",
1894         .field_bit_size = 1,
1895         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1896         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1897         },
1898         {
1899         .description = "mirror",
1900         .field_bit_size = 2,
1901         .field_opc = BNXT_ULP_FIELD_OPC_SRC1_PLUS_SRC2,
1902         .field_src2 = BNXT_ULP_FIELD_SRC_CONST,
1903         .field_opr2 = {
1904                 1}
1905         },
1906         {
1907         .description = "drop",
1908         .field_bit_size = 1,
1909         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1910         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1911         },
1912         {
1913         .description = "hit",
1914         .field_bit_size = 1,
1915         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1916         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1917         },
1918         {
1919         .description = "type",
1920         .field_bit_size = 1,
1921         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1922         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1923         },
1924         /* act_tid: 2, wh_plus, table: ext_full_act_record.0 */
1925         {
1926         .description = "flow_cntr_ptr",
1927         .field_bit_size = 14,
1928         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1929         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
1930         .field_opr1 = {
1931         (BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 >> 8) & 0xff,
1932         BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 & 0xff}
1933         },
1934         {
1935         .description = "age_enable",
1936         .field_bit_size = 1,
1937         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1938         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1939         },
1940         {
1941         .description = "agg_cntr_en",
1942         .field_bit_size = 1,
1943         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1944         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1945         },
1946         {
1947         .description = "rate_cntr_en",
1948         .field_bit_size = 1,
1949         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1950         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1951         },
1952         {
1953         .description = "flow_cntr_en",
1954         .field_bit_size = 1,
1955         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1956         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
1957         .field_opr1 = {
1958         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 56) & 0xff,
1959         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 48) & 0xff,
1960         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 40) & 0xff,
1961         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 32) & 0xff,
1962         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 24) & 0xff,
1963         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 16) & 0xff,
1964         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 8) & 0xff,
1965         (uint64_t)BNXT_ULP_ACT_BIT_COUNT & 0xff}
1966         },
1967         {
1968         .description = "flow_cntr_ext",
1969         .field_bit_size = 1,
1970         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1971         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1972         },
1973         {
1974         .description = "tcpflags_key",
1975         .field_bit_size = 8,
1976         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1977         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1978         },
1979         {
1980         .description = "tcpflags_mir",
1981         .field_bit_size = 1,
1982         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1983         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1984         },
1985         {
1986         .description = "tcpflags_match",
1987         .field_bit_size = 1,
1988         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1989         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1990         },
1991         {
1992         .description = "encap_ptr",
1993         .field_bit_size = 11,
1994         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
1995         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
1996         },
1997         {
1998         .description = "encap_rec_int",
1999         .field_bit_size = 1,
2000         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2001         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2002         },
2003         {
2004         .description = "dst_ip_ptr",
2005         .field_bit_size = 10,
2006         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2007         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2008         },
2009         {
2010         .description = "tcp_dst_port",
2011         .field_bit_size = 16,
2012         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2013         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2014         },
2015         {
2016         .description = "src_ip_ptr",
2017         .field_bit_size = 10,
2018         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2019         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2020         },
2021         {
2022         .description = "tcp_src_port",
2023         .field_bit_size = 16,
2024         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2025         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2026         },
2027         {
2028         .description = "meter_id",
2029         .field_bit_size = 10,
2030         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2031         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2032         },
2033         {
2034         .description = "l3_rdir",
2035         .field_bit_size = 1,
2036         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2037         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2038         },
2039         {
2040         .description = "tl3_rdir",
2041         .field_bit_size = 1,
2042         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2043         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2044         },
2045         {
2046         .description = "l3_ttl_dec",
2047         .field_bit_size = 1,
2048         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2049         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2050         },
2051         {
2052         .description = "tl3_ttl_dec",
2053         .field_bit_size = 1,
2054         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2055         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2056         },
2057         {
2058         .description = "decap_func",
2059         .field_bit_size = 4,
2060         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2061         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2062         },
2063         {
2064         .description = "vnic_or_vport",
2065         .field_bit_size = 12,
2066         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2067         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
2068         .field_opr1 = {
2069         (BNXT_ULP_ACT_PROP_IDX_VNIC >> 8) & 0xff,
2070         BNXT_ULP_ACT_PROP_IDX_VNIC & 0xff}
2071         },
2072         {
2073         .description = "pop_vlan",
2074         .field_bit_size = 1,
2075         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2076         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
2077         .field_opr1 = {
2078         ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 56) & 0xff,
2079         ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 48) & 0xff,
2080         ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 40) & 0xff,
2081         ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 32) & 0xff,
2082         ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 24) & 0xff,
2083         ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 16) & 0xff,
2084         ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 8) & 0xff,
2085         (uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN & 0xff}
2086         },
2087         {
2088         .description = "meter",
2089         .field_bit_size = 1,
2090         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2091         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2092         },
2093         {
2094         .description = "mirror",
2095         .field_bit_size = 2,
2096         .field_opc = BNXT_ULP_FIELD_OPC_SRC1_PLUS_SRC2,
2097         .field_src2 = BNXT_ULP_FIELD_SRC_CONST,
2098         .field_opr2 = {
2099                 1}
2100         },
2101         {
2102         .description = "drop",
2103         .field_bit_size = 1,
2104         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2105         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2106         },
2107         {
2108         .description = "ecv_tun_type",
2109         .field_bit_size = 3,
2110         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2111         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2112         },
2113         {
2114         .description = "ecv_l4_type",
2115         .field_bit_size = 3,
2116         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2117         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2118         },
2119         {
2120         .description = "ecv_l3_type",
2121         .field_bit_size = 3,
2122         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2123         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2124         },
2125         {
2126         .description = "ecv_l2_en",
2127         .field_bit_size = 1,
2128         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2129         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
2130         .field_opr1 = {
2131         ULP_WP_SYM_ECV_L2_EN_YES}
2132         },
2133         {
2134         .description = "ecv_vtag_type",
2135         .field_bit_size = 4,
2136         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2137         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2138         },
2139         {
2140         .description = "ecv_custom_en",
2141         .field_bit_size = 1,
2142         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2143         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2144         },
2145         {
2146         .description = "ecv_valid",
2147         .field_bit_size = 1,
2148         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2149         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2150         },
2151         {
2152         .description = "vtag_tpid",
2153         .field_bit_size = 16,
2154         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2155         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2156         },
2157         {
2158         .description = "vtag_vid",
2159         .field_bit_size = 12,
2160         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2161         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2162         },
2163         {
2164         .description = "vtag_de",
2165         .field_bit_size = 1,
2166         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2167         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2168         },
2169         {
2170         .description = "vtag_pcp",
2171         .field_bit_size = 3,
2172         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2173         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2174         },
2175         {
2176         .description = "spare",
2177         .field_bit_size = 0,
2178         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2179         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2180         },
2181         /* act_tid: 2, wh_plus, table: mirror_tbl.wr */
2182         {
2183         .description = "act_rec_ptr",
2184         .field_bit_size = 16,
2185         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2186         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
2187         .field_opr1 = {
2188         (BNXT_ULP_RF_IDX_MAIN_ACTION_PTR >> 8) & 0xff,
2189         BNXT_ULP_RF_IDX_MAIN_ACTION_PTR & 0xff}
2190         },
2191         {
2192         .description = "enable",
2193         .field_bit_size = 1,
2194         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2195         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
2196         .field_opr1 = {
2197         1}
2198         },
2199         {
2200         .description = "copy",
2201         .field_bit_size = 1,
2202         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2203         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2204         },
2205         {
2206         .description = "ign_drop",
2207         .field_bit_size = 1,
2208         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2209         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2210         },
2211         {
2212         .description = "reserved",
2213         .field_bit_size = 2,
2214         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2215         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2216         },
2217         {
2218         .description = "sp_ptr",
2219         .field_bit_size = 11,
2220         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2221         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2222         },
2223         /* act_tid: 2, wh_plus, table: shared_mirror_record.wr */
2224         {
2225         .description = "rid",
2226         .field_bit_size = 32,
2227         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2228         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
2229         .field_opr1 = {
2230         (BNXT_ULP_RF_IDX_RID >> 8) & 0xff,
2231         BNXT_ULP_RF_IDX_RID & 0xff}
2232         },
2233         {
2234         .description = "mirror_id",
2235         .field_bit_size = 2,
2236         .field_opc = BNXT_ULP_FIELD_OPC_SRC1_PLUS_SRC2_POST,
2237         .field_src2 = BNXT_ULP_FIELD_SRC_CONST,
2238         .field_opr2 = {
2239                 (1 >> 8) & 0xff,
2240                 1 & 0xff}
2241         },
2242         /* act_tid: 3, wh_plus, table: int_flow_counter_tbl.0 */
2243         {
2244         .description = "count",
2245         .field_bit_size = 64,
2246         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2247         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2248         },
2249         /* act_tid: 3, wh_plus, table: act_modify_ipv4_src.0 */
2250         {
2251         .description = "ipv4_addr",
2252         .field_bit_size = 32,
2253         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2254         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
2255         .field_opr1 = {
2256         (BNXT_ULP_ACT_PROP_IDX_SET_IPV4_SRC >> 8) & 0xff,
2257         BNXT_ULP_ACT_PROP_IDX_SET_IPV4_SRC & 0xff}
2258         },
2259         /* act_tid: 3, wh_plus, table: act_modify_ipv4_dst.0 */
2260         {
2261         .description = "ipv4_addr",
2262         .field_bit_size = 32,
2263         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2264         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
2265         .field_opr1 = {
2266         (BNXT_ULP_ACT_PROP_IDX_SET_IPV4_DST >> 8) & 0xff,
2267         BNXT_ULP_ACT_PROP_IDX_SET_IPV4_DST & 0xff}
2268         },
2269         /* act_tid: 3, wh_plus, table: int_encap_mac_record.0 */
2270         {
2271         .description = "ecv_tun_type",
2272         .field_bit_size = 3,
2273         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2274         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2275         },
2276         {
2277         .description = "ecv_l4_type",
2278         .field_bit_size = 3,
2279         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2280         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2281         },
2282         {
2283         .description = "ecv_l3_type",
2284         .field_bit_size = 3,
2285         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2286         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2287         },
2288         {
2289         .description = "ecv_l2_en",
2290         .field_bit_size = 1,
2291         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2292         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
2293         .field_opr1 = {
2294         ULP_WP_SYM_ECV_L2_EN_YES}
2295         },
2296         {
2297         .description = "ecv_vtag_type",
2298         .field_bit_size = 4,
2299         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2300         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2301         },
2302         {
2303         .description = "ecv_custom_en",
2304         .field_bit_size = 1,
2305         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2306         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2307         },
2308         {
2309         .description = "ecv_valid",
2310         .field_bit_size = 1,
2311         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2312         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
2313         .field_opr1 = {
2314         1}
2315         },
2316         {
2317         .description = "vtag_tpid",
2318         .field_bit_size = 16,
2319         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2320         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2321         },
2322         {
2323         .description = "vtag_vid",
2324         .field_bit_size = 12,
2325         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2326         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2327         },
2328         {
2329         .description = "vtag_de",
2330         .field_bit_size = 1,
2331         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2332         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2333         },
2334         {
2335         .description = "vtag_pcp",
2336         .field_bit_size = 3,
2337         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2338         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2339         },
2340         {
2341         .description = "spare",
2342         .field_bit_size = 80,
2343         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2344         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2345         },
2346         /* act_tid: 3, wh_plus, table: int_full_act_record.0 */
2347         {
2348         .description = "flow_cntr_ptr",
2349         .field_bit_size = 14,
2350         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2351         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
2352         .field_opr1 = {
2353         (BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 >> 8) & 0xff,
2354         BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 & 0xff}
2355         },
2356         {
2357         .description = "age_enable",
2358         .field_bit_size = 1,
2359         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2360         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2361         },
2362         {
2363         .description = "agg_cntr_en",
2364         .field_bit_size = 1,
2365         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2366         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2367         },
2368         {
2369         .description = "rate_cntr_en",
2370         .field_bit_size = 1,
2371         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2372         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2373         },
2374         {
2375         .description = "flow_cntr_en",
2376         .field_bit_size = 1,
2377         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2378         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
2379         .field_opr1 = {
2380         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 56) & 0xff,
2381         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 48) & 0xff,
2382         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 40) & 0xff,
2383         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 32) & 0xff,
2384         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 24) & 0xff,
2385         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 16) & 0xff,
2386         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 8) & 0xff,
2387         (uint64_t)BNXT_ULP_ACT_BIT_COUNT & 0xff}
2388         },
2389         {
2390         .description = "tcpflags_key",
2391         .field_bit_size = 8,
2392         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2393         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2394         },
2395         {
2396         .description = "tcpflags_mir",
2397         .field_bit_size = 1,
2398         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2399         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2400         },
2401         {
2402         .description = "tcpflags_match",
2403         .field_bit_size = 1,
2404         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2405         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2406         },
2407         {
2408         .description = "encap_ptr",
2409         .field_bit_size = 11,
2410         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2411         .field_src1 = BNXT_ULP_FIELD_SRC_GLB_RF,
2412         .field_opr1 = {
2413         (BNXT_ULP_GLB_RF_IDX_ENCAP_MAC_PTR >> 8) & 0xff,
2414         BNXT_ULP_GLB_RF_IDX_ENCAP_MAC_PTR & 0xff}
2415         },
2416         {
2417         .description = "dst_ip_ptr",
2418         .field_bit_size = 10,
2419         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2420         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
2421         .field_opr1 = {
2422         (BNXT_ULP_RF_IDX_MODIFY_IPV4_DST_PTR_0 >> 8) & 0xff,
2423         BNXT_ULP_RF_IDX_MODIFY_IPV4_DST_PTR_0 & 0xff}
2424         },
2425         {
2426         .description = "tcp_dst_port",
2427         .field_bit_size = 16,
2428         .field_opc = BNXT_ULP_FIELD_OPC_SRC1_THEN_SRC2_ELSE_SRC3,
2429         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
2430         .field_opr1 = {
2431         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 56) & 0xff,
2432         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 48) & 0xff,
2433         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 40) & 0xff,
2434         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 32) & 0xff,
2435         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 24) & 0xff,
2436         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 16) & 0xff,
2437         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 8) & 0xff,
2438         (uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST & 0xff},
2439         .field_src2 = BNXT_ULP_FIELD_SRC_ACT_PROP,
2440         .field_opr2 = {
2441                 (BNXT_ULP_ACT_PROP_IDX_SET_TP_DST >> 8) & 0xff,
2442                 BNXT_ULP_ACT_PROP_IDX_SET_TP_DST & 0xff},
2443         .field_src3 = BNXT_ULP_FIELD_SRC_ZERO
2444         },
2445         {
2446         .description = "src_ip_ptr",
2447         .field_bit_size = 10,
2448         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2449         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
2450         .field_opr1 = {
2451         (BNXT_ULP_RF_IDX_MODIFY_IPV4_SRC_PTR_0 >> 8) & 0xff,
2452         BNXT_ULP_RF_IDX_MODIFY_IPV4_SRC_PTR_0 & 0xff}
2453         },
2454         {
2455         .description = "tcp_src_port",
2456         .field_bit_size = 16,
2457         .field_opc = BNXT_ULP_FIELD_OPC_SRC1_THEN_SRC2_ELSE_SRC3,
2458         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
2459         .field_opr1 = {
2460         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 56) & 0xff,
2461         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 48) & 0xff,
2462         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 40) & 0xff,
2463         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 32) & 0xff,
2464         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 24) & 0xff,
2465         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 16) & 0xff,
2466         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 8) & 0xff,
2467         (uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC & 0xff},
2468         .field_src2 = BNXT_ULP_FIELD_SRC_ACT_PROP,
2469         .field_opr2 = {
2470                 (BNXT_ULP_ACT_PROP_IDX_SET_TP_SRC >> 8) & 0xff,
2471                 BNXT_ULP_ACT_PROP_IDX_SET_TP_SRC & 0xff},
2472         .field_src3 = BNXT_ULP_FIELD_SRC_ZERO
2473         },
2474         {
2475         .description = "meter_id",
2476         .field_bit_size = 10,
2477         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2478         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2479         },
2480         {
2481         .description = "l3_rdir",
2482         .field_bit_size = 1,
2483         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2484         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2485         },
2486         {
2487         .description = "tl3_rdir",
2488         .field_bit_size = 1,
2489         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2490         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2491         },
2492         {
2493         .description = "l3_ttl_dec",
2494         .field_bit_size = 1,
2495         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2496         .field_src1 = BNXT_ULP_FIELD_SRC_CF,
2497         .field_opr1 = {
2498         (BNXT_ULP_CF_IDX_ACT_DEC_TTL >> 8) & 0xff,
2499         BNXT_ULP_CF_IDX_ACT_DEC_TTL & 0xff}
2500         },
2501         {
2502         .description = "tl3_ttl_dec",
2503         .field_bit_size = 1,
2504         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2505         .field_src1 = BNXT_ULP_FIELD_SRC_CF,
2506         .field_opr1 = {
2507         (BNXT_ULP_CF_IDX_ACT_T_DEC_TTL >> 8) & 0xff,
2508         BNXT_ULP_CF_IDX_ACT_T_DEC_TTL & 0xff}
2509         },
2510         {
2511         .description = "decap_func",
2512         .field_bit_size = 4,
2513         .field_opc = BNXT_ULP_FIELD_OPC_SRC1_THEN_SRC2_ELSE_SRC3,
2514         .field_src1 = BNXT_ULP_FIELD_SRC_HDR_BIT,
2515         .field_opr1 = {
2516         ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 56) & 0xff,
2517         ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 48) & 0xff,
2518         ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 40) & 0xff,
2519         ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 32) & 0xff,
2520         ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 24) & 0xff,
2521         ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 16) & 0xff,
2522         ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 8) & 0xff,
2523         (uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN & 0xff},
2524         .field_src2 = BNXT_ULP_FIELD_SRC_CONST,
2525         .field_opr2 = {
2526                 ULP_WP_SYM_DECAP_FUNC_THRU_TL2},
2527         .field_src3 = BNXT_ULP_FIELD_SRC_CONST,
2528         .field_opr3 = {
2529         ULP_WP_SYM_DECAP_FUNC_THRU_L2}
2530         },
2531         {
2532         .description = "vnic_or_vport",
2533         .field_bit_size = 12,
2534         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2535         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
2536         .field_opr1 = {
2537         (BNXT_ULP_ACT_PROP_IDX_VNIC >> 8) & 0xff,
2538         BNXT_ULP_ACT_PROP_IDX_VNIC & 0xff}
2539         },
2540         {
2541         .description = "pop_vlan",
2542         .field_bit_size = 1,
2543         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2544         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2545         },
2546         {
2547         .description = "meter",
2548         .field_bit_size = 1,
2549         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2550         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2551         },
2552         {
2553         .description = "mirror",
2554         .field_bit_size = 2,
2555         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2556         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2557         },
2558         {
2559         .description = "drop",
2560         .field_bit_size = 1,
2561         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2562         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2563         },
2564         {
2565         .description = "hit",
2566         .field_bit_size = 1,
2567         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2568         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2569         },
2570         {
2571         .description = "type",
2572         .field_bit_size = 1,
2573         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2574         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2575         },
2576         /* act_tid: 3, wh_plus, table: ext_full_act_record.0 */
2577         {
2578         .description = "flow_cntr_ptr",
2579         .field_bit_size = 14,
2580         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2581         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
2582         .field_opr1 = {
2583         (BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 >> 8) & 0xff,
2584         BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 & 0xff}
2585         },
2586         {
2587         .description = "age_enable",
2588         .field_bit_size = 1,
2589         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2590         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2591         },
2592         {
2593         .description = "agg_cntr_en",
2594         .field_bit_size = 1,
2595         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2596         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2597         },
2598         {
2599         .description = "rate_cntr_en",
2600         .field_bit_size = 1,
2601         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2602         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2603         },
2604         {
2605         .description = "flow_cntr_en",
2606         .field_bit_size = 1,
2607         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2608         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
2609         .field_opr1 = {
2610         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 56) & 0xff,
2611         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 48) & 0xff,
2612         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 40) & 0xff,
2613         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 32) & 0xff,
2614         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 24) & 0xff,
2615         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 16) & 0xff,
2616         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 8) & 0xff,
2617         (uint64_t)BNXT_ULP_ACT_BIT_COUNT & 0xff}
2618         },
2619         {
2620         .description = "flow_cntr_ext",
2621         .field_bit_size = 1,
2622         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2623         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2624         },
2625         {
2626         .description = "tcpflags_key",
2627         .field_bit_size = 8,
2628         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2629         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2630         },
2631         {
2632         .description = "tcpflags_mir",
2633         .field_bit_size = 1,
2634         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2635         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2636         },
2637         {
2638         .description = "tcpflags_match",
2639         .field_bit_size = 1,
2640         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2641         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2642         },
2643         {
2644         .description = "encap_ptr",
2645         .field_bit_size = 11,
2646         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2647         .field_src1 = BNXT_ULP_FIELD_SRC_GLB_RF,
2648         .field_opr1 = {
2649         (BNXT_ULP_GLB_RF_IDX_ENCAP_MAC_PTR >> 8) & 0xff,
2650         BNXT_ULP_GLB_RF_IDX_ENCAP_MAC_PTR & 0xff}
2651         },
2652         {
2653         .description = "encap_rec_int",
2654         .field_bit_size = 1,
2655         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2656         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
2657         .field_opr1 = {
2658         1}
2659         },
2660         {
2661         .description = "dst_ip_ptr",
2662         .field_bit_size = 10,
2663         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2664         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
2665         .field_opr1 = {
2666         (BNXT_ULP_RF_IDX_MODIFY_IPV4_DST_PTR_0 >> 8) & 0xff,
2667         BNXT_ULP_RF_IDX_MODIFY_IPV4_DST_PTR_0 & 0xff}
2668         },
2669         {
2670         .description = "tcp_dst_port",
2671         .field_bit_size = 16,
2672         .field_opc = BNXT_ULP_FIELD_OPC_SRC1_THEN_SRC2_ELSE_SRC3,
2673         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
2674         .field_opr1 = {
2675         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 56) & 0xff,
2676         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 48) & 0xff,
2677         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 40) & 0xff,
2678         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 32) & 0xff,
2679         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 24) & 0xff,
2680         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 16) & 0xff,
2681         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 8) & 0xff,
2682         (uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST & 0xff},
2683         .field_src2 = BNXT_ULP_FIELD_SRC_ACT_PROP,
2684         .field_opr2 = {
2685                 (BNXT_ULP_ACT_PROP_IDX_SET_TP_DST >> 8) & 0xff,
2686                 BNXT_ULP_ACT_PROP_IDX_SET_TP_DST & 0xff},
2687         .field_src3 = BNXT_ULP_FIELD_SRC_ZERO
2688         },
2689         {
2690         .description = "src_ip_ptr",
2691         .field_bit_size = 10,
2692         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2693         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
2694         .field_opr1 = {
2695         (BNXT_ULP_RF_IDX_MODIFY_IPV4_SRC_PTR_0 >> 8) & 0xff,
2696         BNXT_ULP_RF_IDX_MODIFY_IPV4_SRC_PTR_0 & 0xff}
2697         },
2698         {
2699         .description = "tcp_src_port",
2700         .field_bit_size = 16,
2701         .field_opc = BNXT_ULP_FIELD_OPC_SRC1_THEN_SRC2_ELSE_SRC3,
2702         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
2703         .field_opr1 = {
2704         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 56) & 0xff,
2705         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 48) & 0xff,
2706         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 40) & 0xff,
2707         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 32) & 0xff,
2708         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 24) & 0xff,
2709         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 16) & 0xff,
2710         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 8) & 0xff,
2711         (uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC & 0xff},
2712         .field_src2 = BNXT_ULP_FIELD_SRC_ACT_PROP,
2713         .field_opr2 = {
2714                 (BNXT_ULP_ACT_PROP_IDX_SET_TP_SRC >> 8) & 0xff,
2715                 BNXT_ULP_ACT_PROP_IDX_SET_TP_SRC & 0xff},
2716         .field_src3 = BNXT_ULP_FIELD_SRC_ZERO
2717         },
2718         {
2719         .description = "meter_id",
2720         .field_bit_size = 10,
2721         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2722         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2723         },
2724         {
2725         .description = "l3_rdir",
2726         .field_bit_size = 1,
2727         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2728         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2729         },
2730         {
2731         .description = "tl3_rdir",
2732         .field_bit_size = 1,
2733         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2734         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2735         },
2736         {
2737         .description = "l3_ttl_dec",
2738         .field_bit_size = 1,
2739         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2740         .field_src1 = BNXT_ULP_FIELD_SRC_CF,
2741         .field_opr1 = {
2742         (BNXT_ULP_CF_IDX_ACT_DEC_TTL >> 8) & 0xff,
2743         BNXT_ULP_CF_IDX_ACT_DEC_TTL & 0xff}
2744         },
2745         {
2746         .description = "tl3_ttl_dec",
2747         .field_bit_size = 1,
2748         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2749         .field_src1 = BNXT_ULP_FIELD_SRC_CF,
2750         .field_opr1 = {
2751         (BNXT_ULP_CF_IDX_ACT_T_DEC_TTL >> 8) & 0xff,
2752         BNXT_ULP_CF_IDX_ACT_T_DEC_TTL & 0xff}
2753         },
2754         {
2755         .description = "decap_func",
2756         .field_bit_size = 4,
2757         .field_opc = BNXT_ULP_FIELD_OPC_SRC1_THEN_SRC2_ELSE_SRC3,
2758         .field_src1 = BNXT_ULP_FIELD_SRC_HDR_BIT,
2759         .field_opr1 = {
2760         ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 56) & 0xff,
2761         ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 48) & 0xff,
2762         ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 40) & 0xff,
2763         ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 32) & 0xff,
2764         ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 24) & 0xff,
2765         ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 16) & 0xff,
2766         ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 8) & 0xff,
2767         (uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN & 0xff},
2768         .field_src2 = BNXT_ULP_FIELD_SRC_CONST,
2769         .field_opr2 = {
2770                 ULP_WP_SYM_DECAP_FUNC_THRU_TL2},
2771         .field_src3 = BNXT_ULP_FIELD_SRC_CONST,
2772         .field_opr3 = {
2773         ULP_WP_SYM_DECAP_FUNC_THRU_L2}
2774         },
2775         {
2776         .description = "vnic_or_vport",
2777         .field_bit_size = 12,
2778         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2779         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
2780         .field_opr1 = {
2781         (BNXT_ULP_ACT_PROP_IDX_VNIC >> 8) & 0xff,
2782         BNXT_ULP_ACT_PROP_IDX_VNIC & 0xff}
2783         },
2784         {
2785         .description = "pop_vlan",
2786         .field_bit_size = 1,
2787         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2788         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2789         },
2790         {
2791         .description = "meter",
2792         .field_bit_size = 1,
2793         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2794         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2795         },
2796         {
2797         .description = "mirror",
2798         .field_bit_size = 2,
2799         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2800         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2801         },
2802         {
2803         .description = "drop",
2804         .field_bit_size = 1,
2805         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2806         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2807         },
2808         {
2809         .description = "ecv_tun_type",
2810         .field_bit_size = 3,
2811         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2812         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2813         },
2814         {
2815         .description = "ecv_l4_type",
2816         .field_bit_size = 3,
2817         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2818         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2819         },
2820         {
2821         .description = "ecv_l3_type",
2822         .field_bit_size = 3,
2823         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2824         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2825         },
2826         {
2827         .description = "ecv_l2_en",
2828         .field_bit_size = 1,
2829         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2830         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
2831         .field_opr1 = {
2832         ULP_WP_SYM_ECV_L2_EN_YES}
2833         },
2834         {
2835         .description = "ecv_vtag_type",
2836         .field_bit_size = 4,
2837         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2838         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2839         },
2840         {
2841         .description = "ecv_custom_en",
2842         .field_bit_size = 1,
2843         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2844         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2845         },
2846         {
2847         .description = "ecv_valid",
2848         .field_bit_size = 1,
2849         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2850         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2851         },
2852         {
2853         .description = "vtag_tpid",
2854         .field_bit_size = 16,
2855         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2856         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2857         },
2858         {
2859         .description = "vtag_vid",
2860         .field_bit_size = 12,
2861         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2862         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2863         },
2864         {
2865         .description = "vtag_de",
2866         .field_bit_size = 1,
2867         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2868         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2869         },
2870         {
2871         .description = "vtag_pcp",
2872         .field_bit_size = 3,
2873         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2874         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2875         },
2876         {
2877         .description = "spare",
2878         .field_bit_size = 0,
2879         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2880         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2881         },
2882         /* act_tid: 4, wh_plus, table: int_flow_counter_tbl.0 */
2883         {
2884         .description = "count",
2885         .field_bit_size = 64,
2886         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2887         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2888         },
2889         /* act_tid: 4, wh_plus, table: int_vtag_encap_record.0 */
2890         {
2891         .description = "ecv_tun_type",
2892         .field_bit_size = 3,
2893         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2894         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2895         },
2896         {
2897         .description = "ecv_l4_type",
2898         .field_bit_size = 3,
2899         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2900         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2901         },
2902         {
2903         .description = "ecv_l3_type",
2904         .field_bit_size = 3,
2905         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2906         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2907         },
2908         {
2909         .description = "ecv_l2_en",
2910         .field_bit_size = 1,
2911         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2912         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2913         },
2914         {
2915         .description = "ecv_vtag_type",
2916         .field_bit_size = 4,
2917         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2918         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
2919         .field_opr1 = {
2920         ULP_WP_SYM_ECV_VTAG_TYPE_ADD_1_ENCAP_PRI}
2921         },
2922         {
2923         .description = "ecv_custom_en",
2924         .field_bit_size = 1,
2925         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2926         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2927         },
2928         {
2929         .description = "ecv_valid",
2930         .field_bit_size = 1,
2931         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2932         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
2933         .field_opr1 = {
2934         1}
2935         },
2936         {
2937         .description = "vtag_tpid",
2938         .field_bit_size = 16,
2939         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2940         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
2941         .field_opr1 = {
2942         (BNXT_ULP_ACT_PROP_IDX_PUSH_VLAN >> 8) & 0xff,
2943         BNXT_ULP_ACT_PROP_IDX_PUSH_VLAN & 0xff}
2944         },
2945         {
2946         .description = "vtag_vid",
2947         .field_bit_size = 12,
2948         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2949         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
2950         .field_opr1 = {
2951         (BNXT_ULP_ACT_PROP_IDX_SET_VLAN_VID >> 8) & 0xff,
2952         BNXT_ULP_ACT_PROP_IDX_SET_VLAN_VID & 0xff}
2953         },
2954         {
2955         .description = "vtag_de",
2956         .field_bit_size = 1,
2957         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2958         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2959         },
2960         {
2961         .description = "vtag_pcp",
2962         .field_bit_size = 3,
2963         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2964         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
2965         .field_opr1 = {
2966         (BNXT_ULP_ACT_PROP_IDX_SET_VLAN_PCP >> 8) & 0xff,
2967         BNXT_ULP_ACT_PROP_IDX_SET_VLAN_PCP & 0xff}
2968         },
2969         {
2970         .description = "spare",
2971         .field_bit_size = 80,
2972         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2973         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2974         },
2975         /* act_tid: 4, wh_plus, table: int_full_act_record.0 */
2976         {
2977         .description = "flow_cntr_ptr",
2978         .field_bit_size = 14,
2979         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2980         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
2981         .field_opr1 = {
2982         (BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 >> 8) & 0xff,
2983         BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 & 0xff}
2984         },
2985         {
2986         .description = "age_enable",
2987         .field_bit_size = 1,
2988         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2989         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2990         },
2991         {
2992         .description = "agg_cntr_en",
2993         .field_bit_size = 1,
2994         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
2995         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
2996         },
2997         {
2998         .description = "rate_cntr_en",
2999         .field_bit_size = 1,
3000         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3001         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3002         },
3003         {
3004         .description = "flow_cntr_en",
3005         .field_bit_size = 1,
3006         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3007         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
3008         .field_opr1 = {
3009         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 56) & 0xff,
3010         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 48) & 0xff,
3011         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 40) & 0xff,
3012         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 32) & 0xff,
3013         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 24) & 0xff,
3014         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 16) & 0xff,
3015         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 8) & 0xff,
3016         (uint64_t)BNXT_ULP_ACT_BIT_COUNT & 0xff}
3017         },
3018         {
3019         .description = "tcpflags_key",
3020         .field_bit_size = 8,
3021         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3022         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3023         },
3024         {
3025         .description = "tcpflags_mir",
3026         .field_bit_size = 1,
3027         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3028         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3029         },
3030         {
3031         .description = "tcpflags_match",
3032         .field_bit_size = 1,
3033         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3034         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3035         },
3036         {
3037         .description = "encap_ptr",
3038         .field_bit_size = 11,
3039         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3040         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
3041         .field_opr1 = {
3042         (BNXT_ULP_RF_IDX_ENCAP_PTR_0 >> 8) & 0xff,
3043         BNXT_ULP_RF_IDX_ENCAP_PTR_0 & 0xff}
3044         },
3045         {
3046         .description = "dst_ip_ptr",
3047         .field_bit_size = 10,
3048         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3049         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3050         },
3051         {
3052         .description = "tcp_dst_port",
3053         .field_bit_size = 16,
3054         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3055         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3056         },
3057         {
3058         .description = "src_ip_ptr",
3059         .field_bit_size = 10,
3060         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3061         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3062         },
3063         {
3064         .description = "tcp_src_port",
3065         .field_bit_size = 16,
3066         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3067         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3068         },
3069         {
3070         .description = "meter_id",
3071         .field_bit_size = 10,
3072         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3073         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3074         },
3075         {
3076         .description = "l3_rdir",
3077         .field_bit_size = 1,
3078         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3079         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3080         },
3081         {
3082         .description = "tl3_rdir",
3083         .field_bit_size = 1,
3084         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3085         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3086         },
3087         {
3088         .description = "l3_ttl_dec",
3089         .field_bit_size = 1,
3090         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3091         .field_src1 = BNXT_ULP_FIELD_SRC_CF,
3092         .field_opr1 = {
3093         (BNXT_ULP_CF_IDX_ACT_DEC_TTL >> 8) & 0xff,
3094         BNXT_ULP_CF_IDX_ACT_DEC_TTL & 0xff}
3095         },
3096         {
3097         .description = "tl3_ttl_dec",
3098         .field_bit_size = 1,
3099         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3100         .field_src1 = BNXT_ULP_FIELD_SRC_CF,
3101         .field_opr1 = {
3102         (BNXT_ULP_CF_IDX_ACT_T_DEC_TTL >> 8) & 0xff,
3103         BNXT_ULP_CF_IDX_ACT_T_DEC_TTL & 0xff}
3104         },
3105         {
3106         .description = "decap_func",
3107         .field_bit_size = 4,
3108         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3109         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3110         },
3111         {
3112         .description = "vnic_or_vport",
3113         .field_bit_size = 12,
3114         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3115         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
3116         .field_opr1 = {
3117         (BNXT_ULP_ACT_PROP_IDX_VPORT >> 8) & 0xff,
3118         BNXT_ULP_ACT_PROP_IDX_VPORT & 0xff}
3119         },
3120         {
3121         .description = "pop_vlan",
3122         .field_bit_size = 1,
3123         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3124         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3125         },
3126         {
3127         .description = "meter",
3128         .field_bit_size = 1,
3129         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3130         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3131         },
3132         {
3133         .description = "mirror",
3134         .field_bit_size = 2,
3135         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3136         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3137         },
3138         {
3139         .description = "drop",
3140         .field_bit_size = 1,
3141         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3142         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
3143         .field_opr1 = {
3144         ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 56) & 0xff,
3145         ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 48) & 0xff,
3146         ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 40) & 0xff,
3147         ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 32) & 0xff,
3148         ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 24) & 0xff,
3149         ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 16) & 0xff,
3150         ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 8) & 0xff,
3151         (uint64_t)BNXT_ULP_ACT_BIT_DROP & 0xff}
3152         },
3153         {
3154         .description = "hit",
3155         .field_bit_size = 1,
3156         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3157         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3158         },
3159         {
3160         .description = "type",
3161         .field_bit_size = 1,
3162         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3163         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3164         },
3165         /* act_tid: 4, wh_plus, table: ext_full_act_record.no_tag */
3166         {
3167         .description = "flow_cntr_ptr",
3168         .field_bit_size = 14,
3169         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3170         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
3171         .field_opr1 = {
3172         (BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 >> 8) & 0xff,
3173         BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 & 0xff}
3174         },
3175         {
3176         .description = "age_enable",
3177         .field_bit_size = 1,
3178         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3179         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3180         },
3181         {
3182         .description = "agg_cntr_en",
3183         .field_bit_size = 1,
3184         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3185         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3186         },
3187         {
3188         .description = "rate_cntr_en",
3189         .field_bit_size = 1,
3190         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3191         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3192         },
3193         {
3194         .description = "flow_cntr_en",
3195         .field_bit_size = 1,
3196         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3197         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
3198         .field_opr1 = {
3199         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 56) & 0xff,
3200         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 48) & 0xff,
3201         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 40) & 0xff,
3202         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 32) & 0xff,
3203         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 24) & 0xff,
3204         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 16) & 0xff,
3205         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 8) & 0xff,
3206         (uint64_t)BNXT_ULP_ACT_BIT_COUNT & 0xff}
3207         },
3208         {
3209         .description = "flow_cntr_ext",
3210         .field_bit_size = 1,
3211         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3212         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3213         },
3214         {
3215         .description = "tcpflags_key",
3216         .field_bit_size = 8,
3217         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3218         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3219         },
3220         {
3221         .description = "tcpflags_mir",
3222         .field_bit_size = 1,
3223         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3224         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3225         },
3226         {
3227         .description = "tcpflags_match",
3228         .field_bit_size = 1,
3229         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3230         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3231         },
3232         {
3233         .description = "encap_ptr",
3234         .field_bit_size = 11,
3235         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3236         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3237         },
3238         {
3239         .description = "encap_rec_int",
3240         .field_bit_size = 1,
3241         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3242         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3243         },
3244         {
3245         .description = "dst_ip_ptr",
3246         .field_bit_size = 10,
3247         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3248         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3249         },
3250         {
3251         .description = "tcp_dst_port",
3252         .field_bit_size = 16,
3253         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3254         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3255         },
3256         {
3257         .description = "src_ip_ptr",
3258         .field_bit_size = 10,
3259         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3260         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3261         },
3262         {
3263         .description = "tcp_src_port",
3264         .field_bit_size = 16,
3265         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3266         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3267         },
3268         {
3269         .description = "meter_id",
3270         .field_bit_size = 10,
3271         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3272         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3273         },
3274         {
3275         .description = "l3_rdir",
3276         .field_bit_size = 1,
3277         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3278         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3279         },
3280         {
3281         .description = "tl3_rdir",
3282         .field_bit_size = 1,
3283         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3284         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3285         },
3286         {
3287         .description = "l3_ttl_dec",
3288         .field_bit_size = 1,
3289         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3290         .field_src1 = BNXT_ULP_FIELD_SRC_CF,
3291         .field_opr1 = {
3292         (BNXT_ULP_CF_IDX_ACT_DEC_TTL >> 8) & 0xff,
3293         BNXT_ULP_CF_IDX_ACT_DEC_TTL & 0xff}
3294         },
3295         {
3296         .description = "tl3_ttl_dec",
3297         .field_bit_size = 1,
3298         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3299         .field_src1 = BNXT_ULP_FIELD_SRC_CF,
3300         .field_opr1 = {
3301         (BNXT_ULP_CF_IDX_ACT_T_DEC_TTL >> 8) & 0xff,
3302         BNXT_ULP_CF_IDX_ACT_T_DEC_TTL & 0xff}
3303         },
3304         {
3305         .description = "decap_func",
3306         .field_bit_size = 4,
3307         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3308         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3309         },
3310         {
3311         .description = "vnic_or_vport",
3312         .field_bit_size = 12,
3313         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3314         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
3315         .field_opr1 = {
3316         (BNXT_ULP_ACT_PROP_IDX_VPORT >> 8) & 0xff,
3317         BNXT_ULP_ACT_PROP_IDX_VPORT & 0xff}
3318         },
3319         {
3320         .description = "pop_vlan",
3321         .field_bit_size = 1,
3322         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3323         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3324         },
3325         {
3326         .description = "meter",
3327         .field_bit_size = 1,
3328         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3329         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3330         },
3331         {
3332         .description = "mirror",
3333         .field_bit_size = 2,
3334         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3335         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3336         },
3337         {
3338         .description = "drop",
3339         .field_bit_size = 1,
3340         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3341         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
3342         .field_opr1 = {
3343         ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 56) & 0xff,
3344         ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 48) & 0xff,
3345         ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 40) & 0xff,
3346         ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 32) & 0xff,
3347         ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 24) & 0xff,
3348         ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 16) & 0xff,
3349         ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 8) & 0xff,
3350         (uint64_t)BNXT_ULP_ACT_BIT_DROP & 0xff}
3351         },
3352         {
3353         .description = "ecv_tun_type",
3354         .field_bit_size = 3,
3355         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3356         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3357         },
3358         {
3359         .description = "ecv_l4_type",
3360         .field_bit_size = 3,
3361         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3362         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3363         },
3364         {
3365         .description = "ecv_l3_type",
3366         .field_bit_size = 3,
3367         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3368         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3369         },
3370         {
3371         .description = "ecv_l2_en",
3372         .field_bit_size = 1,
3373         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3374         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
3375         .field_opr1 = {
3376         ULP_WP_SYM_ECV_L2_EN_YES}
3377         },
3378         {
3379         .description = "ecv_vtag_type",
3380         .field_bit_size = 4,
3381         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3382         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3383         },
3384         {
3385         .description = "ecv_custom_en",
3386         .field_bit_size = 1,
3387         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3388         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3389         },
3390         {
3391         .description = "ecv_valid",
3392         .field_bit_size = 1,
3393         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3394         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3395         },
3396         {
3397         .description = "vtag_tpid",
3398         .field_bit_size = 16,
3399         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3400         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3401         },
3402         {
3403         .description = "vtag_vid",
3404         .field_bit_size = 12,
3405         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3406         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3407         },
3408         {
3409         .description = "vtag_de",
3410         .field_bit_size = 1,
3411         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3412         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3413         },
3414         {
3415         .description = "vtag_pcp",
3416         .field_bit_size = 3,
3417         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3418         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3419         },
3420         {
3421         .description = "spare",
3422         .field_bit_size = 0,
3423         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3424         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3425         },
3426         /* act_tid: 4, wh_plus, table: ext_full_act_record.one_tag */
3427         {
3428         .description = "flow_cntr_ptr",
3429         .field_bit_size = 14,
3430         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3431         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
3432         .field_opr1 = {
3433         (BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 >> 8) & 0xff,
3434         BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 & 0xff}
3435         },
3436         {
3437         .description = "age_enable",
3438         .field_bit_size = 1,
3439         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3440         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3441         },
3442         {
3443         .description = "agg_cntr_en",
3444         .field_bit_size = 1,
3445         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3446         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3447         },
3448         {
3449         .description = "rate_cntr_en",
3450         .field_bit_size = 1,
3451         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3452         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3453         },
3454         {
3455         .description = "flow_cntr_en",
3456         .field_bit_size = 1,
3457         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3458         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
3459         .field_opr1 = {
3460         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 56) & 0xff,
3461         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 48) & 0xff,
3462         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 40) & 0xff,
3463         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 32) & 0xff,
3464         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 24) & 0xff,
3465         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 16) & 0xff,
3466         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 8) & 0xff,
3467         (uint64_t)BNXT_ULP_ACT_BIT_COUNT & 0xff}
3468         },
3469         {
3470         .description = "flow_cntr_ext",
3471         .field_bit_size = 1,
3472         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3473         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3474         },
3475         {
3476         .description = "tcpflags_key",
3477         .field_bit_size = 8,
3478         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3479         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3480         },
3481         {
3482         .description = "tcpflags_mir",
3483         .field_bit_size = 1,
3484         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3485         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3486         },
3487         {
3488         .description = "tcpflags_match",
3489         .field_bit_size = 1,
3490         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3491         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3492         },
3493         {
3494         .description = "encap_ptr",
3495         .field_bit_size = 11,
3496         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3497         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3498         },
3499         {
3500         .description = "encap_rec_int",
3501         .field_bit_size = 1,
3502         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3503         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3504         },
3505         {
3506         .description = "dst_ip_ptr",
3507         .field_bit_size = 10,
3508         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3509         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3510         },
3511         {
3512         .description = "tcp_dst_port",
3513         .field_bit_size = 16,
3514         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3515         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3516         },
3517         {
3518         .description = "src_ip_ptr",
3519         .field_bit_size = 10,
3520         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3521         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3522         },
3523         {
3524         .description = "tcp_src_port",
3525         .field_bit_size = 16,
3526         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3527         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3528         },
3529         {
3530         .description = "meter_id",
3531         .field_bit_size = 10,
3532         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3533         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3534         },
3535         {
3536         .description = "l3_rdir",
3537         .field_bit_size = 1,
3538         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3539         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3540         },
3541         {
3542         .description = "tl3_rdir",
3543         .field_bit_size = 1,
3544         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3545         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3546         },
3547         {
3548         .description = "l3_ttl_dec",
3549         .field_bit_size = 1,
3550         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3551         .field_src1 = BNXT_ULP_FIELD_SRC_CF,
3552         .field_opr1 = {
3553         (BNXT_ULP_CF_IDX_ACT_DEC_TTL >> 8) & 0xff,
3554         BNXT_ULP_CF_IDX_ACT_DEC_TTL & 0xff}
3555         },
3556         {
3557         .description = "tl3_ttl_dec",
3558         .field_bit_size = 1,
3559         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3560         .field_src1 = BNXT_ULP_FIELD_SRC_CF,
3561         .field_opr1 = {
3562         (BNXT_ULP_CF_IDX_ACT_T_DEC_TTL >> 8) & 0xff,
3563         BNXT_ULP_CF_IDX_ACT_T_DEC_TTL & 0xff}
3564         },
3565         {
3566         .description = "decap_func",
3567         .field_bit_size = 4,
3568         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3569         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3570         },
3571         {
3572         .description = "vnic_or_vport",
3573         .field_bit_size = 12,
3574         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3575         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
3576         .field_opr1 = {
3577         (BNXT_ULP_ACT_PROP_IDX_VPORT >> 8) & 0xff,
3578         BNXT_ULP_ACT_PROP_IDX_VPORT & 0xff}
3579         },
3580         {
3581         .description = "pop_vlan",
3582         .field_bit_size = 1,
3583         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3584         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
3585         .field_opr1 = {
3586         ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 56) & 0xff,
3587         ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 48) & 0xff,
3588         ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 40) & 0xff,
3589         ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 32) & 0xff,
3590         ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 24) & 0xff,
3591         ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 16) & 0xff,
3592         ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 8) & 0xff,
3593         (uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN & 0xff}
3594         },
3595         {
3596         .description = "meter",
3597         .field_bit_size = 1,
3598         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3599         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3600         },
3601         {
3602         .description = "mirror",
3603         .field_bit_size = 2,
3604         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3605         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3606         },
3607         {
3608         .description = "drop",
3609         .field_bit_size = 1,
3610         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3611         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
3612         .field_opr1 = {
3613         ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 56) & 0xff,
3614         ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 48) & 0xff,
3615         ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 40) & 0xff,
3616         ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 32) & 0xff,
3617         ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 24) & 0xff,
3618         ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 16) & 0xff,
3619         ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 8) & 0xff,
3620         (uint64_t)BNXT_ULP_ACT_BIT_DROP & 0xff}
3621         },
3622         {
3623         .description = "ecv_tun_type",
3624         .field_bit_size = 3,
3625         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3626         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3627         },
3628         {
3629         .description = "ecv_l4_type",
3630         .field_bit_size = 3,
3631         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3632         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3633         },
3634         {
3635         .description = "ecv_l3_type",
3636         .field_bit_size = 3,
3637         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3638         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3639         },
3640         {
3641         .description = "ecv_l2_en",
3642         .field_bit_size = 1,
3643         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3644         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3645         },
3646         {
3647         .description = "ecv_vtag_type",
3648         .field_bit_size = 4,
3649         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3650         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
3651         .field_opr1 = {
3652         ULP_WP_SYM_ECV_VTAG_TYPE_ADD_1_ENCAP_PRI}
3653         },
3654         {
3655         .description = "ecv_custom_en",
3656         .field_bit_size = 1,
3657         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3658         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3659         },
3660         {
3661         .description = "ecv_valid",
3662         .field_bit_size = 1,
3663         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3664         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
3665         .field_opr1 = {
3666         1}
3667         },
3668         {
3669         .description = "vtag_tpid",
3670         .field_bit_size = 16,
3671         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3672         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
3673         .field_opr1 = {
3674         (BNXT_ULP_ACT_PROP_IDX_PUSH_VLAN >> 8) & 0xff,
3675         BNXT_ULP_ACT_PROP_IDX_PUSH_VLAN & 0xff}
3676         },
3677         {
3678         .description = "vtag_vid",
3679         .field_bit_size = 12,
3680         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3681         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
3682         .field_opr1 = {
3683         (BNXT_ULP_ACT_PROP_IDX_SET_VLAN_VID >> 8) & 0xff,
3684         BNXT_ULP_ACT_PROP_IDX_SET_VLAN_VID & 0xff}
3685         },
3686         {
3687         .description = "vtag_de",
3688         .field_bit_size = 1,
3689         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3690         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3691         },
3692         {
3693         .description = "vtag_pcp",
3694         .field_bit_size = 3,
3695         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3696         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
3697         .field_opr1 = {
3698         (BNXT_ULP_ACT_PROP_IDX_SET_VLAN_PCP >> 8) & 0xff,
3699         BNXT_ULP_ACT_PROP_IDX_SET_VLAN_PCP & 0xff}
3700         },
3701         {
3702         .description = "spare",
3703         .field_bit_size = 0,
3704         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3705         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3706         },
3707         /* act_tid: 5, wh_plus, table: int_flow_counter_tbl.0 */
3708         {
3709         .description = "count",
3710         .field_bit_size = 64,
3711         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3712         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3713         },
3714         /* act_tid: 5, wh_plus, table: act_modify_ipv4_src.0 */
3715         {
3716         .description = "ipv4_addr",
3717         .field_bit_size = 32,
3718         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3719         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
3720         .field_opr1 = {
3721         (BNXT_ULP_ACT_PROP_IDX_SET_IPV4_SRC >> 8) & 0xff,
3722         BNXT_ULP_ACT_PROP_IDX_SET_IPV4_SRC & 0xff}
3723         },
3724         /* act_tid: 5, wh_plus, table: act_modify_ipv4_dst.0 */
3725         {
3726         .description = "ipv4_addr",
3727         .field_bit_size = 32,
3728         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3729         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
3730         .field_opr1 = {
3731         (BNXT_ULP_ACT_PROP_IDX_SET_IPV4_DST >> 8) & 0xff,
3732         BNXT_ULP_ACT_PROP_IDX_SET_IPV4_DST & 0xff}
3733         },
3734         /* act_tid: 5, wh_plus, table: int_encap_mac_record.dummy */
3735         {
3736         .description = "ecv_tun_type",
3737         .field_bit_size = 3,
3738         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3739         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3740         },
3741         {
3742         .description = "ecv_l4_type",
3743         .field_bit_size = 3,
3744         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3745         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3746         },
3747         {
3748         .description = "ecv_l3_type",
3749         .field_bit_size = 3,
3750         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3751         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3752         },
3753         {
3754         .description = "ecv_l2_en",
3755         .field_bit_size = 1,
3756         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3757         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
3758         .field_opr1 = {
3759         ULP_WP_SYM_ECV_L2_EN_YES}
3760         },
3761         {
3762         .description = "ecv_vtag_type",
3763         .field_bit_size = 4,
3764         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3765         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3766         },
3767         {
3768         .description = "ecv_custom_en",
3769         .field_bit_size = 1,
3770         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3771         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3772         },
3773         {
3774         .description = "ecv_valid",
3775         .field_bit_size = 1,
3776         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3777         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
3778         .field_opr1 = {
3779         1}
3780         },
3781         {
3782         .description = "vtag_tpid",
3783         .field_bit_size = 16,
3784         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3785         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3786         },
3787         {
3788         .description = "vtag_vid",
3789         .field_bit_size = 12,
3790         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3791         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3792         },
3793         {
3794         .description = "vtag_de",
3795         .field_bit_size = 1,
3796         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3797         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3798         },
3799         {
3800         .description = "vtag_pcp",
3801         .field_bit_size = 3,
3802         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3803         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3804         },
3805         {
3806         .description = "spare",
3807         .field_bit_size = 80,
3808         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3809         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3810         },
3811         /* act_tid: 5, wh_plus, table: int_full_act_record.0 */
3812         {
3813         .description = "flow_cntr_ptr",
3814         .field_bit_size = 14,
3815         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3816         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
3817         .field_opr1 = {
3818         (BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 >> 8) & 0xff,
3819         BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 & 0xff}
3820         },
3821         {
3822         .description = "age_enable",
3823         .field_bit_size = 1,
3824         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3825         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3826         },
3827         {
3828         .description = "agg_cntr_en",
3829         .field_bit_size = 1,
3830         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3831         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3832         },
3833         {
3834         .description = "rate_cntr_en",
3835         .field_bit_size = 1,
3836         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3837         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3838         },
3839         {
3840         .description = "flow_cntr_en",
3841         .field_bit_size = 1,
3842         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3843         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
3844         .field_opr1 = {
3845         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 56) & 0xff,
3846         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 48) & 0xff,
3847         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 40) & 0xff,
3848         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 32) & 0xff,
3849         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 24) & 0xff,
3850         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 16) & 0xff,
3851         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 8) & 0xff,
3852         (uint64_t)BNXT_ULP_ACT_BIT_COUNT & 0xff}
3853         },
3854         {
3855         .description = "tcpflags_key",
3856         .field_bit_size = 8,
3857         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3858         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3859         },
3860         {
3861         .description = "tcpflags_mir",
3862         .field_bit_size = 1,
3863         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3864         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3865         },
3866         {
3867         .description = "tcpflags_match",
3868         .field_bit_size = 1,
3869         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3870         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3871         },
3872         {
3873         .description = "encap_ptr",
3874         .field_bit_size = 11,
3875         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3876         .field_src1 = BNXT_ULP_FIELD_SRC_GLB_RF,
3877         .field_opr1 = {
3878         (BNXT_ULP_GLB_RF_IDX_ENCAP_MAC_PTR >> 8) & 0xff,
3879         BNXT_ULP_GLB_RF_IDX_ENCAP_MAC_PTR & 0xff}
3880         },
3881         {
3882         .description = "dst_ip_ptr",
3883         .field_bit_size = 10,
3884         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3885         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
3886         .field_opr1 = {
3887         (BNXT_ULP_RF_IDX_MODIFY_IPV4_DST_PTR_0 >> 8) & 0xff,
3888         BNXT_ULP_RF_IDX_MODIFY_IPV4_DST_PTR_0 & 0xff}
3889         },
3890         {
3891         .description = "tcp_dst_port",
3892         .field_bit_size = 16,
3893         .field_opc = BNXT_ULP_FIELD_OPC_SRC1_THEN_SRC2_ELSE_SRC3,
3894         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
3895         .field_opr1 = {
3896         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 56) & 0xff,
3897         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 48) & 0xff,
3898         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 40) & 0xff,
3899         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 32) & 0xff,
3900         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 24) & 0xff,
3901         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 16) & 0xff,
3902         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 8) & 0xff,
3903         (uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST & 0xff},
3904         .field_src2 = BNXT_ULP_FIELD_SRC_ACT_PROP,
3905         .field_opr2 = {
3906                 (BNXT_ULP_ACT_PROP_IDX_SET_TP_DST >> 8) & 0xff,
3907                 BNXT_ULP_ACT_PROP_IDX_SET_TP_DST & 0xff},
3908         .field_src3 = BNXT_ULP_FIELD_SRC_ZERO
3909         },
3910         {
3911         .description = "src_ip_ptr",
3912         .field_bit_size = 10,
3913         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3914         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
3915         .field_opr1 = {
3916         (BNXT_ULP_RF_IDX_MODIFY_IPV4_SRC_PTR_0 >> 8) & 0xff,
3917         BNXT_ULP_RF_IDX_MODIFY_IPV4_SRC_PTR_0 & 0xff}
3918         },
3919         {
3920         .description = "tcp_src_port",
3921         .field_bit_size = 16,
3922         .field_opc = BNXT_ULP_FIELD_OPC_SRC1_THEN_SRC2_ELSE_SRC3,
3923         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
3924         .field_opr1 = {
3925         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 56) & 0xff,
3926         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 48) & 0xff,
3927         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 40) & 0xff,
3928         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 32) & 0xff,
3929         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 24) & 0xff,
3930         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 16) & 0xff,
3931         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 8) & 0xff,
3932         (uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC & 0xff},
3933         .field_src2 = BNXT_ULP_FIELD_SRC_ACT_PROP,
3934         .field_opr2 = {
3935                 (BNXT_ULP_ACT_PROP_IDX_SET_TP_SRC >> 8) & 0xff,
3936                 BNXT_ULP_ACT_PROP_IDX_SET_TP_SRC & 0xff},
3937         .field_src3 = BNXT_ULP_FIELD_SRC_ZERO
3938         },
3939         {
3940         .description = "meter_id",
3941         .field_bit_size = 10,
3942         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3943         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3944         },
3945         {
3946         .description = "l3_rdir",
3947         .field_bit_size = 1,
3948         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3949         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3950         },
3951         {
3952         .description = "tl3_rdir",
3953         .field_bit_size = 1,
3954         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3955         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
3956         },
3957         {
3958         .description = "l3_ttl_dec",
3959         .field_bit_size = 1,
3960         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3961         .field_src1 = BNXT_ULP_FIELD_SRC_CF,
3962         .field_opr1 = {
3963         (BNXT_ULP_CF_IDX_ACT_DEC_TTL >> 8) & 0xff,
3964         BNXT_ULP_CF_IDX_ACT_DEC_TTL & 0xff}
3965         },
3966         {
3967         .description = "tl3_ttl_dec",
3968         .field_bit_size = 1,
3969         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
3970         .field_src1 = BNXT_ULP_FIELD_SRC_CF,
3971         .field_opr1 = {
3972         (BNXT_ULP_CF_IDX_ACT_T_DEC_TTL >> 8) & 0xff,
3973         BNXT_ULP_CF_IDX_ACT_T_DEC_TTL & 0xff}
3974         },
3975         {
3976         .description = "decap_func",
3977         .field_bit_size = 4,
3978         .field_opc = BNXT_ULP_FIELD_OPC_SRC1_THEN_SRC2_ELSE_SRC3,
3979         .field_src1 = BNXT_ULP_FIELD_SRC_HDR_BIT,
3980         .field_opr1 = {
3981         ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 56) & 0xff,
3982         ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 48) & 0xff,
3983         ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 40) & 0xff,
3984         ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 32) & 0xff,
3985         ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 24) & 0xff,
3986         ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 16) & 0xff,
3987         ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 8) & 0xff,
3988         (uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN & 0xff},
3989         .field_src2 = BNXT_ULP_FIELD_SRC_CONST,
3990         .field_opr2 = {
3991                 ULP_WP_SYM_DECAP_FUNC_THRU_TL2},
3992         .field_src3 = BNXT_ULP_FIELD_SRC_CONST,
3993         .field_opr3 = {
3994         ULP_WP_SYM_DECAP_FUNC_THRU_L2}
3995         },
3996         {
3997         .description = "vnic_or_vport",
3998         .field_bit_size = 12,
3999         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4000         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
4001         .field_opr1 = {
4002         (BNXT_ULP_ACT_PROP_IDX_VPORT >> 8) & 0xff,
4003         BNXT_ULP_ACT_PROP_IDX_VPORT & 0xff}
4004         },
4005         {
4006         .description = "pop_vlan",
4007         .field_bit_size = 1,
4008         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4009         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4010         },
4011         {
4012         .description = "meter",
4013         .field_bit_size = 1,
4014         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4015         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4016         },
4017         {
4018         .description = "mirror",
4019         .field_bit_size = 2,
4020         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4021         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4022         },
4023         {
4024         .description = "drop",
4025         .field_bit_size = 1,
4026         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4027         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4028         },
4029         {
4030         .description = "hit",
4031         .field_bit_size = 1,
4032         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4033         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4034         },
4035         {
4036         .description = "type",
4037         .field_bit_size = 1,
4038         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4039         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4040         },
4041         /* act_tid: 5, wh_plus, table: ext_full_act_record.0 */
4042         {
4043         .description = "flow_cntr_ptr",
4044         .field_bit_size = 14,
4045         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4046         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
4047         .field_opr1 = {
4048         (BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 >> 8) & 0xff,
4049         BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 & 0xff}
4050         },
4051         {
4052         .description = "age_enable",
4053         .field_bit_size = 1,
4054         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4055         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4056         },
4057         {
4058         .description = "agg_cntr_en",
4059         .field_bit_size = 1,
4060         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4061         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4062         },
4063         {
4064         .description = "rate_cntr_en",
4065         .field_bit_size = 1,
4066         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4067         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4068         },
4069         {
4070         .description = "flow_cntr_en",
4071         .field_bit_size = 1,
4072         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4073         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
4074         .field_opr1 = {
4075         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 56) & 0xff,
4076         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 48) & 0xff,
4077         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 40) & 0xff,
4078         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 32) & 0xff,
4079         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 24) & 0xff,
4080         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 16) & 0xff,
4081         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 8) & 0xff,
4082         (uint64_t)BNXT_ULP_ACT_BIT_COUNT & 0xff}
4083         },
4084         {
4085         .description = "flow_cntr_ext",
4086         .field_bit_size = 1,
4087         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4088         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4089         },
4090         {
4091         .description = "tcpflags_key",
4092         .field_bit_size = 8,
4093         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4094         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4095         },
4096         {
4097         .description = "tcpflags_mir",
4098         .field_bit_size = 1,
4099         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4100         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4101         },
4102         {
4103         .description = "tcpflags_match",
4104         .field_bit_size = 1,
4105         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4106         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4107         },
4108         {
4109         .description = "encap_ptr",
4110         .field_bit_size = 11,
4111         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4112         .field_src1 = BNXT_ULP_FIELD_SRC_GLB_RF,
4113         .field_opr1 = {
4114         (BNXT_ULP_GLB_RF_IDX_ENCAP_MAC_PTR >> 8) & 0xff,
4115         BNXT_ULP_GLB_RF_IDX_ENCAP_MAC_PTR & 0xff}
4116         },
4117         {
4118         .description = "encap_rec_int",
4119         .field_bit_size = 1,
4120         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4121         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
4122         .field_opr1 = {
4123         1}
4124         },
4125         {
4126         .description = "dst_ip_ptr",
4127         .field_bit_size = 10,
4128         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4129         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
4130         .field_opr1 = {
4131         (BNXT_ULP_RF_IDX_MODIFY_IPV4_DST_PTR_0 >> 8) & 0xff,
4132         BNXT_ULP_RF_IDX_MODIFY_IPV4_DST_PTR_0 & 0xff}
4133         },
4134         {
4135         .description = "tcp_dst_port",
4136         .field_bit_size = 16,
4137         .field_opc = BNXT_ULP_FIELD_OPC_SRC1_THEN_SRC2_ELSE_SRC3,
4138         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
4139         .field_opr1 = {
4140         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 56) & 0xff,
4141         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 48) & 0xff,
4142         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 40) & 0xff,
4143         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 32) & 0xff,
4144         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 24) & 0xff,
4145         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 16) & 0xff,
4146         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 8) & 0xff,
4147         (uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST & 0xff},
4148         .field_src2 = BNXT_ULP_FIELD_SRC_ACT_PROP,
4149         .field_opr2 = {
4150                 (BNXT_ULP_ACT_PROP_IDX_SET_TP_DST >> 8) & 0xff,
4151                 BNXT_ULP_ACT_PROP_IDX_SET_TP_DST & 0xff},
4152         .field_src3 = BNXT_ULP_FIELD_SRC_ZERO
4153         },
4154         {
4155         .description = "src_ip_ptr",
4156         .field_bit_size = 10,
4157         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4158         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
4159         .field_opr1 = {
4160         (BNXT_ULP_RF_IDX_MODIFY_IPV4_SRC_PTR_0 >> 8) & 0xff,
4161         BNXT_ULP_RF_IDX_MODIFY_IPV4_SRC_PTR_0 & 0xff}
4162         },
4163         {
4164         .description = "tcp_src_port",
4165         .field_bit_size = 16,
4166         .field_opc = BNXT_ULP_FIELD_OPC_SRC1_THEN_SRC2_ELSE_SRC3,
4167         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
4168         .field_opr1 = {
4169         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 56) & 0xff,
4170         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 48) & 0xff,
4171         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 40) & 0xff,
4172         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 32) & 0xff,
4173         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 24) & 0xff,
4174         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 16) & 0xff,
4175         ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 8) & 0xff,
4176         (uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC & 0xff},
4177         .field_src2 = BNXT_ULP_FIELD_SRC_ACT_PROP,
4178         .field_opr2 = {
4179                 (BNXT_ULP_ACT_PROP_IDX_SET_TP_SRC >> 8) & 0xff,
4180                 BNXT_ULP_ACT_PROP_IDX_SET_TP_SRC & 0xff},
4181         .field_src3 = BNXT_ULP_FIELD_SRC_ZERO
4182         },
4183         {
4184         .description = "meter_id",
4185         .field_bit_size = 10,
4186         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4187         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4188         },
4189         {
4190         .description = "l3_rdir",
4191         .field_bit_size = 1,
4192         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4193         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4194         },
4195         {
4196         .description = "tl3_rdir",
4197         .field_bit_size = 1,
4198         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4199         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4200         },
4201         {
4202         .description = "l3_ttl_dec",
4203         .field_bit_size = 1,
4204         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4205         .field_src1 = BNXT_ULP_FIELD_SRC_CF,
4206         .field_opr1 = {
4207         (BNXT_ULP_CF_IDX_ACT_DEC_TTL >> 8) & 0xff,
4208         BNXT_ULP_CF_IDX_ACT_DEC_TTL & 0xff}
4209         },
4210         {
4211         .description = "tl3_ttl_dec",
4212         .field_bit_size = 1,
4213         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4214         .field_src1 = BNXT_ULP_FIELD_SRC_CF,
4215         .field_opr1 = {
4216         (BNXT_ULP_CF_IDX_ACT_T_DEC_TTL >> 8) & 0xff,
4217         BNXT_ULP_CF_IDX_ACT_T_DEC_TTL & 0xff}
4218         },
4219         {
4220         .description = "decap_func",
4221         .field_bit_size = 4,
4222         .field_opc = BNXT_ULP_FIELD_OPC_SRC1_THEN_SRC2_ELSE_SRC3,
4223         .field_src1 = BNXT_ULP_FIELD_SRC_HDR_BIT,
4224         .field_opr1 = {
4225         ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 56) & 0xff,
4226         ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 48) & 0xff,
4227         ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 40) & 0xff,
4228         ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 32) & 0xff,
4229         ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 24) & 0xff,
4230         ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 16) & 0xff,
4231         ((uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN >> 8) & 0xff,
4232         (uint64_t)BNXT_ULP_HDR_BIT_T_VXLAN & 0xff},
4233         .field_src2 = BNXT_ULP_FIELD_SRC_CONST,
4234         .field_opr2 = {
4235                 ULP_WP_SYM_DECAP_FUNC_THRU_TL2},
4236         .field_src3 = BNXT_ULP_FIELD_SRC_CONST,
4237         .field_opr3 = {
4238         ULP_WP_SYM_DECAP_FUNC_THRU_L2}
4239         },
4240         {
4241         .description = "vnic_or_vport",
4242         .field_bit_size = 12,
4243         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4244         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
4245         .field_opr1 = {
4246         (BNXT_ULP_ACT_PROP_IDX_VPORT >> 8) & 0xff,
4247         BNXT_ULP_ACT_PROP_IDX_VPORT & 0xff}
4248         },
4249         {
4250         .description = "pop_vlan",
4251         .field_bit_size = 1,
4252         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4253         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4254         },
4255         {
4256         .description = "meter",
4257         .field_bit_size = 1,
4258         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4259         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4260         },
4261         {
4262         .description = "mirror",
4263         .field_bit_size = 2,
4264         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4265         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4266         },
4267         {
4268         .description = "drop",
4269         .field_bit_size = 1,
4270         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4271         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4272         },
4273         {
4274         .description = "ecv_tun_type",
4275         .field_bit_size = 3,
4276         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4277         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4278         },
4279         {
4280         .description = "ecv_l4_type",
4281         .field_bit_size = 3,
4282         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4283         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4284         },
4285         {
4286         .description = "ecv_l3_type",
4287         .field_bit_size = 3,
4288         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4289         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4290         },
4291         {
4292         .description = "ecv_l2_en",
4293         .field_bit_size = 1,
4294         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4295         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
4296         .field_opr1 = {
4297         ULP_WP_SYM_ECV_L2_EN_YES}
4298         },
4299         {
4300         .description = "ecv_vtag_type",
4301         .field_bit_size = 4,
4302         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4303         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4304         },
4305         {
4306         .description = "ecv_custom_en",
4307         .field_bit_size = 1,
4308         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4309         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4310         },
4311         {
4312         .description = "ecv_valid",
4313         .field_bit_size = 1,
4314         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4315         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4316         },
4317         {
4318         .description = "vtag_tpid",
4319         .field_bit_size = 16,
4320         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4321         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4322         },
4323         {
4324         .description = "vtag_vid",
4325         .field_bit_size = 12,
4326         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4327         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4328         },
4329         {
4330         .description = "vtag_de",
4331         .field_bit_size = 1,
4332         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4333         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4334         },
4335         {
4336         .description = "vtag_pcp",
4337         .field_bit_size = 3,
4338         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4339         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4340         },
4341         {
4342         .description = "spare",
4343         .field_bit_size = 0,
4344         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4345         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4346         },
4347         /* act_tid: 6, wh_plus, table: int_flow_counter_tbl.0 */
4348         {
4349         .description = "count",
4350         .field_bit_size = 64,
4351         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4352         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4353         },
4354         /* act_tid: 6, wh_plus, table: sp_smac_ipv4.0 */
4355         {
4356         .description = "smac",
4357         .field_bit_size = 48,
4358         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4359         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
4360         .field_opr1 = {
4361         (BNXT_ULP_ACT_PROP_IDX_ENCAP_L2_SMAC >> 8) & 0xff,
4362         BNXT_ULP_ACT_PROP_IDX_ENCAP_L2_SMAC & 0xff}
4363         },
4364         {
4365         .description = "ipv4_src_addr",
4366         .field_bit_size = 32,
4367         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4368         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
4369         .field_opr1 = {
4370         (BNXT_ULP_ACT_PROP_IDX_ENCAP_IP_SRC >> 8) & 0xff,
4371         BNXT_ULP_ACT_PROP_IDX_ENCAP_IP_SRC & 0xff}
4372         },
4373         {
4374         .description = "reserved",
4375         .field_bit_size = 48,
4376         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4377         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4378         },
4379         /* act_tid: 6, wh_plus, table: sp_smac_ipv6.0 */
4380         {
4381         .description = "smac",
4382         .field_bit_size = 48,
4383         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4384         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
4385         .field_opr1 = {
4386         (BNXT_ULP_ACT_PROP_IDX_ENCAP_L2_SMAC >> 8) & 0xff,
4387         BNXT_ULP_ACT_PROP_IDX_ENCAP_L2_SMAC & 0xff}
4388         },
4389         {
4390         .description = "ipv6_src_addr",
4391         .field_bit_size = 128,
4392         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4393         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
4394         .field_opr1 = {
4395         (BNXT_ULP_ACT_PROP_IDX_ENCAP_IP_SRC >> 8) & 0xff,
4396         BNXT_ULP_ACT_PROP_IDX_ENCAP_IP_SRC & 0xff}
4397         },
4398         {
4399         .description = "reserved",
4400         .field_bit_size = 16,
4401         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4402         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4403         },
4404         /* act_tid: 6, wh_plus, table: int_tun_encap_record.0 */
4405         {
4406         .description = "ecv_tun_type",
4407         .field_bit_size = 3,
4408         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4409         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
4410         .field_opr1 = {
4411         ULP_WP_SYM_ECV_TUN_TYPE_VXLAN}
4412         },
4413         {
4414         .description = "ecv_l4_type",
4415         .field_bit_size = 3,
4416         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4417         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
4418         .field_opr1 = {
4419         ULP_WP_SYM_ECV_L4_TYPE_UDP_CSUM}
4420         },
4421         {
4422         .description = "ecv_l3_type",
4423         .field_bit_size = 3,
4424         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4425         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
4426         .field_opr1 = {
4427         (BNXT_ULP_ACT_PROP_IDX_ENCAP_L3_TYPE >> 8) & 0xff,
4428         BNXT_ULP_ACT_PROP_IDX_ENCAP_L3_TYPE & 0xff}
4429         },
4430         {
4431         .description = "ecv_l2_en",
4432         .field_bit_size = 1,
4433         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4434         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
4435         .field_opr1 = {
4436         1}
4437         },
4438         {
4439         .description = "ecv_vtag_type",
4440         .field_bit_size = 4,
4441         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4442         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
4443         .field_opr1 = {
4444         (BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_TYPE >> 8) & 0xff,
4445         BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_TYPE & 0xff}
4446         },
4447         {
4448         .description = "ecv_custom_en",
4449         .field_bit_size = 1,
4450         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4451         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4452         },
4453         {
4454         .description = "ecv_valid",
4455         .field_bit_size = 1,
4456         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4457         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
4458         .field_opr1 = {
4459         1}
4460         },
4461         {
4462         .description = "encap_l2_dmac",
4463         .field_bit_size = 48,
4464         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4465         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
4466         .field_opr1 = {
4467         (BNXT_ULP_ACT_PROP_IDX_ENCAP_L2_DMAC >> 8) & 0xff,
4468         BNXT_ULP_ACT_PROP_IDX_ENCAP_L2_DMAC & 0xff}
4469         },
4470         {
4471         .description = "encap_vtag",
4472         .field_bit_size = 0,
4473         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4474         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP_SZ,
4475         .field_opr1 = {
4476                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG >> 8) & 0xff,
4477                 BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG & 0xff,
4478                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_SZ >> 8) & 0xff,
4479                 BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_SZ & 0xff}
4480         },
4481         {
4482         .description = "encap_ip",
4483         .field_bit_size = 0,
4484         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4485         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP_SZ,
4486         .field_opr1 = {
4487                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_IP >> 8) & 0xff,
4488                 BNXT_ULP_ACT_PROP_IDX_ENCAP_IP & 0xff,
4489                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_IP_SZ >> 8) & 0xff,
4490                 BNXT_ULP_ACT_PROP_IDX_ENCAP_IP_SZ & 0xff}
4491         },
4492         {
4493         .description = "encap_udp",
4494         .field_bit_size = 32,
4495         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4496         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
4497         .field_opr1 = {
4498         (BNXT_ULP_ACT_PROP_IDX_ENCAP_UDP >> 8) & 0xff,
4499         BNXT_ULP_ACT_PROP_IDX_ENCAP_UDP & 0xff}
4500         },
4501         {
4502         .description = "encap_tun",
4503         .field_bit_size = 0,
4504         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4505         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP_SZ,
4506         .field_opr1 = {
4507                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_TUN >> 8) & 0xff,
4508                 BNXT_ULP_ACT_PROP_IDX_ENCAP_TUN & 0xff,
4509                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_TUN_SZ >> 8) & 0xff,
4510                 BNXT_ULP_ACT_PROP_IDX_ENCAP_TUN_SZ & 0xff}
4511         },
4512         /* act_tid: 6, wh_plus, table: int_full_act_record.0 */
4513         {
4514         .description = "flow_cntr_ptr",
4515         .field_bit_size = 14,
4516         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4517         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
4518         .field_opr1 = {
4519         (BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 >> 8) & 0xff,
4520         BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 & 0xff}
4521         },
4522         {
4523         .description = "age_enable",
4524         .field_bit_size = 1,
4525         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4526         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4527         },
4528         {
4529         .description = "agg_cntr_en",
4530         .field_bit_size = 1,
4531         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4532         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4533         },
4534         {
4535         .description = "rate_cntr_en",
4536         .field_bit_size = 1,
4537         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4538         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4539         },
4540         {
4541         .description = "flow_cntr_en",
4542         .field_bit_size = 1,
4543         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4544         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
4545         .field_opr1 = {
4546         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 56) & 0xff,
4547         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 48) & 0xff,
4548         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 40) & 0xff,
4549         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 32) & 0xff,
4550         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 24) & 0xff,
4551         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 16) & 0xff,
4552         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 8) & 0xff,
4553         (uint64_t)BNXT_ULP_ACT_BIT_COUNT & 0xff}
4554         },
4555         {
4556         .description = "tcpflags_key",
4557         .field_bit_size = 8,
4558         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4559         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4560         },
4561         {
4562         .description = "tcpflags_mir",
4563         .field_bit_size = 1,
4564         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4565         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4566         },
4567         {
4568         .description = "tcpflags_match",
4569         .field_bit_size = 1,
4570         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4571         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4572         },
4573         {
4574         .description = "encap_ptr",
4575         .field_bit_size = 11,
4576         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4577         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
4578         .field_opr1 = {
4579         (BNXT_ULP_RF_IDX_ENCAP_PTR_0 >> 8) & 0xff,
4580         BNXT_ULP_RF_IDX_ENCAP_PTR_0 & 0xff}
4581         },
4582         {
4583         .description = "dst_ip_ptr",
4584         .field_bit_size = 10,
4585         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4586         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4587         },
4588         {
4589         .description = "tcp_dst_port",
4590         .field_bit_size = 16,
4591         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4592         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4593         },
4594         {
4595         .description = "src_ip_ptr",
4596         .field_bit_size = 10,
4597         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4598         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4599         },
4600         {
4601         .description = "tcp_src_port",
4602         .field_bit_size = 16,
4603         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4604         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4605         },
4606         {
4607         .description = "meter_id",
4608         .field_bit_size = 10,
4609         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4610         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4611         },
4612         {
4613         .description = "l3_rdir",
4614         .field_bit_size = 1,
4615         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4616         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4617         },
4618         {
4619         .description = "tl3_rdir",
4620         .field_bit_size = 1,
4621         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4622         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4623         },
4624         {
4625         .description = "l3_ttl_dec",
4626         .field_bit_size = 1,
4627         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4628         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4629         },
4630         {
4631         .description = "tl3_ttl_dec",
4632         .field_bit_size = 1,
4633         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4634         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4635         },
4636         {
4637         .description = "decap_func",
4638         .field_bit_size = 4,
4639         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4640         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4641         },
4642         {
4643         .description = "vnic_or_vport",
4644         .field_bit_size = 12,
4645         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4646         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
4647         .field_opr1 = {
4648         (BNXT_ULP_ACT_PROP_IDX_VPORT >> 8) & 0xff,
4649         BNXT_ULP_ACT_PROP_IDX_VPORT & 0xff}
4650         },
4651         {
4652         .description = "pop_vlan",
4653         .field_bit_size = 1,
4654         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4655         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4656         },
4657         {
4658         .description = "meter",
4659         .field_bit_size = 1,
4660         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4661         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4662         },
4663         {
4664         .description = "mirror",
4665         .field_bit_size = 2,
4666         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4667         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4668         },
4669         {
4670         .description = "drop",
4671         .field_bit_size = 1,
4672         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4673         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4674         },
4675         {
4676         .description = "hit",
4677         .field_bit_size = 1,
4678         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4679         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4680         },
4681         {
4682         .description = "type",
4683         .field_bit_size = 1,
4684         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4685         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4686         },
4687         /* act_tid: 6, wh_plus, table: ext_full_act_record_vxlan.0 */
4688         {
4689         .description = "flow_cntr_ptr",
4690         .field_bit_size = 14,
4691         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4692         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
4693         .field_opr1 = {
4694         (BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 >> 8) & 0xff,
4695         BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 & 0xff}
4696         },
4697         {
4698         .description = "age_enable",
4699         .field_bit_size = 1,
4700         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4701         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4702         },
4703         {
4704         .description = "agg_cntr_en",
4705         .field_bit_size = 1,
4706         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4707         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4708         },
4709         {
4710         .description = "rate_cntr_en",
4711         .field_bit_size = 1,
4712         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4713         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4714         },
4715         {
4716         .description = "flow_cntr_en",
4717         .field_bit_size = 1,
4718         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4719         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
4720         .field_opr1 = {
4721         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 56) & 0xff,
4722         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 48) & 0xff,
4723         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 40) & 0xff,
4724         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 32) & 0xff,
4725         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 24) & 0xff,
4726         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 16) & 0xff,
4727         ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 8) & 0xff,
4728         (uint64_t)BNXT_ULP_ACT_BIT_COUNT & 0xff}
4729         },
4730         {
4731         .description = "flow_cntr_ext",
4732         .field_bit_size = 1,
4733         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4734         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4735         },
4736         {
4737         .description = "tcpflags_key",
4738         .field_bit_size = 8,
4739         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4740         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4741         },
4742         {
4743         .description = "tcpflags_mir",
4744         .field_bit_size = 1,
4745         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4746         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4747         },
4748         {
4749         .description = "tcpflags_match",
4750         .field_bit_size = 1,
4751         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4752         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4753         },
4754         {
4755         .description = "encap_ptr",
4756         .field_bit_size = 11,
4757         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4758         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4759         },
4760         {
4761         .description = "encap_rec_int",
4762         .field_bit_size = 1,
4763         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4764         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4765         },
4766         {
4767         .description = "dst_ip_ptr",
4768         .field_bit_size = 10,
4769         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4770         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4771         },
4772         {
4773         .description = "tcp_dst_port",
4774         .field_bit_size = 16,
4775         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4776         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4777         },
4778         {
4779         .description = "src_ip_ptr",
4780         .field_bit_size = 10,
4781         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4782         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4783         },
4784         {
4785         .description = "tcp_src_port",
4786         .field_bit_size = 16,
4787         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4788         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4789         },
4790         {
4791         .description = "meter_id",
4792         .field_bit_size = 10,
4793         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4794         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4795         },
4796         {
4797         .description = "l3_rdir",
4798         .field_bit_size = 1,
4799         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4800         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4801         },
4802         {
4803         .description = "tl3_rdir",
4804         .field_bit_size = 1,
4805         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4806         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4807         },
4808         {
4809         .description = "l3_ttl_dec",
4810         .field_bit_size = 1,
4811         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4812         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4813         },
4814         {
4815         .description = "tl3_ttl_dec",
4816         .field_bit_size = 1,
4817         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4818         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4819         },
4820         {
4821         .description = "decap_func",
4822         .field_bit_size = 4,
4823         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4824         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4825         },
4826         {
4827         .description = "vnic_or_vport",
4828         .field_bit_size = 12,
4829         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4830         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
4831         .field_opr1 = {
4832         (BNXT_ULP_ACT_PROP_IDX_VPORT >> 8) & 0xff,
4833         BNXT_ULP_ACT_PROP_IDX_VPORT & 0xff}
4834         },
4835         {
4836         .description = "pop_vlan",
4837         .field_bit_size = 1,
4838         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4839         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4840         },
4841         {
4842         .description = "meter",
4843         .field_bit_size = 1,
4844         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4845         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4846         },
4847         {
4848         .description = "mirror",
4849         .field_bit_size = 2,
4850         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4851         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4852         },
4853         {
4854         .description = "drop",
4855         .field_bit_size = 1,
4856         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4857         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4858         },
4859         {
4860         .description = "ecv_tun_type",
4861         .field_bit_size = 3,
4862         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4863         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
4864         .field_opr1 = {
4865         ULP_WP_SYM_ECV_TUN_TYPE_VXLAN}
4866         },
4867         {
4868         .description = "ecv_l4_type",
4869         .field_bit_size = 3,
4870         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4871         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
4872         .field_opr1 = {
4873         ULP_WP_SYM_ECV_L4_TYPE_UDP_CSUM}
4874         },
4875         {
4876         .description = "ecv_l3_type",
4877         .field_bit_size = 3,
4878         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4879         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
4880         .field_opr1 = {
4881         (BNXT_ULP_ACT_PROP_IDX_ENCAP_L3_TYPE >> 8) & 0xff,
4882         BNXT_ULP_ACT_PROP_IDX_ENCAP_L3_TYPE & 0xff}
4883         },
4884         {
4885         .description = "ecv_l2_en",
4886         .field_bit_size = 1,
4887         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4888         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
4889         .field_opr1 = {
4890         1}
4891         },
4892         {
4893         .description = "ecv_vtag_type",
4894         .field_bit_size = 4,
4895         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4896         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
4897         .field_opr1 = {
4898         (BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_TYPE >> 8) & 0xff,
4899         BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_TYPE & 0xff}
4900         },
4901         {
4902         .description = "ecv_custom_en",
4903         .field_bit_size = 1,
4904         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4905         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
4906         },
4907         {
4908         .description = "ecv_valid",
4909         .field_bit_size = 1,
4910         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4911         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
4912         .field_opr1 = {
4913         1}
4914         },
4915         {
4916         .description = "encap_l2_dmac",
4917         .field_bit_size = 48,
4918         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4919         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
4920         .field_opr1 = {
4921         (BNXT_ULP_ACT_PROP_IDX_ENCAP_L2_DMAC >> 8) & 0xff,
4922         BNXT_ULP_ACT_PROP_IDX_ENCAP_L2_DMAC & 0xff}
4923         },
4924         {
4925         .description = "encap_vtag",
4926         .field_bit_size = 0,
4927         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4928         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP_SZ,
4929         .field_opr1 = {
4930                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG >> 8) & 0xff,
4931                 BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG & 0xff,
4932                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_SZ >> 8) & 0xff,
4933                 BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_SZ & 0xff}
4934         },
4935         {
4936         .description = "encap_ip",
4937         .field_bit_size = 0,
4938         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4939         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP_SZ,
4940         .field_opr1 = {
4941                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_IP >> 8) & 0xff,
4942                 BNXT_ULP_ACT_PROP_IDX_ENCAP_IP & 0xff,
4943                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_IP_SZ >> 8) & 0xff,
4944                 BNXT_ULP_ACT_PROP_IDX_ENCAP_IP_SZ & 0xff}
4945         },
4946         {
4947         .description = "encap_udp",
4948         .field_bit_size = 32,
4949         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4950         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
4951         .field_opr1 = {
4952         (BNXT_ULP_ACT_PROP_IDX_ENCAP_UDP >> 8) & 0xff,
4953         BNXT_ULP_ACT_PROP_IDX_ENCAP_UDP & 0xff}
4954         },
4955         {
4956         .description = "encap_tun",
4957         .field_bit_size = 80,
4958         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
4959         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
4960         .field_opr1 = {
4961         (BNXT_ULP_ACT_PROP_IDX_ENCAP_TUN >> 8) & 0xff,
4962         BNXT_ULP_ACT_PROP_IDX_ENCAP_TUN & 0xff}
4963         }
4964 };
4965
4966 struct bnxt_ulp_mapper_ident_info ulp_wh_plus_act_ident_list[] = {
4967         /* act_tid: 1, wh_plus, table: shared_mirror_record.rd */
4968         {
4969         .description = "mirror_id",
4970         .regfile_idx = BNXT_ULP_RF_IDX_MIRROR_ID_0,
4971         .ident_bit_size = 2,
4972         .ident_bit_pos = 32
4973         }
4974 };