1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2014-2021 Broadcom
6 /* date: Tue Dec 1 17:07:12 2020 */
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"
13 /* Mapper templates for header act list */
14 struct bnxt_ulp_mapper_tmpl_info ulp_wh_plus_act_tmpl_list[] = {
15 /* act_tid: 1, wh_plus, ingress */
17 .device_name = BNXT_ULP_DEVICE_ID_WH_PLUS,
21 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_FALSE,
27 struct bnxt_ulp_mapper_tbl_info ulp_wh_plus_act_tbl_list[] = {
28 { /* act_tid: 1, wh_plus, table: int_flow_counter_tbl.0 */
29 .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
30 .resource_type = TF_TBL_TYPE_ACT_STATS_64,
32 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_INT_COUNT,
33 .direction = TF_DIR_RX,
36 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_OR,
39 .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_REGFILE,
40 .tbl_operand = BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0,
41 .accept_opcode = BNXT_ULP_ACCEPT_OPC_ALWAYS,
42 .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH,
43 .mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
44 .result_start_idx = 0,
45 .result_bit_size = 64,
46 .result_num_fields = 1,
49 { /* act_tid: 1, wh_plus, table: int_vtag_encap_record.0 */
50 .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
51 .resource_type = TF_TBL_TYPE_ACT_ENCAP_16B,
53 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_NORMAL,
54 .direction = TF_DIR_RX,
55 .mem_type_opcode = BNXT_ULP_MEM_TYPE_OPC_EXECUTE_IF_INT,
58 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_OR,
61 .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
62 .tbl_operand = BNXT_ULP_RF_IDX_ENCAP_PTR_0,
63 .accept_opcode = BNXT_ULP_ACCEPT_OPC_ALWAYS,
64 .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH,
65 .mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
66 .result_start_idx = 1,
68 .result_num_fields = 0,
69 .encap_num_fields = 12
71 { /* act_tid: 1, wh_plus, table: int_full_act_record.0 */
72 .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
73 .resource_type = TF_TBL_TYPE_FULL_ACT_RECORD,
75 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_NORMAL,
76 .direction = TF_DIR_RX,
77 .mem_type_opcode = BNXT_ULP_MEM_TYPE_OPC_EXECUTE_IF_INT,
80 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_TRUE,
83 .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
84 .tbl_operand = BNXT_ULP_RF_IDX_MAIN_ACTION_PTR,
85 .accept_opcode = BNXT_ULP_ACCEPT_OPC_ALWAYS,
86 .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH,
87 .mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
88 .result_start_idx = 13,
89 .result_bit_size = 128,
90 .result_num_fields = 26,
93 { /* act_tid: 1, wh_plus, table: ext_full_act_record.0 */
94 .resource_func = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
95 .resource_type = TF_TBL_TYPE_EXT,
97 BNXT_ULP_RESOURCE_SUB_TYPE_INDEX_TABLE_NORMAL,
98 .direction = TF_DIR_RX,
99 .mem_type_opcode = BNXT_ULP_MEM_TYPE_OPC_EXECUTE_IF_EXT,
102 .cond_list_opcode = BNXT_ULP_COND_LIST_OPC_TRUE,
105 .tbl_opcode = BNXT_ULP_INDEX_TBL_OPC_ALLOC_WR_REGFILE,
106 .tbl_operand = BNXT_ULP_RF_IDX_MAIN_ACTION_PTR,
107 .accept_opcode = BNXT_ULP_ACCEPT_OPC_ALWAYS,
108 .fdb_opcode = BNXT_ULP_FDB_OPC_PUSH,
109 .mark_db_opcode = BNXT_ULP_MARK_DB_OPC_NOP,
110 .result_start_idx = 39,
111 .result_bit_size = 128,
112 .result_num_fields = 26,
113 .encap_num_fields = 0
117 struct bnxt_ulp_mapper_cond_info ulp_wh_plus_act_cond_list[] = {
119 .cond_opcode = BNXT_ULP_COND_OPC_ACT_BIT_IS_SET,
120 .cond_operand = BNXT_ULP_ACT_BIT_COUNT
123 .cond_opcode = BNXT_ULP_COND_OPC_ACT_BIT_IS_SET,
124 .cond_operand = BNXT_ULP_ACT_BIT_PUSH_VLAN
128 struct bnxt_ulp_mapper_field_info ulp_wh_plus_act_result_field_list[] = {
129 /* act_tid: 1, wh_plus, table: int_flow_counter_tbl.0 */
131 .description = "count",
132 .field_bit_size = 64,
133 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
134 .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
136 /* act_tid: 1, wh_plus, table: int_vtag_encap_record.0 */
138 .description = "ecv_tun_type",
140 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
141 .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
144 .description = "ecv_l4_type",
146 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
147 .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
150 .description = "ecv_l3_type",
152 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
153 .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
156 .description = "ecv_l2_en",
158 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
159 .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
162 .description = "ecv_vtag_type",
164 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
165 .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
167 ULP_WP_SYM_ECV_VTAG_TYPE_ADD_1_ENCAP_PRI}
170 .description = "ecv_custom_en",
172 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
173 .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
176 .description = "ecv_valid",
178 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
179 .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
182 .description = "vtag_tpid",
183 .field_bit_size = 16,
184 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
185 .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
187 (BNXT_ULP_ACT_PROP_IDX_PUSH_VLAN >> 8) & 0xff,
188 BNXT_ULP_ACT_PROP_IDX_PUSH_VLAN & 0xff}
191 .description = "vtag_vid",
192 .field_bit_size = 12,
193 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
194 .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
196 (BNXT_ULP_ACT_PROP_IDX_SET_VLAN_VID >> 8) & 0xff,
197 BNXT_ULP_ACT_PROP_IDX_SET_VLAN_VID & 0xff}
200 .description = "vtag_de",
202 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
203 .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
206 .description = "vtag_pcp",
208 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
209 .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
211 (BNXT_ULP_ACT_PROP_IDX_SET_VLAN_PCP >> 8) & 0xff,
212 BNXT_ULP_ACT_PROP_IDX_SET_VLAN_PCP & 0xff}
215 .description = "spare",
216 .field_bit_size = 80,
217 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
218 .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
220 /* act_tid: 1, wh_plus, table: int_full_act_record.0 */
222 .description = "flow_cntr_ptr",
223 .field_bit_size = 14,
224 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
225 .field_src1 = BNXT_ULP_FIELD_SRC_RF,
227 (BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 >> 8) & 0xff,
228 BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 & 0xff}
231 .description = "age_enable",
233 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
234 .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
237 .description = "agg_cntr_en",
239 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
240 .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
243 .description = "rate_cntr_en",
245 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
246 .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
249 .description = "flow_cntr_en",
251 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
252 .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
254 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 56) & 0xff,
255 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 48) & 0xff,
256 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 40) & 0xff,
257 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 32) & 0xff,
258 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 24) & 0xff,
259 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 16) & 0xff,
260 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 8) & 0xff,
261 (uint64_t)BNXT_ULP_ACT_BIT_COUNT & 0xff}
264 .description = "tcpflags_key",
266 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
267 .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
270 .description = "tcpflags_mir",
272 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
273 .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
276 .description = "tcpflags_match",
278 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
279 .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
282 .description = "encap_ptr",
283 .field_bit_size = 11,
284 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
285 .field_src1 = BNXT_ULP_FIELD_SRC_RF,
287 (BNXT_ULP_RF_IDX_ENCAP_PTR_0 >> 8) & 0xff,
288 BNXT_ULP_RF_IDX_ENCAP_PTR_0 & 0xff}
291 .description = "dst_ip_ptr",
292 .field_bit_size = 10,
293 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
294 .field_src1 = BNXT_ULP_FIELD_SRC_RF,
296 (BNXT_ULP_RF_IDX_MODIFY_IPV4_DST_PTR_0 >> 8) & 0xff,
297 BNXT_ULP_RF_IDX_MODIFY_IPV4_DST_PTR_0 & 0xff}
300 .description = "tcp_dst_port",
301 .field_bit_size = 16,
302 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_ACT_BIT,
304 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 56) & 0xff,
305 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 48) & 0xff,
306 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 40) & 0xff,
307 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 32) & 0xff,
308 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 24) & 0xff,
309 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 16) & 0xff,
310 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 8) & 0xff,
311 (uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST & 0xff},
312 .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
314 (BNXT_ULP_ACT_PROP_IDX_SET_TP_DST >> 8) & 0xff,
315 BNXT_ULP_ACT_PROP_IDX_SET_TP_DST & 0xff},
316 .field_src2 = BNXT_ULP_FIELD_SRC_CONST
319 .description = "src_ip_ptr",
320 .field_bit_size = 10,
321 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
322 .field_src1 = BNXT_ULP_FIELD_SRC_RF,
324 (BNXT_ULP_RF_IDX_MODIFY_IPV4_SRC_PTR_0 >> 8) & 0xff,
325 BNXT_ULP_RF_IDX_MODIFY_IPV4_SRC_PTR_0 & 0xff}
328 .description = "tcp_src_port",
329 .field_bit_size = 16,
330 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_ACT_BIT,
332 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 56) & 0xff,
333 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 48) & 0xff,
334 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 40) & 0xff,
335 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 32) & 0xff,
336 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 24) & 0xff,
337 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 16) & 0xff,
338 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 8) & 0xff,
339 (uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC & 0xff},
340 .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
342 (BNXT_ULP_ACT_PROP_IDX_SET_TP_SRC >> 8) & 0xff,
343 BNXT_ULP_ACT_PROP_IDX_SET_TP_SRC & 0xff},
344 .field_src2 = BNXT_ULP_FIELD_SRC_CONST
347 .description = "meter_id",
348 .field_bit_size = 10,
349 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
350 .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
353 .description = "l3_rdir",
355 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
356 .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
359 .description = "tl3_rdir",
361 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
362 .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
365 .description = "l3_ttl_dec",
367 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
368 .field_src1 = BNXT_ULP_FIELD_SRC_CF,
370 (BNXT_ULP_CF_IDX_ACT_DEC_TTL >> 8) & 0xff,
371 BNXT_ULP_CF_IDX_ACT_DEC_TTL & 0xff}
374 .description = "tl3_ttl_dec",
376 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
377 .field_src1 = BNXT_ULP_FIELD_SRC_CF,
379 (BNXT_ULP_CF_IDX_ACT_T_DEC_TTL >> 8) & 0xff,
380 BNXT_ULP_CF_IDX_ACT_T_DEC_TTL & 0xff}
383 .description = "decap_func",
385 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_ACT_BIT,
387 ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 56) & 0xff,
388 ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 48) & 0xff,
389 ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 40) & 0xff,
390 ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 32) & 0xff,
391 ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 24) & 0xff,
392 ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 16) & 0xff,
393 ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 8) & 0xff,
394 (uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP & 0xff},
395 .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
397 ULP_WP_SYM_DECAP_FUNC_THRU_TUN},
398 .field_src2 = BNXT_ULP_FIELD_SRC_CONST,
400 ULP_WP_SYM_DECAP_FUNC_NONE}
403 .description = "vnic_or_vport",
404 .field_bit_size = 12,
405 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
406 .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
408 (BNXT_ULP_ACT_PROP_IDX_VNIC >> 8) & 0xff,
409 BNXT_ULP_ACT_PROP_IDX_VNIC & 0xff}
412 .description = "pop_vlan",
414 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
415 .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
417 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 56) & 0xff,
418 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 48) & 0xff,
419 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 40) & 0xff,
420 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 32) & 0xff,
421 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 24) & 0xff,
422 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 16) & 0xff,
423 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 8) & 0xff,
424 (uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN & 0xff}
427 .description = "meter",
429 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
430 .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
433 .description = "mirror",
435 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
436 .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
439 .description = "drop",
441 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
442 .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
444 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 56) & 0xff,
445 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 48) & 0xff,
446 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 40) & 0xff,
447 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 32) & 0xff,
448 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 24) & 0xff,
449 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 16) & 0xff,
450 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 8) & 0xff,
451 (uint64_t)BNXT_ULP_ACT_BIT_DROP & 0xff}
454 .description = "hit",
456 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
457 .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
460 .description = "type",
462 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
463 .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
465 /* act_tid: 1, wh_plus, table: ext_full_act_record.0 */
467 .description = "flow_cntr_ptr",
468 .field_bit_size = 14,
469 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
470 .field_src1 = BNXT_ULP_FIELD_SRC_RF,
472 (BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 >> 8) & 0xff,
473 BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_0 & 0xff}
476 .description = "age_enable",
478 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
479 .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
482 .description = "agg_cntr_en",
484 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
485 .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
488 .description = "rate_cntr_en",
490 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
491 .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
494 .description = "flow_cntr_en",
496 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
497 .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
499 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 56) & 0xff,
500 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 48) & 0xff,
501 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 40) & 0xff,
502 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 32) & 0xff,
503 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 24) & 0xff,
504 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 16) & 0xff,
505 ((uint64_t)BNXT_ULP_ACT_BIT_COUNT >> 8) & 0xff,
506 (uint64_t)BNXT_ULP_ACT_BIT_COUNT & 0xff}
509 .description = "flow_cntr_ext",
511 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
512 .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
515 .description = "tcpflags_key",
517 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
518 .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
521 .description = "tcpflags_mir",
523 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
524 .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
527 .description = "tcpflags_match",
529 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
530 .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
533 .description = "encap_ptr",
534 .field_bit_size = 11,
535 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
536 .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
539 .description = "encap_rec_int",
541 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
542 .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
545 .description = "dst_ip_ptr",
546 .field_bit_size = 10,
547 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
548 .field_src1 = BNXT_ULP_FIELD_SRC_RF,
550 (BNXT_ULP_RF_IDX_MODIFY_IPV4_DST_PTR_0 >> 8) & 0xff,
551 BNXT_ULP_RF_IDX_MODIFY_IPV4_DST_PTR_0 & 0xff}
554 .description = "tcp_dst_port",
555 .field_bit_size = 16,
556 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_ACT_BIT,
558 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 56) & 0xff,
559 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 48) & 0xff,
560 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 40) & 0xff,
561 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 32) & 0xff,
562 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 24) & 0xff,
563 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 16) & 0xff,
564 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST >> 8) & 0xff,
565 (uint64_t)BNXT_ULP_ACT_BIT_SET_TP_DST & 0xff},
566 .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
568 (BNXT_ULP_ACT_PROP_IDX_SET_TP_DST >> 8) & 0xff,
569 BNXT_ULP_ACT_PROP_IDX_SET_TP_DST & 0xff},
570 .field_src2 = BNXT_ULP_FIELD_SRC_CONST
573 .description = "src_ip_ptr",
574 .field_bit_size = 10,
575 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
576 .field_src1 = BNXT_ULP_FIELD_SRC_RF,
578 (BNXT_ULP_RF_IDX_MODIFY_IPV4_SRC_PTR_0 >> 8) & 0xff,
579 BNXT_ULP_RF_IDX_MODIFY_IPV4_SRC_PTR_0 & 0xff}
582 .description = "tcp_src_port",
583 .field_bit_size = 16,
584 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_ACT_BIT,
586 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 56) & 0xff,
587 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 48) & 0xff,
588 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 40) & 0xff,
589 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 32) & 0xff,
590 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 24) & 0xff,
591 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 16) & 0xff,
592 ((uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC >> 8) & 0xff,
593 (uint64_t)BNXT_ULP_ACT_BIT_SET_TP_SRC & 0xff},
594 .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
596 (BNXT_ULP_ACT_PROP_IDX_SET_TP_SRC >> 8) & 0xff,
597 BNXT_ULP_ACT_PROP_IDX_SET_TP_SRC & 0xff},
598 .field_src2 = BNXT_ULP_FIELD_SRC_CONST
601 .description = "meter_id",
602 .field_bit_size = 10,
603 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
604 .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
607 .description = "l3_rdir",
609 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
610 .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
613 .description = "tl3_rdir",
615 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
616 .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
619 .description = "l3_ttl_dec",
621 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
622 .field_src1 = BNXT_ULP_FIELD_SRC_CF,
624 (BNXT_ULP_CF_IDX_ACT_DEC_TTL >> 8) & 0xff,
625 BNXT_ULP_CF_IDX_ACT_DEC_TTL & 0xff}
628 .description = "tl3_ttl_dec",
630 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
631 .field_src1 = BNXT_ULP_FIELD_SRC_CF,
633 (BNXT_ULP_CF_IDX_ACT_T_DEC_TTL >> 8) & 0xff,
634 BNXT_ULP_CF_IDX_ACT_T_DEC_TTL & 0xff}
637 .description = "decap_func",
639 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_ACT_BIT,
641 ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 56) & 0xff,
642 ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 48) & 0xff,
643 ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 40) & 0xff,
644 ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 32) & 0xff,
645 ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 24) & 0xff,
646 ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 16) & 0xff,
647 ((uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP >> 8) & 0xff,
648 (uint64_t)BNXT_ULP_ACT_BIT_VXLAN_DECAP & 0xff},
649 .field_src1 = BNXT_ULP_FIELD_SRC_CONST,
651 ULP_WP_SYM_DECAP_FUNC_THRU_TUN},
652 .field_src2 = BNXT_ULP_FIELD_SRC_CONST,
654 ULP_WP_SYM_DECAP_FUNC_NONE}
657 .description = "vnic_or_vport",
658 .field_bit_size = 12,
659 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
660 .field_src1 = BNXT_ULP_FIELD_SRC_ACT_PROP,
662 (BNXT_ULP_ACT_PROP_IDX_VNIC >> 8) & 0xff,
663 BNXT_ULP_ACT_PROP_IDX_VNIC & 0xff}
666 .description = "pop_vlan",
668 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
669 .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
671 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 56) & 0xff,
672 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 48) & 0xff,
673 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 40) & 0xff,
674 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 32) & 0xff,
675 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 24) & 0xff,
676 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 16) & 0xff,
677 ((uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN >> 8) & 0xff,
678 (uint64_t)BNXT_ULP_ACT_BIT_POP_VLAN & 0xff}
681 .description = "meter",
683 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
684 .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
687 .description = "mirror",
689 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
690 .field_src1 = BNXT_ULP_FIELD_SRC_ZERO
693 .description = "drop",
695 .field_cond_src = BNXT_ULP_FIELD_COND_SRC_TRUE,
696 .field_src1 = BNXT_ULP_FIELD_SRC_ACT_BIT,
698 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 56) & 0xff,
699 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 48) & 0xff,
700 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 40) & 0xff,
701 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 32) & 0xff,
702 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 24) & 0xff,
703 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 16) & 0xff,
704 ((uint64_t)BNXT_ULP_ACT_BIT_DROP >> 8) & 0xff,
705 (uint64_t)BNXT_ULP_ACT_BIT_DROP & 0xff}