net/bnxt: add templates for shared sessions
[dpdk.git] / drivers / net / bnxt / tf_ulp / ulp_template_db_thor_class.c
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2014-2021 Broadcom
3  * All rights reserved.
4  */
5
6 /* date: Sun Mar 14 12:41:59 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 class list */
14 struct bnxt_ulp_mapper_tmpl_info ulp_thor_class_tmpl_list[] = {
15         /* class_tid: 3, thor, ingress */
16         [3] = {
17         .device_name = BNXT_ULP_DEVICE_ID_THOR,
18         .num_tbls = 7,
19         .start_tbl_idx = 0,
20         .reject_info = {
21                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_FALSE,
22                 .cond_start_idx = 0,
23                 .cond_nums = 0 }
24         },
25         /* class_tid: 4, thor, egress */
26         [4] = {
27         .device_name = BNXT_ULP_DEVICE_ID_THOR,
28         .num_tbls = 6,
29         .start_tbl_idx = 7,
30         .reject_info = {
31                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_FALSE,
32                 .cond_start_idx = 1,
33                 .cond_nums = 0 }
34         }
35 };
36
37 struct bnxt_ulp_mapper_tbl_info ulp_thor_class_tbl_list[] = {
38         { /* class_tid: 3, thor, table: int_full_act_record.ing_0 */
39         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
40         .resource_type = TF_TBL_TYPE_FULL_ACT_RECORD,
41         .resource_sub_type =
42                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_NORMAL,
43         .direction = TF_DIR_RX,
44         .execute_info = {
45                 .cond_true_goto  = 1,
46                 .cond_false_goto = 1,
47                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_TRUE,
48                 .cond_start_idx = 0,
49                 .cond_nums = 0 },
50         .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
51         .tbl_operand = BNXT_ULP_RF_IDX_MAIN_ACTION_PTR,
52         .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
53         .mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
54         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
55         .result_start_idx = 0,
56         .result_bit_size = 128,
57         .result_num_fields = 17
58         },
59         { /* class_tid: 3, thor, table: parif_def_arec_ptr.ing_0 */
60         .resource_func = BNXT_ULP_RESOURCE_FUNC_IF_TABLE,
61         .resource_type = TF_IF_TBL_TYPE_PROF_PARIF_DFLT_ACT_REC_PTR,
62         .direction = TF_DIR_RX,
63         .execute_info = {
64                 .cond_true_goto  = 1,
65                 .cond_false_goto = 1,
66                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_TRUE,
67                 .cond_start_idx = 0,
68                 .cond_nums = 0 },
69         .tbl_opcode = BNXT_ULP_IF_TBL_OPC_WR_COMP_FIELD,
70         .tbl_operand = BNXT_ULP_CF_IDX_PHY_PORT_PARIF,
71         .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
72         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
73         .result_start_idx = 17,
74         .result_bit_size = 32,
75         .result_num_fields = 1
76         },
77         { /* class_tid: 3, thor, table: parif_def_err_arec_ptr.ing_0 */
78         .resource_func = BNXT_ULP_RESOURCE_FUNC_IF_TABLE,
79         .resource_type = TF_IF_TBL_TYPE_PROF_PARIF_ERR_ACT_REC_PTR,
80         .direction = TF_DIR_RX,
81         .execute_info = {
82                 .cond_true_goto  = 1,
83                 .cond_false_goto = 1,
84                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_TRUE,
85                 .cond_start_idx = 0,
86                 .cond_nums = 0 },
87         .tbl_opcode = BNXT_ULP_IF_TBL_OPC_WR_COMP_FIELD,
88         .tbl_operand = BNXT_ULP_CF_IDX_PHY_PORT_PARIF,
89         .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
90         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
91         .result_start_idx = 18,
92         .result_bit_size = 32,
93         .result_num_fields = 1
94         },
95         { /* class_tid: 3, thor, table: control.egr_1 */
96         .resource_func = BNXT_ULP_RESOURCE_FUNC_CTRL_TABLE,
97         .direction = TF_DIR_RX,
98         .execute_info = {
99                 .cond_true_goto  = 1,
100                 .cond_false_goto = 0,
101                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_AND,
102                 .cond_start_idx = 0,
103                 .cond_nums = 1 },
104         .fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
105         .byte_order = BNXT_ULP_BYTE_ORDER_LE
106         },
107         { /* class_tid: 3, thor, table: int_full_act_record.egr_vfr */
108         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
109         .resource_type = TF_TBL_TYPE_FULL_ACT_RECORD,
110         .resource_sub_type =
111                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_VFR_CFA_ACTION,
112         .direction = TF_DIR_TX,
113         .execute_info = {
114                 .cond_true_goto  = 1,
115                 .cond_false_goto = 1,
116                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_TRUE,
117                 .cond_start_idx = 1,
118                 .cond_nums = 0 },
119         .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
120         .tbl_operand = BNXT_ULP_RF_IDX_MAIN_ACTION_PTR,
121         .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
122         .mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
123         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
124         .result_start_idx = 19,
125         .result_bit_size = 128,
126         .result_num_fields = 17,
127         .encap_num_fields = 0
128         },
129         { /* class_tid: 3, thor, table: parif_def_arec_ptr.egr_0 */
130         .resource_func = BNXT_ULP_RESOURCE_FUNC_IF_TABLE,
131         .resource_type = TF_IF_TBL_TYPE_PROF_PARIF_DFLT_ACT_REC_PTR,
132         .direction = TF_DIR_TX,
133         .execute_info = {
134                 .cond_true_goto  = 1,
135                 .cond_false_goto = 1,
136                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_TRUE,
137                 .cond_start_idx = 1,
138                 .cond_nums = 0 },
139         .tbl_opcode = BNXT_ULP_IF_TBL_OPC_WR_COMP_FIELD,
140         .tbl_operand = BNXT_ULP_CF_IDX_DRV_FUNC_PARIF,
141         .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
142         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
143         .result_start_idx = 36,
144         .result_bit_size = 32,
145         .result_num_fields = 1
146         },
147         { /* class_tid: 3, thor, table: parif_def_err_arec_ptr.egr_0 */
148         .resource_func = BNXT_ULP_RESOURCE_FUNC_IF_TABLE,
149         .resource_type = TF_IF_TBL_TYPE_PROF_PARIF_ERR_ACT_REC_PTR,
150         .direction = TF_DIR_TX,
151         .execute_info = {
152                 .cond_true_goto  = 0,
153                 .cond_false_goto = 0,
154                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_TRUE,
155                 .cond_start_idx = 1,
156                 .cond_nums = 0 },
157         .tbl_opcode = BNXT_ULP_IF_TBL_OPC_WR_COMP_FIELD,
158         .tbl_operand = BNXT_ULP_CF_IDX_DRV_FUNC_PARIF,
159         .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
160         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
161         .result_start_idx = 37,
162         .result_bit_size = 32,
163         .result_num_fields = 1
164         },
165         { /* class_tid: 4, thor, table: int_full_act_record.loopback */
166         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
167         .resource_type = TF_TBL_TYPE_FULL_ACT_RECORD,
168         .resource_sub_type =
169                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_VFR_CFA_ACTION,
170         .direction = TF_DIR_TX,
171         .execute_info = {
172                 .cond_true_goto  = 1,
173                 .cond_false_goto = 1,
174                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_TRUE,
175                 .cond_start_idx = 1,
176                 .cond_nums = 0 },
177         .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_GLB_REGFILE,
178         .tbl_operand = BNXT_ULP_GLB_RF_IDX_GLB_LB_AREC_PTR,
179         .fdb_opcode = BNXT_ULP_FDB_OPC_NOP,
180         .mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
181         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
182         .result_start_idx = 38,
183         .result_bit_size = 128,
184         .result_num_fields = 17,
185         .encap_num_fields = 0
186         },
187         { /* class_tid: 4, thor, table: parif_def_arec_ptr.vf_egr */
188         .resource_func = BNXT_ULP_RESOURCE_FUNC_IF_TABLE,
189         .resource_type = TF_IF_TBL_TYPE_PROF_PARIF_DFLT_ACT_REC_PTR,
190         .direction = TF_DIR_TX,
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 = 1,
196                 .cond_nums = 0 },
197         .tbl_opcode = BNXT_ULP_IF_TBL_OPC_WR_CONST,
198         .tbl_operand = ULP_THOR_SYM_LOOPBACK_PARIF,
199         .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
200         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
201         .result_start_idx = 55,
202         .result_bit_size = 32,
203         .result_num_fields = 1
204         },
205         { /* class_tid: 4, thor, table: parif_def_err_arec_ptr.vf_egr */
206         .resource_func = BNXT_ULP_RESOURCE_FUNC_IF_TABLE,
207         .resource_type = TF_IF_TBL_TYPE_PROF_PARIF_ERR_ACT_REC_PTR,
208         .direction = TF_DIR_TX,
209         .execute_info = {
210                 .cond_true_goto  = 1,
211                 .cond_false_goto = 1,
212                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_TRUE,
213                 .cond_start_idx = 1,
214                 .cond_nums = 0 },
215         .tbl_opcode = BNXT_ULP_IF_TBL_OPC_WR_CONST,
216         .tbl_operand = ULP_THOR_SYM_LOOPBACK_PARIF,
217         .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
218         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
219         .result_start_idx = 56,
220         .result_bit_size = 32,
221         .result_num_fields = 1
222         },
223         { /* class_tid: 4, thor, table: int_full_act_record.vf_ing */
224         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
225         .resource_type = TF_TBL_TYPE_FULL_ACT_RECORD,
226         .resource_sub_type =
227                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_NORMAL,
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_TRUE,
233                 .cond_start_idx = 1,
234                 .cond_nums = 0 },
235         .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
236         .tbl_operand = BNXT_ULP_RF_IDX_MAIN_ACTION_PTR,
237         .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
238         .mark_db_opcode = BNXT_ULP_MARK_DB_OPC_PUSH_AND_SET_VFR_FLAG,
239         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
240         .result_start_idx = 57,
241         .result_bit_size = 128,
242         .result_num_fields = 17,
243         .encap_num_fields = 0
244         },
245         { /* class_tid: 4, thor, table: vtag_encap_record.vfr_egr0 */
246         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
247         .resource_type = TF_TBL_TYPE_ACT_ENCAP_8B,
248         .resource_sub_type =
249                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_NORMAL,
250         .direction = TF_DIR_TX,
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 = 1,
256                 .cond_nums = 0 },
257         .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
258         .tbl_operand = BNXT_ULP_RF_IDX_ENCAP_PTR_0,
259         .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
260         .mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
261         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
262         .result_start_idx = 74,
263         .result_bit_size = 0,
264         .result_num_fields = 0,
265         .encap_num_fields = 11
266         },
267         { /* class_tid: 4, thor, table: int_full_act_record.vfr_egr0 */
268         .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
269         .resource_type = TF_TBL_TYPE_FULL_ACT_RECORD,
270         .resource_sub_type =
271                 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_VFR_CFA_ACTION,
272         .direction = TF_DIR_TX,
273         .execute_info = {
274                 .cond_true_goto  = 0,
275                 .cond_false_goto = 0,
276                 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_TRUE,
277                 .cond_start_idx = 1,
278                 .cond_nums = 0 },
279         .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
280         .tbl_operand = BNXT_ULP_RF_IDX_MAIN_ACTION_PTR,
281         .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH_FID,
282         .mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
283         .byte_order = BNXT_ULP_BYTE_ORDER_LE,
284         .result_start_idx = 85,
285         .result_bit_size = 128,
286         .result_num_fields = 17
287         }
288 };
289
290 struct bnxt_ulp_mapper_cond_info ulp_thor_class_cond_list[] = {
291         /* cond_execute: class_tid: 3, control.egr_1 */
292         {
293         .cond_opcode = BNXT_ULP_COND_OPC_CF_NOT_SET,
294         .cond_operand = BNXT_ULP_CF_IDX_VFR_MODE
295         }
296 };
297
298 struct bnxt_ulp_mapper_field_info ulp_thor_class_result_field_list[] = {
299         /* class_tid: 3, thor, table: int_full_act_record.ing_0 */
300         {
301         .description = "sp_rec_ptr",
302         .field_bit_size = 16,
303         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
304         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
305         },
306         {
307         .description = "encap_ptr",
308         .field_bit_size = 16,
309         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
310         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
311         },
312         {
313         .description = "mod_rec_ptr",
314         .field_bit_size = 16,
315         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
316         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
317         },
318         {
319         .description = "rsvd1",
320         .field_bit_size = 16,
321         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
322         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
323         },
324         {
325         .description = "rsvd0",
326         .field_bit_size = 8,
327         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
328         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
329         },
330         {
331         .description = "decap_func",
332         .field_bit_size = 5,
333         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
334         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
335         },
336         {
337         .description = "meter",
338         .field_bit_size = 10,
339         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
340         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
341         },
342         {
343         .description = "stats_op",
344         .field_bit_size = 1,
345         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
346         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
347         },
348         {
349         .description = "stats_ptr",
350         .field_bit_size = 16,
351         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
352         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
353         },
354         {
355         .description = "vnic_or_vport",
356         .field_bit_size = 11,
357         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
358         .field_src1 = BNXT_ULP_FIELD_SRC_CF,
359         .field_opr1 = {
360         (BNXT_ULP_CF_IDX_DRV_FUNC_VNIC >> 8) & 0xff,
361         BNXT_ULP_CF_IDX_DRV_FUNC_VNIC & 0xff}
362         },
363         {
364         .description = "use_default",
365         .field_bit_size = 1,
366         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
367         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
368         },
369         {
370         .description = "mirror",
371         .field_bit_size = 4,
372         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
373         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
374         },
375         {
376         .description = "cond_copy",
377         .field_bit_size = 1,
378         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
379         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
380         },
381         {
382         .description = "vlan_del_rpt",
383         .field_bit_size = 2,
384         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
385         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
386         },
387         {
388         .description = "drop",
389         .field_bit_size = 1,
390         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
391         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
392         },
393         {
394         .description = "hit",
395         .field_bit_size = 1,
396         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
397         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
398         },
399         {
400         .description = "type",
401         .field_bit_size = 3,
402         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
403         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
404         .field_opr1 = {
405         1}
406         },
407         /* class_tid: 3, thor, table: parif_def_arec_ptr.ing_0 */
408         {
409         .description = "act_rec_ptr",
410         .field_bit_size = 32,
411         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
412         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
413         .field_opr1 = {
414         (BNXT_ULP_RF_IDX_MAIN_ACTION_PTR >> 8) & 0xff,
415         BNXT_ULP_RF_IDX_MAIN_ACTION_PTR & 0xff}
416         },
417         /* class_tid: 3, thor, table: parif_def_err_arec_ptr.ing_0 */
418         {
419         .description = "act_rec_ptr",
420         .field_bit_size = 32,
421         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
422         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
423         .field_opr1 = {
424         (BNXT_ULP_RF_IDX_MAIN_ACTION_PTR >> 8) & 0xff,
425         BNXT_ULP_RF_IDX_MAIN_ACTION_PTR & 0xff}
426         },
427         /* class_tid: 3, thor, table: int_full_act_record.egr_vfr */
428         {
429         .description = "sp_rec_ptr",
430         .field_bit_size = 16,
431         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
432         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
433         },
434         {
435         .description = "encap_ptr",
436         .field_bit_size = 16,
437         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
438         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
439         },
440         {
441         .description = "mod_rec_ptr",
442         .field_bit_size = 16,
443         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
444         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
445         },
446         {
447         .description = "rsvd1",
448         .field_bit_size = 16,
449         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
450         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
451         },
452         {
453         .description = "rsvd0",
454         .field_bit_size = 8,
455         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
456         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
457         },
458         {
459         .description = "decap_func",
460         .field_bit_size = 5,
461         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
462         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
463         },
464         {
465         .description = "meter",
466         .field_bit_size = 10,
467         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
468         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
469         },
470         {
471         .description = "stats_op",
472         .field_bit_size = 1,
473         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
474         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
475         },
476         {
477         .description = "stats_ptr",
478         .field_bit_size = 16,
479         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
480         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
481         },
482         {
483         .description = "vnic_or_vport",
484         .field_bit_size = 11,
485         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
486         .field_src1 = BNXT_ULP_FIELD_SRC_CF,
487         .field_opr1 = {
488         (BNXT_ULP_CF_IDX_PHY_PORT_VPORT >> 8) & 0xff,
489         BNXT_ULP_CF_IDX_PHY_PORT_VPORT & 0xff}
490         },
491         {
492         .description = "use_default",
493         .field_bit_size = 1,
494         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
495         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
496         },
497         {
498         .description = "mirror",
499         .field_bit_size = 4,
500         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
501         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
502         },
503         {
504         .description = "cond_copy",
505         .field_bit_size = 1,
506         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
507         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
508         },
509         {
510         .description = "vlan_del_rpt",
511         .field_bit_size = 2,
512         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
513         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
514         },
515         {
516         .description = "drop",
517         .field_bit_size = 1,
518         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
519         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
520         },
521         {
522         .description = "hit",
523         .field_bit_size = 1,
524         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
525         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
526         },
527         {
528         .description = "type",
529         .field_bit_size = 3,
530         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
531         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
532         .field_opr1 = {
533         1}
534         },
535         /* class_tid: 3, thor, table: parif_def_arec_ptr.egr_0 */
536         {
537         .description = "act_rec_ptr",
538         .field_bit_size = 32,
539         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
540         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
541         .field_opr1 = {
542         (BNXT_ULP_RF_IDX_MAIN_ACTION_PTR >> 8) & 0xff,
543         BNXT_ULP_RF_IDX_MAIN_ACTION_PTR & 0xff}
544         },
545         /* class_tid: 3, thor, table: parif_def_err_arec_ptr.egr_0 */
546         {
547         .description = "act_rec_ptr",
548         .field_bit_size = 32,
549         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
550         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
551         .field_opr1 = {
552         (BNXT_ULP_RF_IDX_MAIN_ACTION_PTR >> 8) & 0xff,
553         BNXT_ULP_RF_IDX_MAIN_ACTION_PTR & 0xff}
554         },
555         /* class_tid: 4, thor, table: int_full_act_record.loopback */
556         {
557         .description = "sp_rec_ptr",
558         .field_bit_size = 16,
559         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
560         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
561         },
562         {
563         .description = "encap_ptr",
564         .field_bit_size = 16,
565         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
566         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
567         },
568         {
569         .description = "mod_rec_ptr",
570         .field_bit_size = 16,
571         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
572         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
573         },
574         {
575         .description = "rsvd1",
576         .field_bit_size = 16,
577         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
578         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
579         },
580         {
581         .description = "rsvd0",
582         .field_bit_size = 8,
583         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
584         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
585         },
586         {
587         .description = "decap_func",
588         .field_bit_size = 5,
589         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
590         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
591         },
592         {
593         .description = "meter",
594         .field_bit_size = 10,
595         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
596         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
597         },
598         {
599         .description = "stats_op",
600         .field_bit_size = 1,
601         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
602         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
603         },
604         {
605         .description = "stats_ptr",
606         .field_bit_size = 16,
607         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
608         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
609         },
610         {
611         .description = "vnic_or_vport",
612         .field_bit_size = 11,
613         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
614         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
615         .field_opr1 = {
616         (ULP_THOR_SYM_LOOPBACK_PORT >> 8) & 0xff,
617         ULP_THOR_SYM_LOOPBACK_PORT & 0xff}
618         },
619         {
620         .description = "use_default",
621         .field_bit_size = 1,
622         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
623         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
624         },
625         {
626         .description = "mirror",
627         .field_bit_size = 4,
628         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
629         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
630         },
631         {
632         .description = "cond_copy",
633         .field_bit_size = 1,
634         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
635         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
636         },
637         {
638         .description = "vlan_del_rpt",
639         .field_bit_size = 2,
640         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
641         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
642         },
643         {
644         .description = "drop",
645         .field_bit_size = 1,
646         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
647         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
648         },
649         {
650         .description = "hit",
651         .field_bit_size = 1,
652         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
653         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
654         },
655         {
656         .description = "type",
657         .field_bit_size = 3,
658         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
659         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
660         .field_opr1 = {
661         1}
662         },
663         /* class_tid: 4, thor, table: parif_def_arec_ptr.vf_egr */
664         {
665         .description = "act_rec_ptr",
666         .field_bit_size = 32,
667         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
668         .field_src1 = BNXT_ULP_FIELD_SRC_GLB_RF,
669         .field_opr1 = {
670         (BNXT_ULP_GLB_RF_IDX_GLB_LB_AREC_PTR >> 8) & 0xff,
671         BNXT_ULP_GLB_RF_IDX_GLB_LB_AREC_PTR & 0xff}
672         },
673         /* class_tid: 4, thor, table: parif_def_err_arec_ptr.vf_egr */
674         {
675         .description = "act_rec_ptr",
676         .field_bit_size = 32,
677         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
678         .field_src1 = BNXT_ULP_FIELD_SRC_GLB_RF,
679         .field_opr1 = {
680         (BNXT_ULP_GLB_RF_IDX_GLB_LB_AREC_PTR >> 8) & 0xff,
681         BNXT_ULP_GLB_RF_IDX_GLB_LB_AREC_PTR & 0xff}
682         },
683         /* class_tid: 4, thor, table: int_full_act_record.vf_ing */
684         {
685         .description = "sp_rec_ptr",
686         .field_bit_size = 16,
687         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
688         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
689         },
690         {
691         .description = "encap_ptr",
692         .field_bit_size = 16,
693         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
694         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
695         },
696         {
697         .description = "mod_rec_ptr",
698         .field_bit_size = 16,
699         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
700         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
701         },
702         {
703         .description = "rsvd1",
704         .field_bit_size = 16,
705         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
706         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
707         },
708         {
709         .description = "rsvd0",
710         .field_bit_size = 8,
711         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
712         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
713         },
714         {
715         .description = "decap_func",
716         .field_bit_size = 5,
717         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
718         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
719         },
720         {
721         .description = "meter",
722         .field_bit_size = 10,
723         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
724         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
725         },
726         {
727         .description = "stats_op",
728         .field_bit_size = 1,
729         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
730         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
731         },
732         {
733         .description = "stats_ptr",
734         .field_bit_size = 16,
735         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
736         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
737         },
738         {
739         .description = "vnic_or_vport",
740         .field_bit_size = 11,
741         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
742         .field_src1 = BNXT_ULP_FIELD_SRC_CF,
743         .field_opr1 = {
744         (BNXT_ULP_CF_IDX_DRV_FUNC_VNIC >> 8) & 0xff,
745         BNXT_ULP_CF_IDX_DRV_FUNC_VNIC & 0xff}
746         },
747         {
748         .description = "use_default",
749         .field_bit_size = 1,
750         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
751         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
752         },
753         {
754         .description = "mirror",
755         .field_bit_size = 4,
756         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
757         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
758         },
759         {
760         .description = "cond_copy",
761         .field_bit_size = 1,
762         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
763         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
764         },
765         {
766         .description = "vlan_del_rpt",
767         .field_bit_size = 2,
768         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
769         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
770         },
771         {
772         .description = "drop",
773         .field_bit_size = 1,
774         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
775         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
776         },
777         {
778         .description = "hit",
779         .field_bit_size = 1,
780         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
781         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
782         },
783         {
784         .description = "type",
785         .field_bit_size = 3,
786         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
787         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
788         .field_opr1 = {
789         1}
790         },
791         /* class_tid: 4, thor, table: vtag_encap_record.vfr_egr0 */
792         {
793         .description = "ecv_tun_type",
794         .field_bit_size = 3,
795         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
796         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
797         },
798         {
799         .description = "ecv_l4_type",
800         .field_bit_size = 3,
801         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
802         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
803         },
804         {
805         .description = "ecv_l3_type",
806         .field_bit_size = 3,
807         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
808         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
809         },
810         {
811         .description = "ecv_l2_en",
812         .field_bit_size = 1,
813         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
814         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
815         },
816         {
817         .description = "ecv_vtag_type",
818         .field_bit_size = 4,
819         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
820         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
821         .field_opr1 = {
822         ULP_THOR_SYM_ECV_VTAG_TYPE_ADD_1_ENCAP_PRI}
823         },
824         {
825         .description = "rsrvd",
826         .field_bit_size = 1,
827         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
828         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
829         },
830         {
831         .description = "ecv_valid",
832         .field_bit_size = 1,
833         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
834         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
835         .field_opr1 = {
836         1}
837         },
838         {
839         .description = "vtag_tpid",
840         .field_bit_size = 16,
841         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
842         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
843         .field_opr1 = {
844                 0x81,
845                 0x00}
846         },
847         {
848         .description = "vtag_vid",
849         .field_bit_size = 12,
850         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
851         .field_src1 = BNXT_ULP_FIELD_SRC_CF,
852         .field_opr1 = {
853         (BNXT_ULP_CF_IDX_DEV_PORT_ID >> 8) & 0xff,
854         BNXT_ULP_CF_IDX_DEV_PORT_ID & 0xff}
855         },
856         {
857         .description = "vtag_de",
858         .field_bit_size = 1,
859         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
860         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
861         },
862         {
863         .description = "vtag_pcp",
864         .field_bit_size = 3,
865         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
866         .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
867         .field_opr1 = {
868         (BNXT_ULP_ACT_PROP_IDX_SET_VLAN_PCP >> 8) & 0xff,
869         BNXT_ULP_ACT_PROP_IDX_SET_VLAN_PCP & 0xff}
870         },
871         /* class_tid: 4, thor, table: int_full_act_record.vfr_egr0 */
872         {
873         .description = "sp_rec_ptr",
874         .field_bit_size = 16,
875         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
876         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
877         },
878         {
879         .description = "encap_ptr",
880         .field_bit_size = 16,
881         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
882         .field_src1 = BNXT_ULP_FIELD_SRC_RF,
883         .field_opr1 = {
884         (BNXT_ULP_RF_IDX_ENCAP_PTR_0 >> 8) & 0xff,
885         BNXT_ULP_RF_IDX_ENCAP_PTR_0 & 0xff}
886         },
887         {
888         .description = "mod_rec_ptr",
889         .field_bit_size = 16,
890         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
891         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
892         },
893         {
894         .description = "rsvd1",
895         .field_bit_size = 16,
896         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
897         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
898         },
899         {
900         .description = "rsvd0",
901         .field_bit_size = 8,
902         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
903         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
904         },
905         {
906         .description = "decap_func",
907         .field_bit_size = 5,
908         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
909         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
910         },
911         {
912         .description = "meter",
913         .field_bit_size = 10,
914         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
915         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
916         },
917         {
918         .description = "stats_op",
919         .field_bit_size = 1,
920         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
921         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
922         },
923         {
924         .description = "stats_ptr",
925         .field_bit_size = 16,
926         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
927         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
928         },
929         {
930         .description = "vnic_or_vport",
931         .field_bit_size = 11,
932         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
933         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
934         .field_opr1 = {
935         (ULP_THOR_SYM_LOOPBACK_PORT >> 8) & 0xff,
936         ULP_THOR_SYM_LOOPBACK_PORT & 0xff}
937         },
938         {
939         .description = "use_default",
940         .field_bit_size = 1,
941         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
942         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
943         },
944         {
945         .description = "mirror",
946         .field_bit_size = 4,
947         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
948         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
949         },
950         {
951         .description = "cond_copy",
952         .field_bit_size = 1,
953         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
954         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
955         },
956         {
957         .description = "vlan_del_rpt",
958         .field_bit_size = 2,
959         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
960         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
961         },
962         {
963         .description = "drop",
964         .field_bit_size = 1,
965         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
966         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
967         },
968         {
969         .description = "hit",
970         .field_bit_size = 1,
971         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
972         .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
973         },
974         {
975         .description = "type",
976         .field_bit_size = 3,
977         .field_opc = BNXT_ULP_FIELD_OPC_SRC1,
978         .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
979         .field_opr1 = {
980                 1}
981         }
982 };
983
984 struct
985 bnxt_ulp_mapper_key_info ulp_thor_class_key_info_list[] = {
986 };
987
988 struct bnxt_ulp_mapper_ident_info ulp_thor_class_ident_list[] = {
989 };