net/bnxt: support negative conditional opcodes
[dpdk.git] / drivers / net / bnxt / tf_ulp / ulp_template_db_act.c
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2014-2020 Broadcom
3  * All rights reserved.
4  */
5
6 #include "ulp_template_db_enum.h"
7 #include "ulp_template_db_field.h"
8 #include "ulp_template_struct.h"
9 #include "ulp_rte_parser.h"
10
11 uint16_t ulp_act_sig_tbl[BNXT_ULP_ACT_SIG_TBL_MAX_SZ] = {
12         [BNXT_ULP_ACT_HID_0002] = 1,
13         [BNXT_ULP_ACT_HID_0022] = 2,
14         [BNXT_ULP_ACT_HID_0026] = 3,
15         [BNXT_ULP_ACT_HID_0006] = 4,
16         [BNXT_ULP_ACT_HID_0009] = 5,
17         [BNXT_ULP_ACT_HID_0029] = 6,
18         [BNXT_ULP_ACT_HID_002d] = 7,
19         [BNXT_ULP_ACT_HID_004b] = 8,
20         [BNXT_ULP_ACT_HID_004a] = 9,
21         [BNXT_ULP_ACT_HID_004f] = 10,
22         [BNXT_ULP_ACT_HID_004e] = 11,
23         [BNXT_ULP_ACT_HID_006c] = 12,
24         [BNXT_ULP_ACT_HID_0070] = 13,
25         [BNXT_ULP_ACT_HID_0021] = 14,
26         [BNXT_ULP_ACT_HID_0025] = 15,
27         [BNXT_ULP_ACT_HID_0043] = 16,
28         [BNXT_ULP_ACT_HID_0042] = 17,
29         [BNXT_ULP_ACT_HID_0047] = 18,
30         [BNXT_ULP_ACT_HID_0046] = 19,
31         [BNXT_ULP_ACT_HID_0064] = 20,
32         [BNXT_ULP_ACT_HID_0068] = 21,
33         [BNXT_ULP_ACT_HID_00a1] = 22,
34         [BNXT_ULP_ACT_HID_00df] = 23
35 };
36
37 struct bnxt_ulp_act_match_info ulp_act_match_list[] = {
38         [1] = {
39         .act_hid = BNXT_ULP_ACT_HID_0002,
40         .act_sig = { .bits =
41                 BNXT_ULP_ACTION_BIT_DROP |
42                 BNXT_ULP_FLOW_DIR_BITMASK_ING },
43         .act_tid = 1
44         },
45         [2] = {
46         .act_hid = BNXT_ULP_ACT_HID_0022,
47         .act_sig = { .bits =
48                 BNXT_ULP_ACTION_BIT_DROP |
49                 BNXT_ULP_ACTION_BIT_VNIC |
50                 BNXT_ULP_FLOW_DIR_BITMASK_ING },
51         .act_tid = 1
52         },
53         [3] = {
54         .act_hid = BNXT_ULP_ACT_HID_0026,
55         .act_sig = { .bits =
56                 BNXT_ULP_ACTION_BIT_DROP |
57                 BNXT_ULP_ACTION_BIT_VNIC |
58                 BNXT_ULP_ACTION_BIT_COUNT |
59                 BNXT_ULP_FLOW_DIR_BITMASK_ING },
60         .act_tid = 1
61         },
62         [4] = {
63         .act_hid = BNXT_ULP_ACT_HID_0006,
64         .act_sig = { .bits =
65                 BNXT_ULP_ACTION_BIT_DROP |
66                 BNXT_ULP_ACTION_BIT_COUNT |
67                 BNXT_ULP_FLOW_DIR_BITMASK_ING },
68         .act_tid = 1
69         },
70         [5] = {
71         .act_hid = BNXT_ULP_ACT_HID_0009,
72         .act_sig = { .bits =
73                 BNXT_ULP_ACTION_BIT_MARK |
74                 BNXT_ULP_ACTION_BIT_RSS |
75                 BNXT_ULP_FLOW_DIR_BITMASK_ING },
76         .act_tid = 1
77         },
78         [6] = {
79         .act_hid = BNXT_ULP_ACT_HID_0029,
80         .act_sig = { .bits =
81                 BNXT_ULP_ACTION_BIT_MARK |
82                 BNXT_ULP_ACTION_BIT_VNIC |
83                 BNXT_ULP_ACTION_BIT_RSS |
84                 BNXT_ULP_FLOW_DIR_BITMASK_ING },
85         .act_tid = 1
86         },
87         [7] = {
88         .act_hid = BNXT_ULP_ACT_HID_002d,
89         .act_sig = { .bits =
90                 BNXT_ULP_ACTION_BIT_MARK |
91                 BNXT_ULP_ACTION_BIT_VNIC |
92                 BNXT_ULP_ACTION_BIT_RSS |
93                 BNXT_ULP_ACTION_BIT_COUNT |
94                 BNXT_ULP_FLOW_DIR_BITMASK_ING },
95         .act_tid = 1
96         },
97         [8] = {
98         .act_hid = BNXT_ULP_ACT_HID_004b,
99         .act_sig = { .bits =
100                 BNXT_ULP_ACTION_BIT_MARK |
101                 BNXT_ULP_ACTION_BIT_VNIC |
102                 BNXT_ULP_ACTION_BIT_RSS |
103                 BNXT_ULP_ACTION_BIT_POP_VLAN |
104                 BNXT_ULP_FLOW_DIR_BITMASK_ING },
105         .act_tid = 1
106         },
107         [9] = {
108         .act_hid = BNXT_ULP_ACT_HID_004a,
109         .act_sig = { .bits =
110                 BNXT_ULP_ACTION_BIT_MARK |
111                 BNXT_ULP_ACTION_BIT_VNIC |
112                 BNXT_ULP_ACTION_BIT_RSS |
113                 BNXT_ULP_ACTION_BIT_DEC_TTL |
114                 BNXT_ULP_FLOW_DIR_BITMASK_ING },
115         .act_tid = 1
116         },
117         [10] = {
118         .act_hid = BNXT_ULP_ACT_HID_004f,
119         .act_sig = { .bits =
120                 BNXT_ULP_ACTION_BIT_MARK |
121                 BNXT_ULP_ACTION_BIT_VNIC |
122                 BNXT_ULP_ACTION_BIT_RSS |
123                 BNXT_ULP_ACTION_BIT_COUNT |
124                 BNXT_ULP_ACTION_BIT_POP_VLAN |
125                 BNXT_ULP_FLOW_DIR_BITMASK_ING },
126         .act_tid = 1
127         },
128         [11] = {
129         .act_hid = BNXT_ULP_ACT_HID_004e,
130         .act_sig = { .bits =
131                 BNXT_ULP_ACTION_BIT_MARK |
132                 BNXT_ULP_ACTION_BIT_VNIC |
133                 BNXT_ULP_ACTION_BIT_RSS |
134                 BNXT_ULP_ACTION_BIT_COUNT |
135                 BNXT_ULP_ACTION_BIT_DEC_TTL |
136                 BNXT_ULP_FLOW_DIR_BITMASK_ING },
137         .act_tid = 1
138         },
139         [12] = {
140         .act_hid = BNXT_ULP_ACT_HID_006c,
141         .act_sig = { .bits =
142                 BNXT_ULP_ACTION_BIT_MARK |
143                 BNXT_ULP_ACTION_BIT_VNIC |
144                 BNXT_ULP_ACTION_BIT_RSS |
145                 BNXT_ULP_ACTION_BIT_POP_VLAN |
146                 BNXT_ULP_ACTION_BIT_DEC_TTL |
147                 BNXT_ULP_FLOW_DIR_BITMASK_ING },
148         .act_tid = 1
149         },
150         [13] = {
151         .act_hid = BNXT_ULP_ACT_HID_0070,
152         .act_sig = { .bits =
153                 BNXT_ULP_ACTION_BIT_MARK |
154                 BNXT_ULP_ACTION_BIT_VNIC |
155                 BNXT_ULP_ACTION_BIT_RSS |
156                 BNXT_ULP_ACTION_BIT_COUNT |
157                 BNXT_ULP_ACTION_BIT_POP_VLAN |
158                 BNXT_ULP_ACTION_BIT_DEC_TTL |
159                 BNXT_ULP_FLOW_DIR_BITMASK_ING },
160         .act_tid = 1
161         },
162         [14] = {
163         .act_hid = BNXT_ULP_ACT_HID_0021,
164         .act_sig = { .bits =
165                 BNXT_ULP_ACTION_BIT_MARK |
166                 BNXT_ULP_ACTION_BIT_VNIC |
167                 BNXT_ULP_FLOW_DIR_BITMASK_ING },
168         .act_tid = 1
169         },
170         [15] = {
171         .act_hid = BNXT_ULP_ACT_HID_0025,
172         .act_sig = { .bits =
173                 BNXT_ULP_ACTION_BIT_MARK |
174                 BNXT_ULP_ACTION_BIT_VNIC |
175                 BNXT_ULP_ACTION_BIT_COUNT |
176                 BNXT_ULP_FLOW_DIR_BITMASK_ING },
177         .act_tid = 1
178         },
179         [16] = {
180         .act_hid = BNXT_ULP_ACT_HID_0043,
181         .act_sig = { .bits =
182                 BNXT_ULP_ACTION_BIT_MARK |
183                 BNXT_ULP_ACTION_BIT_VNIC |
184                 BNXT_ULP_ACTION_BIT_POP_VLAN |
185                 BNXT_ULP_FLOW_DIR_BITMASK_ING },
186         .act_tid = 1
187         },
188         [17] = {
189         .act_hid = BNXT_ULP_ACT_HID_0042,
190         .act_sig = { .bits =
191                 BNXT_ULP_ACTION_BIT_MARK |
192                 BNXT_ULP_ACTION_BIT_VNIC |
193                 BNXT_ULP_ACTION_BIT_DEC_TTL |
194                 BNXT_ULP_FLOW_DIR_BITMASK_ING },
195         .act_tid = 1
196         },
197         [18] = {
198         .act_hid = BNXT_ULP_ACT_HID_0047,
199         .act_sig = { .bits =
200                 BNXT_ULP_ACTION_BIT_MARK |
201                 BNXT_ULP_ACTION_BIT_VNIC |
202                 BNXT_ULP_ACTION_BIT_COUNT |
203                 BNXT_ULP_ACTION_BIT_POP_VLAN |
204                 BNXT_ULP_FLOW_DIR_BITMASK_ING },
205         .act_tid = 1
206         },
207         [19] = {
208         .act_hid = BNXT_ULP_ACT_HID_0046,
209         .act_sig = { .bits =
210                 BNXT_ULP_ACTION_BIT_MARK |
211                 BNXT_ULP_ACTION_BIT_VNIC |
212                 BNXT_ULP_ACTION_BIT_COUNT |
213                 BNXT_ULP_ACTION_BIT_DEC_TTL |
214                 BNXT_ULP_FLOW_DIR_BITMASK_ING },
215         .act_tid = 1
216         },
217         [20] = {
218         .act_hid = BNXT_ULP_ACT_HID_0064,
219         .act_sig = { .bits =
220                 BNXT_ULP_ACTION_BIT_MARK |
221                 BNXT_ULP_ACTION_BIT_VNIC |
222                 BNXT_ULP_ACTION_BIT_POP_VLAN |
223                 BNXT_ULP_ACTION_BIT_DEC_TTL |
224                 BNXT_ULP_FLOW_DIR_BITMASK_ING },
225         .act_tid = 1
226         },
227         [21] = {
228         .act_hid = BNXT_ULP_ACT_HID_0068,
229         .act_sig = { .bits =
230                 BNXT_ULP_ACTION_BIT_MARK |
231                 BNXT_ULP_ACTION_BIT_VNIC |
232                 BNXT_ULP_ACTION_BIT_COUNT |
233                 BNXT_ULP_ACTION_BIT_POP_VLAN |
234                 BNXT_ULP_ACTION_BIT_DEC_TTL |
235                 BNXT_ULP_FLOW_DIR_BITMASK_ING },
236         .act_tid = 1
237         },
238         [22] = {
239         .act_hid = BNXT_ULP_ACT_HID_00a1,
240         .act_sig = { .bits =
241                 BNXT_ULP_ACTION_BIT_VXLAN_DECAP |
242                 BNXT_ULP_ACTION_BIT_MARK |
243                 BNXT_ULP_ACTION_BIT_VNIC |
244                 BNXT_ULP_FLOW_DIR_BITMASK_ING },
245         .act_tid = 2
246         },
247         [23] = {
248         .act_hid = BNXT_ULP_ACT_HID_00df,
249         .act_sig = { .bits =
250                 BNXT_ULP_ACTION_BIT_VXLAN_ENCAP |
251                 BNXT_ULP_ACTION_BIT_VPORT |
252                 BNXT_ULP_FLOW_DIR_BITMASK_EGR },
253         .act_tid = 3
254         }
255 };
256
257 struct bnxt_ulp_mapper_tbl_list_info ulp_act_tmpl_list[] = {
258         [((1 << BNXT_ULP_LOG2_MAX_NUM_DEV) |
259                 BNXT_ULP_DEVICE_ID_WH_PLUS)] = {
260         .device_name = BNXT_ULP_DEVICE_ID_WH_PLUS,
261         .num_tbls = 2,
262         .start_tbl_idx = 0,
263         .flow_db_table_type = BNXT_ULP_FDB_TYPE_REGULAR
264         },
265         [((2 << BNXT_ULP_LOG2_MAX_NUM_DEV) |
266                 BNXT_ULP_DEVICE_ID_WH_PLUS)] = {
267         .device_name = BNXT_ULP_DEVICE_ID_WH_PLUS,
268         .num_tbls = 1,
269         .start_tbl_idx = 2,
270         .flow_db_table_type = BNXT_ULP_FDB_TYPE_REGULAR
271         },
272         [((3 << BNXT_ULP_LOG2_MAX_NUM_DEV) |
273                 BNXT_ULP_DEVICE_ID_WH_PLUS)] = {
274         .device_name = BNXT_ULP_DEVICE_ID_WH_PLUS,
275         .num_tbls = 3,
276         .start_tbl_idx = 3,
277         .flow_db_table_type = BNXT_ULP_FDB_TYPE_REGULAR
278         }
279 };
280
281 struct bnxt_ulp_mapper_tbl_info ulp_act_tbl_list[] = {
282         {
283         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
284         .resource_type = TF_TBL_TYPE_ACT_STATS_64,
285         .resource_sub_type =
286                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TYPE_INT_COUNT,
287         .cond_opcode = BNXT_ULP_COND_OPCODE_ACTION_BIT_IS_SET,
288         .cond_operand = BNXT_ULP_ACTION_BIT_COUNT,
289         .direction = TF_DIR_RX,
290         .srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO,
291         .result_start_idx = 0,
292         .result_bit_size = 64,
293         .result_num_fields = 1,
294         .encap_num_fields = 0,
295         .index_opcode = BNXT_ULP_INDEX_OPCODE_ALLOCATE,
296         .index_operand = BNXT_ULP_REGFILE_INDEX_FLOW_CNTR_PTR_0,
297         .mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP
298         },
299         {
300         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
301         .resource_type = TF_TBL_TYPE_EXT,
302         .resource_sub_type =
303                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TYPE_NORMAL,
304         .direction = TF_DIR_RX,
305         .srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO,
306         .result_start_idx = 1,
307         .result_bit_size = 128,
308         .result_num_fields = 26,
309         .encap_num_fields = 0,
310         .index_opcode = BNXT_ULP_INDEX_OPCODE_ALLOCATE,
311         .index_operand = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR,
312         .mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP
313         },
314         {
315         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
316         .resource_type = TF_TBL_TYPE_EXT,
317         .resource_sub_type =
318                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TYPE_NORMAL,
319         .direction = TF_DIR_RX,
320         .srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO,
321         .result_start_idx = 27,
322         .result_bit_size = 128,
323         .result_num_fields = 26,
324         .encap_num_fields = 0,
325         .index_opcode = BNXT_ULP_INDEX_OPCODE_ALLOCATE,
326         .index_operand = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR,
327         .mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP
328         },
329         {
330         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
331         .resource_type = TF_TBL_TYPE_ACT_SP_SMAC_IPV4,
332         .resource_sub_type =
333                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TYPE_NORMAL,
334         .cond_opcode = BNXT_ULP_COND_OPCODE_COMP_FIELD_IS_SET,
335         .cond_operand = BNXT_ULP_CF_IDX_ACT_ENCAP_IPV4_FLAG,
336         .direction = TF_DIR_TX,
337         .srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO,
338         .result_start_idx = 53,
339         .result_bit_size = 0,
340         .result_num_fields = 0,
341         .encap_num_fields = 3,
342         .index_opcode = BNXT_ULP_INDEX_OPCODE_ALLOCATE,
343         .index_operand = BNXT_ULP_REGFILE_INDEX_MAIN_SP_PTR,
344         .mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP
345         },
346         {
347         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
348         .resource_type = TF_TBL_TYPE_ACT_SP_SMAC_IPV4,
349         .resource_sub_type =
350                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TYPE_NORMAL,
351         .cond_opcode = BNXT_ULP_COND_OPCODE_COMP_FIELD_IS_SET,
352         .cond_operand = BNXT_ULP_CF_IDX_ACT_ENCAP_IPV6_FLAG,
353         .direction = TF_DIR_TX,
354         .srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO,
355         .result_start_idx = 56,
356         .result_bit_size = 0,
357         .result_num_fields = 0,
358         .encap_num_fields = 3,
359         .index_opcode = BNXT_ULP_INDEX_OPCODE_ALLOCATE,
360         .index_operand = BNXT_ULP_REGFILE_INDEX_MAIN_SP_PTR,
361         .mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP
362         },
363         {
364         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
365         .resource_type = TF_TBL_TYPE_EXT,
366         .resource_sub_type =
367                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TYPE_NORMAL,
368         .direction = TF_DIR_TX,
369         .srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO,
370         .result_start_idx = 59,
371         .result_bit_size = 128,
372         .result_num_fields = 26,
373         .encap_num_fields = 12,
374         .index_opcode = BNXT_ULP_INDEX_OPCODE_ALLOCATE,
375         .index_operand = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR,
376         .mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP
377         }
378 };
379
380 struct bnxt_ulp_mapper_result_field_info ulp_act_result_field_list[] = {
381         {
382         .field_bit_size = 64,
383         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
384         },
385         {
386         .field_bit_size = 14,
387         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_REGFILE,
388         .result_operand = {
389                 (BNXT_ULP_REGFILE_INDEX_FLOW_CNTR_PTR_0 >> 8) & 0xff,
390                 BNXT_ULP_REGFILE_INDEX_FLOW_CNTR_PTR_0 & 0xff,
391                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
392                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
393         },
394         {
395         .field_bit_size = 1,
396         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
397         },
398         {
399         .field_bit_size = 1,
400         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
401         },
402         {
403         .field_bit_size = 1,
404         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
405         },
406         {
407         .field_bit_size = 1,
408         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ACT_BIT,
409         .result_operand = {
410                 ((uint64_t)BNXT_ULP_ACTION_BIT_COUNT >> 56) & 0xff,
411                 ((uint64_t)BNXT_ULP_ACTION_BIT_COUNT >> 48) & 0xff,
412                 ((uint64_t)BNXT_ULP_ACTION_BIT_COUNT >> 40) & 0xff,
413                 ((uint64_t)BNXT_ULP_ACTION_BIT_COUNT >> 32) & 0xff,
414                 ((uint64_t)BNXT_ULP_ACTION_BIT_COUNT >> 24) & 0xff,
415                 ((uint64_t)BNXT_ULP_ACTION_BIT_COUNT >> 16) & 0xff,
416                 ((uint64_t)BNXT_ULP_ACTION_BIT_COUNT >> 8) & 0xff,
417                 (uint64_t)BNXT_ULP_ACTION_BIT_COUNT & 0xff,
418                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
419         },
420         {
421         .field_bit_size = 1,
422         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
423         },
424         {
425         .field_bit_size = 8,
426         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
427         },
428         {
429         .field_bit_size = 1,
430         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
431         },
432         {
433         .field_bit_size = 1,
434         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
435         },
436         {
437         .field_bit_size = 11,
438         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
439         },
440         {
441         .field_bit_size = 1,
442         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
443         },
444         {
445         .field_bit_size = 10,
446         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
447         },
448         {
449         .field_bit_size = 16,
450         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
451         },
452         {
453         .field_bit_size = 10,
454         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
455         },
456         {
457         .field_bit_size = 16,
458         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
459         },
460         {
461         .field_bit_size = 10,
462         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
463         },
464         {
465         .field_bit_size = 1,
466         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
467         },
468         {
469         .field_bit_size = 1,
470         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
471         },
472         {
473         .field_bit_size = 1,
474         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ACT_BIT,
475         .result_operand = {
476                 ((uint64_t)BNXT_ULP_ACTION_BIT_DEC_TTL >> 56) & 0xff,
477                 ((uint64_t)BNXT_ULP_ACTION_BIT_DEC_TTL >> 48) & 0xff,
478                 ((uint64_t)BNXT_ULP_ACTION_BIT_DEC_TTL >> 40) & 0xff,
479                 ((uint64_t)BNXT_ULP_ACTION_BIT_DEC_TTL >> 32) & 0xff,
480                 ((uint64_t)BNXT_ULP_ACTION_BIT_DEC_TTL >> 24) & 0xff,
481                 ((uint64_t)BNXT_ULP_ACTION_BIT_DEC_TTL >> 16) & 0xff,
482                 ((uint64_t)BNXT_ULP_ACTION_BIT_DEC_TTL >> 8) & 0xff,
483                 (uint64_t)BNXT_ULP_ACTION_BIT_DEC_TTL & 0xff,
484                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
485         },
486         {
487         .field_bit_size = 1,
488         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
489         },
490         {
491         .field_bit_size = 4,
492         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
493         },
494         {
495         .field_bit_size = 12,
496         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ACT_PROP,
497         .result_operand = {
498                 (BNXT_ULP_ACT_PROP_IDX_VNIC >> 8) & 0xff,
499                 BNXT_ULP_ACT_PROP_IDX_VNIC & 0xff,
500                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
501                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
502         },
503         {
504         .field_bit_size = 1,
505         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ACT_BIT,
506         .result_operand = {
507                 ((uint64_t)BNXT_ULP_ACTION_BIT_POP_VLAN >> 56) & 0xff,
508                 ((uint64_t)BNXT_ULP_ACTION_BIT_POP_VLAN >> 48) & 0xff,
509                 ((uint64_t)BNXT_ULP_ACTION_BIT_POP_VLAN >> 40) & 0xff,
510                 ((uint64_t)BNXT_ULP_ACTION_BIT_POP_VLAN >> 32) & 0xff,
511                 ((uint64_t)BNXT_ULP_ACTION_BIT_POP_VLAN >> 24) & 0xff,
512                 ((uint64_t)BNXT_ULP_ACTION_BIT_POP_VLAN >> 16) & 0xff,
513                 ((uint64_t)BNXT_ULP_ACTION_BIT_POP_VLAN >> 8) & 0xff,
514                 (uint64_t)BNXT_ULP_ACTION_BIT_POP_VLAN & 0xff,
515                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
516         },
517         {
518         .field_bit_size = 1,
519         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
520         },
521         {
522         .field_bit_size = 2,
523         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
524         },
525         {
526         .field_bit_size = 1,
527         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ACT_BIT,
528         .result_operand = {
529                 ((uint64_t)BNXT_ULP_ACTION_BIT_DROP >> 56) & 0xff,
530                 ((uint64_t)BNXT_ULP_ACTION_BIT_DROP >> 48) & 0xff,
531                 ((uint64_t)BNXT_ULP_ACTION_BIT_DROP >> 40) & 0xff,
532                 ((uint64_t)BNXT_ULP_ACTION_BIT_DROP >> 32) & 0xff,
533                 ((uint64_t)BNXT_ULP_ACTION_BIT_DROP >> 24) & 0xff,
534                 ((uint64_t)BNXT_ULP_ACTION_BIT_DROP >> 16) & 0xff,
535                 ((uint64_t)BNXT_ULP_ACTION_BIT_DROP >> 8) & 0xff,
536                 (uint64_t)BNXT_ULP_ACTION_BIT_DROP & 0xff,
537                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
538         },
539         {
540         .field_bit_size = 14,
541         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
542         },
543         {
544         .field_bit_size = 1,
545         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
546         },
547         {
548         .field_bit_size = 1,
549         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
550         },
551         {
552         .field_bit_size = 1,
553         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
554         },
555         {
556         .field_bit_size = 1,
557         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
558         },
559         {
560         .field_bit_size = 1,
561         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
562         },
563         {
564         .field_bit_size = 8,
565         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
566         },
567         {
568         .field_bit_size = 1,
569         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
570         },
571         {
572         .field_bit_size = 1,
573         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
574         },
575         {
576         .field_bit_size = 11,
577         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
578         },
579         {
580         .field_bit_size = 1,
581         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
582         },
583         {
584         .field_bit_size = 10,
585         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
586         },
587         {
588         .field_bit_size = 16,
589         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
590         },
591         {
592         .field_bit_size = 10,
593         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
594         },
595         {
596         .field_bit_size = 16,
597         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
598         },
599         {
600         .field_bit_size = 10,
601         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
602         },
603         {
604         .field_bit_size = 1,
605         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
606         },
607         {
608         .field_bit_size = 1,
609         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
610         },
611         {
612         .field_bit_size = 1,
613         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
614         },
615         {
616         .field_bit_size = 1,
617         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
618         },
619         {
620         .field_bit_size = 4,
621         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_CONSTANT,
622         .result_operand = {
623                 BNXT_ULP_SYM_DECAP_FUNC_THRU_TUN,
624                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
625                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
626         },
627         {
628         .field_bit_size = 12,
629         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ACT_PROP,
630         .result_operand = {
631                 (BNXT_ULP_ACT_PROP_IDX_VNIC >> 8) & 0xff,
632                 BNXT_ULP_ACT_PROP_IDX_VNIC & 0xff,
633                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
634                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
635         },
636         {
637         .field_bit_size = 1,
638         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
639         },
640         {
641         .field_bit_size = 1,
642         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
643         },
644         {
645         .field_bit_size = 2,
646         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
647         },
648         {
649         .field_bit_size = 1,
650         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
651         },
652         {
653         .field_bit_size = 48,
654         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ACT_PROP,
655         .result_operand = {
656                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_L2_SMAC >> 8) & 0xff,
657                 BNXT_ULP_ACT_PROP_IDX_ENCAP_L2_SMAC & 0xff,
658                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
659                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
660         },
661         {
662         .field_bit_size = 32,
663         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ACT_PROP,
664         .result_operand = {
665                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_IP_SRC >> 8) & 0xff,
666                 BNXT_ULP_ACT_PROP_IDX_ENCAP_IP_SRC & 0xff,
667                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
668                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
669         },
670         {
671         .field_bit_size = 48,
672         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
673         },
674         {
675         .field_bit_size = 48,
676         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ACT_PROP,
677         .result_operand = {
678                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_L2_SMAC >> 8) & 0xff,
679                 BNXT_ULP_ACT_PROP_IDX_ENCAP_L2_SMAC & 0xff,
680                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
681                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
682         },
683         {
684         .field_bit_size = 128,
685         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ACT_PROP,
686         .result_operand = {
687                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_IP_SRC >> 8) & 0xff,
688                 BNXT_ULP_ACT_PROP_IDX_ENCAP_IP_SRC & 0xff,
689                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
690                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
691         },
692         {
693         .field_bit_size = 16,
694         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
695         },
696         {
697         .field_bit_size = 14,
698         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
699         },
700         {
701         .field_bit_size = 1,
702         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
703         },
704         {
705         .field_bit_size = 1,
706         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
707         },
708         {
709         .field_bit_size = 1,
710         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
711         },
712         {
713         .field_bit_size = 1,
714         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
715         },
716         {
717         .field_bit_size = 1,
718         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
719         },
720         {
721         .field_bit_size = 8,
722         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
723         },
724         {
725         .field_bit_size = 1,
726         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
727         },
728         {
729         .field_bit_size = 1,
730         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
731         },
732         {
733         .field_bit_size = 11,
734         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
735         },
736         {
737         .field_bit_size = 1,
738         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
739         },
740         {
741         .field_bit_size = 10,
742         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
743         },
744         {
745         .field_bit_size = 16,
746         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
747         },
748         {
749         .field_bit_size = 10,
750         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
751         },
752         {
753         .field_bit_size = 16,
754         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
755         },
756         {
757         .field_bit_size = 10,
758         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
759         },
760         {
761         .field_bit_size = 1,
762         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
763         },
764         {
765         .field_bit_size = 1,
766         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
767         },
768         {
769         .field_bit_size = 1,
770         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
771         },
772         {
773         .field_bit_size = 1,
774         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
775         },
776         {
777         .field_bit_size = 4,
778         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
779         },
780         {
781         .field_bit_size = 12,
782         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ACT_PROP,
783         .result_operand = {
784                 (BNXT_ULP_ACT_PROP_IDX_VPORT >> 8) & 0xff,
785                 BNXT_ULP_ACT_PROP_IDX_VPORT & 0xff,
786                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
787                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
788         },
789         {
790         .field_bit_size = 1,
791         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
792         },
793         {
794         .field_bit_size = 1,
795         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
796         },
797         {
798         .field_bit_size = 2,
799         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
800         },
801         {
802         .field_bit_size = 1,
803         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
804         },
805         {
806         .field_bit_size = 3,
807         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_CONSTANT,
808         .result_operand = {
809                 BNXT_ULP_SYM_ECV_TUN_TYPE_VXLAN,
810                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
811                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
812         },
813         {
814         .field_bit_size = 3,
815         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_CONSTANT,
816         .result_operand = {
817                 BNXT_ULP_SYM_ECV_L4_TYPE_UDP_CSUM,
818                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
819                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
820         },
821         {
822         .field_bit_size = 3,
823         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ACT_PROP,
824         .result_operand = {
825                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_L3_TYPE >> 8) & 0xff,
826                 BNXT_ULP_ACT_PROP_IDX_ENCAP_L3_TYPE & 0xff,
827                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
828                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
829         },
830         {
831         .field_bit_size = 1,
832         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_CONSTANT,
833         .result_operand = {0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
834                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
835         },
836         {
837         .field_bit_size = 4,
838         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ACT_PROP,
839         .result_operand = {
840                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_TYPE >> 8) & 0xff,
841                 BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_TYPE & 0xff,
842                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
843                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
844         },
845         {
846         .field_bit_size = 1,
847         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
848         },
849         {
850         .field_bit_size = 1,
851         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_CONSTANT,
852         .result_operand = {0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
853                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
854         },
855         {
856         .field_bit_size = 48,
857         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ACT_PROP,
858         .result_operand = {
859                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_L2_DMAC >> 8) & 0xff,
860                 BNXT_ULP_ACT_PROP_IDX_ENCAP_L2_DMAC & 0xff,
861                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
862                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
863         },
864         {
865         .field_bit_size = 0,
866         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ENCAP_ACT_PROP_SZ,
867         .result_operand = {
868                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG >> 8) & 0xff,
869                 BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG & 0xff,
870                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_SZ >> 8) & 0xff,
871                 BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_SZ & 0xff,
872                 0x00, 0x00, 0x00, 0x00, 0x00,
873                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
874         },
875         {
876         .field_bit_size = 0,
877         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ENCAP_ACT_PROP_SZ,
878         .result_operand = {
879                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_IP >> 8) & 0xff,
880                 BNXT_ULP_ACT_PROP_IDX_ENCAP_IP & 0xff,
881                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_IP_SZ >> 8) & 0xff,
882                 BNXT_ULP_ACT_PROP_IDX_ENCAP_IP_SZ & 0xff,
883                 0x00, 0x00, 0x00, 0x00, 0x00,
884                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
885         },
886         {
887         .field_bit_size = 32,
888         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ACT_PROP,
889         .result_operand = {
890                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_UDP >> 8) & 0xff,
891                 BNXT_ULP_ACT_PROP_IDX_ENCAP_UDP & 0xff,
892                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
893                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
894         },
895         {
896         .field_bit_size = 0,
897         .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ENCAP_ACT_PROP_SZ,
898         .result_operand = {
899                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_TUN >> 8) & 0xff,
900                 BNXT_ULP_ACT_PROP_IDX_ENCAP_TUN & 0xff,
901                 (BNXT_ULP_ACT_PROP_IDX_ENCAP_TUN_SZ >> 8) & 0xff,
902                 BNXT_ULP_ACT_PROP_IDX_ENCAP_TUN_SZ & 0xff,
903                 0x00, 0x00, 0x00, 0x00, 0x00,
904                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
905         }
906 };