1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2014-2020 Broadcom
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"
11 uint16_t ulp_act_sig_tbl[BNXT_ULP_ACT_SIG_TBL_MAX_SZ] = {
12 [BNXT_ULP_ACT_HID_00a1] = 1,
13 [BNXT_ULP_ACT_HID_0029] = 2,
14 [BNXT_ULP_ACT_HID_0040] = 3
17 struct bnxt_ulp_act_match_info ulp_act_match_list[] = {
19 .act_hid = BNXT_ULP_ACT_HID_00a1,
21 BNXT_ULP_ACTION_BIT_VXLAN_DECAP |
22 BNXT_ULP_ACTION_BIT_MARK |
23 BNXT_ULP_ACTION_BIT_VNIC |
24 BNXT_ULP_FLOW_DIR_BITMASK_ING },
28 .act_hid = BNXT_ULP_ACT_HID_0029,
30 BNXT_ULP_ACTION_BIT_MARK |
31 BNXT_ULP_ACTION_BIT_RSS |
32 BNXT_ULP_ACTION_BIT_VNIC |
33 BNXT_ULP_FLOW_DIR_BITMASK_ING },
37 .act_hid = BNXT_ULP_ACT_HID_0040,
39 BNXT_ULP_ACTION_BIT_VXLAN_ENCAP |
40 BNXT_ULP_ACTION_BIT_VPORT |
41 BNXT_ULP_FLOW_DIR_BITMASK_EGR },
46 struct bnxt_ulp_mapper_tbl_list_info ulp_act_tmpl_list[] = {
47 [((0 << BNXT_ULP_LOG2_MAX_NUM_DEV) |
48 BNXT_ULP_DEVICE_ID_WH_PLUS)] = {
49 .device_name = BNXT_ULP_DEVICE_ID_WH_PLUS,
53 [((1 << BNXT_ULP_LOG2_MAX_NUM_DEV) |
54 BNXT_ULP_DEVICE_ID_WH_PLUS)] = {
55 .device_name = BNXT_ULP_DEVICE_ID_WH_PLUS,
59 [((2 << BNXT_ULP_LOG2_MAX_NUM_DEV) |
60 BNXT_ULP_DEVICE_ID_WH_PLUS)] = {
61 .device_name = BNXT_ULP_DEVICE_ID_WH_PLUS,
67 struct bnxt_ulp_mapper_tbl_info ulp_act_tbl_list[] = {
69 .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
70 .resource_type = TF_TBL_TYPE_EXT,
72 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TYPE_NORMAL,
73 .direction = TF_DIR_RX,
74 .srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO,
75 .result_start_idx = 0,
76 .result_bit_size = 128,
77 .result_num_fields = 26,
78 .encap_num_fields = 0,
79 .regfile_idx = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR,
80 .mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP
83 .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
84 .resource_type = TF_TBL_TYPE_EXT,
86 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TYPE_NORMAL,
87 .direction = TF_DIR_RX,
88 .srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO,
89 .result_start_idx = 26,
90 .result_bit_size = 128,
91 .result_num_fields = 26,
92 .encap_num_fields = 0,
93 .regfile_idx = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR,
94 .mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP
97 .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
98 .resource_type = TF_TBL_TYPE_EXT,
100 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TYPE_NORMAL,
101 .direction = TF_DIR_TX,
102 .srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO,
103 .result_start_idx = 52,
104 .result_bit_size = 128,
105 .result_num_fields = 26,
106 .encap_num_fields = 12,
107 .regfile_idx = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR,
108 .mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP
112 struct bnxt_ulp_mapper_result_field_info ulp_act_result_field_list[] = {
114 .field_bit_size = 14,
115 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
119 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
123 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
127 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
131 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
135 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
139 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
143 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
147 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
150 .field_bit_size = 11,
151 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
155 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
158 .field_bit_size = 10,
159 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
162 .field_bit_size = 16,
163 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
166 .field_bit_size = 10,
167 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
170 .field_bit_size = 16,
171 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
174 .field_bit_size = 10,
175 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
179 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
183 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
187 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
191 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
195 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_CONSTANT,
197 BNXT_ULP_SYM_DECAP_FUNC_THRU_TUN,
198 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
199 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
202 .field_bit_size = 12,
203 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ACT_PROP,
205 (BNXT_ULP_ACT_PROP_IDX_VNIC >> 8) & 0xff,
206 BNXT_ULP_ACT_PROP_IDX_VNIC & 0xff,
207 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
208 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
212 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
216 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
220 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
224 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
227 .field_bit_size = 14,
228 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
232 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
236 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
240 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
244 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
248 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
252 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
256 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
260 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
263 .field_bit_size = 11,
264 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
268 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
271 .field_bit_size = 10,
272 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
275 .field_bit_size = 16,
276 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
279 .field_bit_size = 10,
280 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
283 .field_bit_size = 16,
284 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
287 .field_bit_size = 10,
288 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
292 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
296 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
300 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
304 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
308 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
311 .field_bit_size = 12,
312 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ACT_PROP,
314 (BNXT_ULP_ACT_PROP_IDX_VNIC >> 8) & 0xff,
315 BNXT_ULP_ACT_PROP_IDX_VNIC & 0xff,
316 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
317 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
321 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
325 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
329 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
333 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
336 .field_bit_size = 14,
337 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
341 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
345 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
349 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
353 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
357 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
361 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
365 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
369 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
372 .field_bit_size = 11,
373 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
377 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
380 .field_bit_size = 10,
381 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
384 .field_bit_size = 16,
385 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
388 .field_bit_size = 10,
389 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
392 .field_bit_size = 16,
393 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
396 .field_bit_size = 10,
397 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
401 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
405 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
409 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
413 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
417 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
420 .field_bit_size = 12,
421 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ACT_PROP,
423 (BNXT_ULP_ACT_PROP_IDX_VPORT >> 8) & 0xff,
424 BNXT_ULP_ACT_PROP_IDX_VPORT & 0xff,
425 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
426 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
430 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
434 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
438 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
442 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
446 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_CONSTANT,
448 BNXT_ULP_SYM_ECV_TUN_TYPE_VXLAN,
449 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
450 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
454 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_CONSTANT,
456 BNXT_ULP_SYM_ECV_L4_TYPE_UDP_CSUM,
457 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
458 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
462 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ACT_PROP,
464 (BNXT_ULP_ACT_PROP_IDX_ENCAP_L3_TYPE >> 8) & 0xff,
465 BNXT_ULP_ACT_PROP_IDX_ENCAP_L3_TYPE & 0xff,
466 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
467 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
471 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_CONSTANT,
472 .result_operand = {0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
473 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
477 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ACT_PROP,
479 (BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_TYPE >> 8) & 0xff,
480 BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_TYPE & 0xff,
481 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
482 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
486 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
490 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_CONSTANT,
491 .result_operand = {0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
492 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
495 .field_bit_size = 48,
496 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ACT_PROP,
498 (BNXT_ULP_ACT_PROP_IDX_ENCAP_L2_DMAC >> 8) & 0xff,
499 BNXT_ULP_ACT_PROP_IDX_ENCAP_L2_DMAC & 0xff,
500 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
501 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
505 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ENCAP_ACT_PROP_SZ,
507 (BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG >> 8) & 0xff,
508 BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG & 0xff,
509 (BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_SZ >> 8) & 0xff,
510 BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_SZ & 0xff,
511 0x00, 0x00, 0x00, 0x00, 0x00,
512 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
516 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ENCAP_ACT_PROP_SZ,
518 (BNXT_ULP_ACT_PROP_IDX_ENCAP_IP >> 8) & 0xff,
519 BNXT_ULP_ACT_PROP_IDX_ENCAP_IP & 0xff,
520 (BNXT_ULP_ACT_PROP_IDX_ENCAP_IP_SZ >> 8) & 0xff,
521 BNXT_ULP_ACT_PROP_IDX_ENCAP_IP_SZ & 0xff,
522 0x00, 0x00, 0x00, 0x00, 0x00,
523 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
526 .field_bit_size = 32,
527 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ACT_PROP,
529 (BNXT_ULP_ACT_PROP_IDX_ENCAP_UDP >> 8) & 0xff,
530 BNXT_ULP_ACT_PROP_IDX_ENCAP_UDP & 0xff,
531 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
532 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
536 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ENCAP_ACT_PROP_SZ,
538 (BNXT_ULP_ACT_PROP_IDX_ENCAP_TUN >> 8) & 0xff,
539 BNXT_ULP_ACT_PROP_IDX_ENCAP_TUN & 0xff,
540 (BNXT_ULP_ACT_PROP_IDX_ENCAP_TUN_SZ >> 8) & 0xff,
541 BNXT_ULP_ACT_PROP_IDX_ENCAP_TUN_SZ & 0xff,
542 0x00, 0x00, 0x00, 0x00, 0x00,
543 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}