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_0040] = 2,
14 [BNXT_ULP_ACT_HID_0029] = 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_0040,
30 BNXT_ULP_ACTION_BIT_VPORT |
31 BNXT_ULP_ACTION_BIT_VXLAN_ENCAP |
32 BNXT_ULP_FLOW_DIR_BITMASK_EGR },
36 .act_hid = BNXT_ULP_ACT_HID_0029,
38 BNXT_ULP_ACTION_BIT_MARK |
39 BNXT_ULP_ACTION_BIT_RSS |
40 BNXT_ULP_ACTION_BIT_VNIC |
41 BNXT_ULP_FLOW_DIR_BITMASK_ING },
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
82 .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
83 .resource_type = TF_TBL_TYPE_EXT,
85 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TYPE_NORMAL,
86 .direction = TF_DIR_TX,
87 .srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO,
88 .result_start_idx = 26,
89 .result_bit_size = 128,
90 .result_num_fields = 26,
91 .encap_num_fields = 12,
92 .regfile_idx = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR
95 .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
96 .resource_type = TF_TBL_TYPE_EXT,
98 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TYPE_NORMAL,
99 .direction = TF_DIR_RX,
100 .srch_b4_alloc = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO,
101 .result_start_idx = 64,
102 .result_bit_size = 128,
103 .result_num_fields = 26,
104 .encap_num_fields = 0,
105 .regfile_idx = BNXT_ULP_REGFILE_INDEX_MAIN_ACTION_PTR
109 struct bnxt_ulp_mapper_result_field_info ulp_act_result_field_list[] = {
111 .field_bit_size = 14,
112 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
116 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
120 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
124 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
128 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
132 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
136 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
140 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
144 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
147 .field_bit_size = 11,
148 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
152 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
155 .field_bit_size = 10,
156 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
159 .field_bit_size = 16,
160 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
163 .field_bit_size = 10,
164 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
167 .field_bit_size = 16,
168 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
171 .field_bit_size = 10,
172 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
176 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
180 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
184 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
188 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
192 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_CONSTANT,
194 BNXT_ULP_SYM_DECAP_FUNC_THRU_TUN,
195 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
196 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
199 .field_bit_size = 12,
200 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ACT_PROP,
202 (BNXT_ULP_ACT_PROP_IDX_VNIC >> 8) & 0xff,
203 BNXT_ULP_ACT_PROP_IDX_VNIC & 0xff,
204 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
205 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
209 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
213 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
217 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
221 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
224 .field_bit_size = 14,
225 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
229 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
233 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
237 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
241 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
245 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
249 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
253 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
257 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
260 .field_bit_size = 11,
261 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
265 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
268 .field_bit_size = 10,
269 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
272 .field_bit_size = 16,
273 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
276 .field_bit_size = 10,
277 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
280 .field_bit_size = 16,
281 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
284 .field_bit_size = 10,
285 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
289 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
293 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
297 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
301 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
305 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_CONSTANT,
307 BNXT_ULP_SYM_DECAP_FUNC_NONE,
308 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
309 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
312 .field_bit_size = 12,
313 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ACT_PROP,
315 (BNXT_ULP_ACT_PROP_IDX_VPORT >> 8) & 0xff,
316 BNXT_ULP_ACT_PROP_IDX_VPORT & 0xff,
317 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
318 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
322 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
326 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
330 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
334 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
338 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_CONSTANT,
340 BNXT_ULP_SYM_ECV_TUN_TYPE_VXLAN,
341 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
342 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
346 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_CONSTANT,
348 BNXT_ULP_SYM_ECV_L4_TYPE_UDP_CSUM,
349 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
350 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
354 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ACT_PROP,
356 (BNXT_ULP_ACT_PROP_IDX_ENCAP_L3_TYPE >> 8) & 0xff,
357 BNXT_ULP_ACT_PROP_IDX_ENCAP_L3_TYPE & 0xff,
358 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
359 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
363 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_CONSTANT,
364 .result_operand = {0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
365 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
369 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ACT_PROP,
371 (BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_TYPE >> 8) & 0xff,
372 BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_TYPE & 0xff,
373 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
374 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
378 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO
382 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_CONSTANT,
383 .result_operand = {0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
384 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
387 .field_bit_size = 48,
388 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ACT_PROP,
390 (BNXT_ULP_ACT_PROP_IDX_ENCAP_L2_DMAC >> 8) & 0xff,
391 BNXT_ULP_ACT_PROP_IDX_ENCAP_L2_DMAC & 0xff,
392 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
393 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
397 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ENCAP_ACT_PROP_SZ,
399 (BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG >> 8) & 0xff,
400 BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG & 0xff,
401 (BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_SZ >> 8) & 0xff,
402 BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_SZ & 0xff,
403 0x00, 0x00, 0x00, 0x00, 0x00,
404 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
408 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ENCAP_ACT_PROP_SZ,
410 (BNXT_ULP_ACT_PROP_IDX_ENCAP_IP >> 8) & 0xff,
411 BNXT_ULP_ACT_PROP_IDX_ENCAP_IP & 0xff,
412 (BNXT_ULP_ACT_PROP_IDX_ENCAP_IP_SZ >> 8) & 0xff,
413 BNXT_ULP_ACT_PROP_IDX_ENCAP_IP_SZ & 0xff,
414 0x00, 0x00, 0x00, 0x00, 0x00,
415 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
418 .field_bit_size = 32,
419 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ACT_PROP,
421 (BNXT_ULP_ACT_PROP_IDX_ENCAP_UDP >> 8) & 0xff,
422 BNXT_ULP_ACT_PROP_IDX_ENCAP_UDP & 0xff,
423 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
424 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
428 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ENCAP_ACT_PROP_SZ,
430 (BNXT_ULP_ACT_PROP_IDX_ENCAP_TUN >> 8) & 0xff,
431 BNXT_ULP_ACT_PROP_IDX_ENCAP_TUN & 0xff,
432 (BNXT_ULP_ACT_PROP_IDX_ENCAP_TUN_SZ >> 8) & 0xff,
433 BNXT_ULP_ACT_PROP_IDX_ENCAP_TUN_SZ & 0xff,
434 0x00, 0x00, 0x00, 0x00, 0x00,
435 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
438 .field_bit_size = 14,
439 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO,
443 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO,
447 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO,
451 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO,
455 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO,
459 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO,
463 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO,
467 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO,
471 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO,
474 .field_bit_size = 11,
475 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO,
479 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO,
482 .field_bit_size = 10,
483 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO,
486 .field_bit_size = 16,
487 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO,
490 .field_bit_size = 10,
491 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO,
494 .field_bit_size = 16,
495 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO,
498 .field_bit_size = 10,
499 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO,
503 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO,
507 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO,
511 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO,
515 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO,
519 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_CONSTANT,
521 BNXT_ULP_SYM_DECAP_FUNC_NONE,
522 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
523 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
526 .field_bit_size = 12,
527 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ACT_PROP,
529 (BNXT_ULP_ACT_PROP_IDX_VNIC >> 8) & 0xff,
530 BNXT_ULP_ACT_PROP_IDX_VNIC & 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_ZERO,
540 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO,
544 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO,
548 .result_opcode = BNXT_ULP_MAPPER_OPC_SET_TO_ZERO,