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 .index_opcode = BNXT_ULP_INDEX_OPCODE_ALLOCATE,
80 .index_operand = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR,
81 .mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP
84 .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
85 .resource_type = TF_TBL_TYPE_EXT,
87 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TYPE_NORMAL,
88 .direction = TF_DIR_RX,
89 .srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO,
90 .result_start_idx = 26,
91 .result_bit_size = 128,
92 .result_num_fields = 26,
93 .encap_num_fields = 0,
94 .index_opcode = BNXT_ULP_INDEX_OPCODE_ALLOCATE,
95 .index_operand = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR,
96 .mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP
99 .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
100 .resource_type = TF_TBL_TYPE_EXT,
102 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TYPE_NORMAL,
103 .direction = TF_DIR_TX,
104 .srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO,
105 .result_start_idx = 52,
106 .result_bit_size = 128,
107 .result_num_fields = 26,
108 .encap_num_fields = 12,
109 .index_opcode = BNXT_ULP_INDEX_OPCODE_ALLOCATE,
110 .index_operand = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR,
111 .mark_db_opcode = BNXT_ULP_MARK_DB_OPCODE_NOP
115 struct bnxt_ulp_mapper_result_field_info ulp_act_result_field_list[] = {
117 .field_bit_size = 14,
118 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
122 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
126 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
130 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
134 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
138 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
142 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
146 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
150 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
153 .field_bit_size = 11,
154 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
158 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
161 .field_bit_size = 10,
162 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
165 .field_bit_size = 16,
166 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
169 .field_bit_size = 10,
170 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
173 .field_bit_size = 16,
174 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
177 .field_bit_size = 10,
178 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
182 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
186 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
190 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
194 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
198 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_CONSTANT,
200 BNXT_ULP_SYM_DECAP_FUNC_THRU_TUN,
201 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
202 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
205 .field_bit_size = 12,
206 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ACT_PROP,
208 (BNXT_ULP_ACT_PROP_IDX_VNIC >> 8) & 0xff,
209 BNXT_ULP_ACT_PROP_IDX_VNIC & 0xff,
210 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
211 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
215 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
219 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
223 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
227 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
230 .field_bit_size = 14,
231 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
235 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
239 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
243 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
247 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
251 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
255 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
259 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
263 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
266 .field_bit_size = 11,
267 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
271 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
274 .field_bit_size = 10,
275 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
278 .field_bit_size = 16,
279 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
282 .field_bit_size = 10,
283 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
286 .field_bit_size = 16,
287 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
290 .field_bit_size = 10,
291 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
295 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
299 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
303 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
307 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
311 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
314 .field_bit_size = 12,
315 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ACT_PROP,
317 (BNXT_ULP_ACT_PROP_IDX_VNIC >> 8) & 0xff,
318 BNXT_ULP_ACT_PROP_IDX_VNIC & 0xff,
319 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
320 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
324 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
328 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
332 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
336 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
339 .field_bit_size = 14,
340 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
344 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
348 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
352 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
356 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
360 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
364 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
368 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
372 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
375 .field_bit_size = 11,
376 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
380 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
383 .field_bit_size = 10,
384 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
387 .field_bit_size = 16,
388 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
391 .field_bit_size = 10,
392 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
395 .field_bit_size = 16,
396 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
399 .field_bit_size = 10,
400 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
404 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
408 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
412 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
416 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
420 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
423 .field_bit_size = 12,
424 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ACT_PROP,
426 (BNXT_ULP_ACT_PROP_IDX_VPORT >> 8) & 0xff,
427 BNXT_ULP_ACT_PROP_IDX_VPORT & 0xff,
428 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
429 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
433 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
437 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
441 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
445 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
449 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_CONSTANT,
451 BNXT_ULP_SYM_ECV_TUN_TYPE_VXLAN,
452 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
453 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
457 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_CONSTANT,
459 BNXT_ULP_SYM_ECV_L4_TYPE_UDP_CSUM,
460 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
461 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
465 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ACT_PROP,
467 (BNXT_ULP_ACT_PROP_IDX_ENCAP_L3_TYPE >> 8) & 0xff,
468 BNXT_ULP_ACT_PROP_IDX_ENCAP_L3_TYPE & 0xff,
469 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
470 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
474 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_CONSTANT,
475 .result_operand = {0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
476 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
480 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ACT_PROP,
482 (BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_TYPE >> 8) & 0xff,
483 BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_TYPE & 0xff,
484 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
485 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
489 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
493 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_CONSTANT,
494 .result_operand = {0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
495 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
498 .field_bit_size = 48,
499 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ACT_PROP,
501 (BNXT_ULP_ACT_PROP_IDX_ENCAP_L2_DMAC >> 8) & 0xff,
502 BNXT_ULP_ACT_PROP_IDX_ENCAP_L2_DMAC & 0xff,
503 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
504 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
508 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ENCAP_ACT_PROP_SZ,
510 (BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG >> 8) & 0xff,
511 BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG & 0xff,
512 (BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_SZ >> 8) & 0xff,
513 BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_SZ & 0xff,
514 0x00, 0x00, 0x00, 0x00, 0x00,
515 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
519 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ENCAP_ACT_PROP_SZ,
521 (BNXT_ULP_ACT_PROP_IDX_ENCAP_IP >> 8) & 0xff,
522 BNXT_ULP_ACT_PROP_IDX_ENCAP_IP & 0xff,
523 (BNXT_ULP_ACT_PROP_IDX_ENCAP_IP_SZ >> 8) & 0xff,
524 BNXT_ULP_ACT_PROP_IDX_ENCAP_IP_SZ & 0xff,
525 0x00, 0x00, 0x00, 0x00, 0x00,
526 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
529 .field_bit_size = 32,
530 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ACT_PROP,
532 (BNXT_ULP_ACT_PROP_IDX_ENCAP_UDP >> 8) & 0xff,
533 BNXT_ULP_ACT_PROP_IDX_ENCAP_UDP & 0xff,
534 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
535 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
539 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ENCAP_ACT_PROP_SZ,
541 (BNXT_ULP_ACT_PROP_IDX_ENCAP_TUN >> 8) & 0xff,
542 BNXT_ULP_ACT_PROP_IDX_ENCAP_TUN & 0xff,
543 (BNXT_ULP_ACT_PROP_IDX_ENCAP_TUN_SZ >> 8) & 0xff,
544 BNXT_ULP_ACT_PROP_IDX_ENCAP_TUN_SZ & 0xff,
545 0x00, 0x00, 0x00, 0x00, 0x00,
546 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}