net/bnxt: identify duplicate flows
[dpdk.git] / drivers / net / bnxt / tf_ulp / ulp_template_db_tbl.c
index bb48ad2..30a71de 100644 (file)
  * All rights reserved.
  */
 
-/* date: Thu Oct 15 17:28:37 2020 */
+/* date: Mon Nov 23 17:33:02 2020 */
 
 #include "ulp_template_db_enum.h"
 #include "ulp_template_db_field.h"
 #include "ulp_template_struct.h"
-#include "ulp_rte_parser.h"
 #include "ulp_template_db_tbl.h"
 
-uint32_t ulp_act_prop_map_table[] = {
-       [BNXT_ULP_ACT_PROP_IDX_ENCAP_TUN_SZ] =
-               BNXT_ULP_ACT_PROP_SZ_ENCAP_TUN_SZ,
-       [BNXT_ULP_ACT_PROP_IDX_ENCAP_IP_SZ] =
-               BNXT_ULP_ACT_PROP_SZ_ENCAP_IP_SZ,
-       [BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_SZ] =
-               BNXT_ULP_ACT_PROP_SZ_ENCAP_VTAG_SZ,
-       [BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_TYPE] =
-               BNXT_ULP_ACT_PROP_SZ_ENCAP_VTAG_TYPE,
-       [BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_NUM] =
-               BNXT_ULP_ACT_PROP_SZ_ENCAP_VTAG_NUM,
-       [BNXT_ULP_ACT_PROP_IDX_ENCAP_L3_TYPE] =
-               BNXT_ULP_ACT_PROP_SZ_ENCAP_L3_TYPE,
-       [BNXT_ULP_ACT_PROP_IDX_MPLS_POP_NUM] =
-               BNXT_ULP_ACT_PROP_SZ_MPLS_POP_NUM,
-       [BNXT_ULP_ACT_PROP_IDX_MPLS_PUSH_NUM] =
-               BNXT_ULP_ACT_PROP_SZ_MPLS_PUSH_NUM,
-       [BNXT_ULP_ACT_PROP_IDX_PORT_ID] =
-               BNXT_ULP_ACT_PROP_SZ_PORT_ID,
-       [BNXT_ULP_ACT_PROP_IDX_VNIC] =
-               BNXT_ULP_ACT_PROP_SZ_VNIC,
-       [BNXT_ULP_ACT_PROP_IDX_VPORT] =
-               BNXT_ULP_ACT_PROP_SZ_VPORT,
-       [BNXT_ULP_ACT_PROP_IDX_MARK] =
-               BNXT_ULP_ACT_PROP_SZ_MARK,
-       [BNXT_ULP_ACT_PROP_IDX_COUNT] =
-               BNXT_ULP_ACT_PROP_SZ_COUNT,
-       [BNXT_ULP_ACT_PROP_IDX_METER] =
-               BNXT_ULP_ACT_PROP_SZ_METER,
-       [BNXT_ULP_ACT_PROP_IDX_SET_MAC_SRC] =
-               BNXT_ULP_ACT_PROP_SZ_SET_MAC_SRC,
-       [BNXT_ULP_ACT_PROP_IDX_SET_MAC_DST] =
-               BNXT_ULP_ACT_PROP_SZ_SET_MAC_DST,
-       [BNXT_ULP_ACT_PROP_IDX_PUSH_VLAN] =
-               BNXT_ULP_ACT_PROP_SZ_PUSH_VLAN,
-       [BNXT_ULP_ACT_PROP_IDX_SET_VLAN_PCP] =
-               BNXT_ULP_ACT_PROP_SZ_SET_VLAN_PCP,
-       [BNXT_ULP_ACT_PROP_IDX_SET_VLAN_VID] =
-               BNXT_ULP_ACT_PROP_SZ_SET_VLAN_VID,
-       [BNXT_ULP_ACT_PROP_IDX_SET_IPV4_SRC] =
-               BNXT_ULP_ACT_PROP_SZ_SET_IPV4_SRC,
-       [BNXT_ULP_ACT_PROP_IDX_SET_IPV4_DST] =
-               BNXT_ULP_ACT_PROP_SZ_SET_IPV4_DST,
-       [BNXT_ULP_ACT_PROP_IDX_SET_IPV6_SRC] =
-               BNXT_ULP_ACT_PROP_SZ_SET_IPV6_SRC,
-       [BNXT_ULP_ACT_PROP_IDX_SET_IPV6_DST] =
-               BNXT_ULP_ACT_PROP_SZ_SET_IPV6_DST,
-       [BNXT_ULP_ACT_PROP_IDX_SET_TP_SRC] =
-               BNXT_ULP_ACT_PROP_SZ_SET_TP_SRC,
-       [BNXT_ULP_ACT_PROP_IDX_SET_TP_DST] =
-               BNXT_ULP_ACT_PROP_SZ_SET_TP_DST,
-       [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_0] =
-               BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_0,
-       [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_1] =
-               BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_1,
-       [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_2] =
-               BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_2,
-       [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_3] =
-               BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_3,
-       [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_4] =
-               BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_4,
-       [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_5] =
-               BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_5,
-       [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_6] =
-               BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_6,
-       [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_7] =
-               BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_7,
-       [BNXT_ULP_ACT_PROP_IDX_ENCAP_L2_DMAC] =
-               BNXT_ULP_ACT_PROP_SZ_ENCAP_L2_DMAC,
-       [BNXT_ULP_ACT_PROP_IDX_ENCAP_L2_SMAC] =
-               BNXT_ULP_ACT_PROP_SZ_ENCAP_L2_SMAC,
-       [BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG] =
-               BNXT_ULP_ACT_PROP_SZ_ENCAP_VTAG,
-       [BNXT_ULP_ACT_PROP_IDX_ENCAP_IP] =
-               BNXT_ULP_ACT_PROP_SZ_ENCAP_IP,
-       [BNXT_ULP_ACT_PROP_IDX_ENCAP_IP_SRC] =
-               BNXT_ULP_ACT_PROP_SZ_ENCAP_IP_SRC,
-       [BNXT_ULP_ACT_PROP_IDX_ENCAP_UDP] =
-               BNXT_ULP_ACT_PROP_SZ_ENCAP_UDP,
-       [BNXT_ULP_ACT_PROP_IDX_ENCAP_TUN] =
-               BNXT_ULP_ACT_PROP_SZ_ENCAP_TUN,
-       [BNXT_ULP_ACT_PROP_IDX_JUMP] =
-               BNXT_ULP_ACT_PROP_SZ_JUMP,
-       [BNXT_ULP_ACT_PROP_IDX_LAST] =
-               BNXT_ULP_ACT_PROP_SZ_LAST
-};
-
-uint8_t ulp_glb_field_tbl[211] = {
-       [0] = 0,
-       [1] = 0,
-       [2] = 0,
-       [3] = 0,
-       [4] = 0,
-       [5] = 0,
-       [6] = 0,
-       [7] = 0,
-       [8] = 0,
-       [9] = 0,
-       [10] = 0,
-       [11] = 0,
-       [12] = 0,
-       [13] = 0,
-       [14] = 0,
-       [15] = 0,
-       [16] = 0,
-       [17] = 0,
-       [18] = 0,
-       [19] = 0,
-       [20] = 0,
-       [21] = 0,
-       [22] = 0,
-       [23] = 0,
-       [24] = 0,
-       [25] = 0,
-       [26] = 0,
-       [27] = 0,
-       [28] = 0,
-       [29] = 0,
-       [30] = 0,
-       [31] = 0,
-       [32] = 0,
-       [33] = 0,
-       [34] = 0,
-       [35] = 0,
-       [36] = 0,
-       [37] = 0,
-       [38] = 0,
-       [39] = 0,
-       [40] = 0,
-       [41] = 0,
-       [42] = 0,
-       [43] = 0,
-       [44] = 0,
-       [45] = 0,
-       [46] = 0,
-       [47] = 0,
-       [48] = 0,
-       [49] = 0,
-       [50] = 0,
-       [51] = 0,
-       [52] = 0,
-       [53] = 0,
-       [54] = 0,
-       [55] = 0,
-       [56] = 0,
-       [57] = 0,
-       [58] = 0,
-       [59] = 0,
-       [60] = 0,
-       [61] = 0,
-       [62] = 0,
-       [63] = 0,
-       [64] = 0,
-       [65] = 0,
-       [66] = 0,
-       [67] = 0,
-       [68] = 0,
-       [69] = 0,
-       [70] = 0,
-       [71] = 0,
-       [72] = 0,
-       [73] = 0,
-       [74] = 0,
-       [75] = 0,
-       [76] = 0,
-       [77] = 0,
-       [78] = 0,
-       [79] = 0,
-       [80] = 0,
-       [81] = 0,
-       [82] = 0,
-       [83] = 0,
-       [84] = 0,
-       [85] = 0,
-       [86] = 0,
-       [87] = 0,
-       [88] = 0,
-       [89] = 0,
-       [90] = 0,
-       [91] = 0,
-       [92] = 0,
-       [93] = 0,
-       [94] = 0,
-       [95] = 0,
-       [96] = 0,
-       [97] = 0,
-       [98] = 0,
-       [99] = 0,
-       [100] = 0,
-       [101] = 0,
-       [102] = 0,
-       [103] = 0,
-       [104] = 0,
-       [105] = 0,
-       [106] = 0,
-       [107] = 0,
-       [108] = 0,
-       [109] = 0,
-       [110] = 0,
-       [111] = 0,
-       [112] = 0,
-       [113] = 0,
-       [114] = 0,
-       [115] = 0,
-       [116] = 0,
-       [117] = 0,
-       [118] = 0,
-       [119] = 0,
-       [120] = 0,
-       [121] = 0,
-       [122] = 0,
-       [123] = 0,
-       [124] = 0,
-       [125] = 0,
-       [126] = 0,
-       [127] = 0,
-       /* svif.index */
-       [128] = 1,
-       /* o_eth.dmac */
-       [129] = 2,
-       [130] = 0,
-       /* o_eth.smac */
-       [131] = 3,
-       [132] = 0,
-       /* o_eth.type */
-       [133] = 4,
-       [134] = 0,
-       /* o_ipv4.ver */
-       [135] = 11,
-       [136] = 0,
-       /* o_ipv4.tos */
-       [137] = 12,
-       [138] = 0,
-       /* o_ipv4.len */
-       [139] = 13,
-       [140] = 0,
-       /* o_ipv4.frag_id */
-       [141] = 14,
-       [142] = 0,
-       /* o_ipv4.frag_off */
-       [143] = 15,
-       [144] = 0,
-       /* o_ipv4.ttl */
-       [145] = 16,
-       [146] = 0,
-       /* o_ipv4.proto_id */
-       [147] = 17,
-       [148] = 0,
-       /* o_ipv4.csum */
-       [149] = 18,
-       [150] = 0,
-       /* o_ipv4.src_addr */
-       [151] = 19,
-       [152] = 0,
-       /* o_ipv4.dst_addr */
-       [153] = 20,
-       [154] = 0,
-       [155] = 0,
-       [156] = 0,
-       [157] = 0,
-       [158] = 0,
-       [159] = 0,
-       [160] = 0,
-       [161] = 0,
-       [162] = 0,
-       [163] = 0,
-       [164] = 0,
-       [165] = 0,
-       [166] = 0,
-       [167] = 0,
-       [168] = 0,
-       [169] = 0,
-       [170] = 0,
-       [171] = 0,
-       [172] = 0,
-       [173] = 0,
-       [174] = 0,
-       /* o_tcp.src_port */
-       [175] = 21,
-       [176] = 0,
-       /* o_tcp.dst_port */
-       [177] = 22,
-       [178] = 0,
-       /* o_tcp.sent_seq */
-       [179] = 23,
-       [180] = 0,
-       /* o_tcp.recv_ack */
-       [181] = 24,
-       [182] = 0,
-       /* o_tcp.data_off */
-       [183] = 25,
-       [184] = 0,
-       /* o_tcp.tcp_flags */
-       [185] = 26,
-       [186] = 0,
-       /* o_tcp.rx_win */
-       [187] = 27,
-       [188] = 0,
-       /* o_tcp.csum */
-       [189] = 28,
-       [190] = 0,
-       /* o_tcp.urp */
-       [191] = 29,
-       [192] = 0,
-       [193] = 0,
-       [194] = 0,
-       [195] = 0,
-       [196] = 0,
-       [197] = 0,
-       [198] = 0,
-       [199] = 0,
-       [200] = 0,
-       /* oo_vlan.cfi_pri */
-       [201] = 5,
-       /* oi_vlan.cfi_pri */
-       [202] = 8,
-       [203] = 0,
-       [204] = 0,
-       /* oo_vlan.vid */
-       [205] = 6,
-       /* oi_vlan.vid */
-       [206] = 9,
-       [207] = 0,
-       [208] = 0,
-       /* oo_vlan.type */
-       [209] = 7,
-       /* oi_vlan.type */
-       [210] = 10
-};
-
-/*
- * This structure has to be indexed based on the rte_flow_action_type that is
- * part of DPDK. The below array is list of parsing functions for each of the
- * flow actions that are supported.
- */
-struct bnxt_ulp_rte_act_info ulp_act_info[] = {
-       [RTE_FLOW_ACTION_TYPE_END] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_END,
-       .proto_act_func          = NULL
-       },
-       [RTE_FLOW_ACTION_TYPE_VOID] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
-       .proto_act_func          = ulp_rte_void_act_handler
-       },
-       [RTE_FLOW_ACTION_TYPE_PASSTHRU] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
-       .proto_act_func          = NULL
-       },
-       [RTE_FLOW_ACTION_TYPE_JUMP] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
-       .proto_act_func          = ulp_rte_jump_act_handler
-       },
-       [RTE_FLOW_ACTION_TYPE_MARK] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
-       .proto_act_func          = ulp_rte_mark_act_handler
-       },
-       [RTE_FLOW_ACTION_TYPE_FLAG] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
-       .proto_act_func          = NULL
-       },
-       [RTE_FLOW_ACTION_TYPE_QUEUE] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
-       .proto_act_func          = NULL
-       },
-       [RTE_FLOW_ACTION_TYPE_DROP] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
-       .proto_act_func          = ulp_rte_drop_act_handler
-       },
-       [RTE_FLOW_ACTION_TYPE_COUNT] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
-       .proto_act_func          = ulp_rte_count_act_handler
-       },
-       [RTE_FLOW_ACTION_TYPE_RSS] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
-       .proto_act_func          = ulp_rte_rss_act_handler
-       },
-       [RTE_FLOW_ACTION_TYPE_PF] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
-       .proto_act_func          = ulp_rte_pf_act_handler
-       },
-       [RTE_FLOW_ACTION_TYPE_VF] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
-       .proto_act_func          = ulp_rte_vf_act_handler
-       },
-       [RTE_FLOW_ACTION_TYPE_PHY_PORT] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
-       .proto_act_func          = ulp_rte_phy_port_act_handler
-       },
-       [RTE_FLOW_ACTION_TYPE_PORT_ID] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
-       .proto_act_func          = ulp_rte_port_id_act_handler
-       },
-       [RTE_FLOW_ACTION_TYPE_METER] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
-       .proto_act_func          = NULL
-       },
-       [RTE_FLOW_ACTION_TYPE_SECURITY] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
-       .proto_act_func          = NULL
-       },
-       [RTE_FLOW_ACTION_TYPE_OF_SET_MPLS_TTL] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
-       .proto_act_func          = NULL
-       },
-       [RTE_FLOW_ACTION_TYPE_OF_DEC_MPLS_TTL] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
-       .proto_act_func          = NULL
-       },
-       [RTE_FLOW_ACTION_TYPE_OF_SET_NW_TTL] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
-       .proto_act_func          = NULL
-       },
-       [RTE_FLOW_ACTION_TYPE_OF_DEC_NW_TTL] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
-       .proto_act_func          = NULL
-       },
-       [RTE_FLOW_ACTION_TYPE_OF_COPY_TTL_OUT] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
-       .proto_act_func          = NULL
-       },
-       [RTE_FLOW_ACTION_TYPE_OF_COPY_TTL_IN] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
-       .proto_act_func          = NULL
-       },
-       [RTE_FLOW_ACTION_TYPE_OF_POP_VLAN] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
-       .proto_act_func          = ulp_rte_of_pop_vlan_act_handler
-       },
-       [RTE_FLOW_ACTION_TYPE_OF_PUSH_VLAN] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
-       .proto_act_func          = ulp_rte_of_push_vlan_act_handler
-       },
-       [RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_VID] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
-       .proto_act_func          = ulp_rte_of_set_vlan_vid_act_handler
-       },
-       [RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_PCP] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
-       .proto_act_func          = ulp_rte_of_set_vlan_pcp_act_handler
-       },
-       [RTE_FLOW_ACTION_TYPE_OF_POP_MPLS] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
-       .proto_act_func          = NULL
-       },
-       [RTE_FLOW_ACTION_TYPE_OF_PUSH_MPLS] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
-       .proto_act_func          = NULL
-       },
-       [RTE_FLOW_ACTION_TYPE_VXLAN_ENCAP] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
-       .proto_act_func          = ulp_rte_vxlan_encap_act_handler
-       },
-       [RTE_FLOW_ACTION_TYPE_VXLAN_DECAP] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
-       .proto_act_func          = ulp_rte_vxlan_decap_act_handler
-       },
-       [RTE_FLOW_ACTION_TYPE_NVGRE_ENCAP] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
-       .proto_act_func          = NULL
-       },
-       [RTE_FLOW_ACTION_TYPE_NVGRE_DECAP] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
-       .proto_act_func          = NULL
-       },
-       [RTE_FLOW_ACTION_TYPE_RAW_ENCAP] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
-       .proto_act_func          = NULL
-       },
-       [RTE_FLOW_ACTION_TYPE_RAW_DECAP] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
-       .proto_act_func          = NULL
-       },
-       [RTE_FLOW_ACTION_TYPE_SET_IPV4_SRC] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
-       .proto_act_func          = ulp_rte_set_ipv4_src_act_handler
-       },
-       [RTE_FLOW_ACTION_TYPE_SET_IPV4_DST] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
-       .proto_act_func          = ulp_rte_set_ipv4_dst_act_handler
-       },
-       [RTE_FLOW_ACTION_TYPE_SET_IPV6_SRC] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
-       .proto_act_func          = NULL
-       },
-       [RTE_FLOW_ACTION_TYPE_SET_IPV6_DST] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
-       .proto_act_func          = NULL
-       },
-       [RTE_FLOW_ACTION_TYPE_SET_TP_SRC] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
-       .proto_act_func          = ulp_rte_set_tp_src_act_handler
-       },
-       [RTE_FLOW_ACTION_TYPE_SET_TP_DST] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
-       .proto_act_func          = ulp_rte_set_tp_dst_act_handler
-       },
-       [RTE_FLOW_ACTION_TYPE_MAC_SWAP] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
-       .proto_act_func          = NULL
-       },
-       [RTE_FLOW_ACTION_TYPE_DEC_TTL] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
-       .proto_act_func          = ulp_rte_dec_ttl_act_handler
-       },
-       [RTE_FLOW_ACTION_TYPE_SET_TTL] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
-       .proto_act_func          = NULL
-       },
-       [RTE_FLOW_ACTION_TYPE_SET_MAC_SRC] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
-       .proto_act_func          = NULL
-       },
-       [RTE_FLOW_ACTION_TYPE_SET_MAC_DST] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
-       .proto_act_func          = NULL
-       },
-       [RTE_FLOW_ACTION_TYPE_INC_TCP_SEQ] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
-       .proto_act_func          = NULL
-       },
-       [RTE_FLOW_ACTION_TYPE_DEC_TCP_SEQ] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
-       .proto_act_func          = NULL
-       },
-       [RTE_FLOW_ACTION_TYPE_INC_TCP_ACK] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
-       .proto_act_func          = NULL
-       },
-       [RTE_FLOW_ACTION_TYPE_DEC_TCP_ACK] = {
-       .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
-       .proto_act_func          = NULL
-       }
-};
-
-/* Specifies parameters for the generic tables */
+/* Specifies parameters for the cache and shared tables */
 struct bnxt_ulp_generic_tbl_params ulp_generic_tbl_params[] = {
        [BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_L2_CNTXT_TCAM << 1 |
-               TF_DIR_RX] = {
-       .result_num_entries     = 16384,
-       .result_byte_size       = 6,
-       .result_byte_order      = BNXT_ULP_BYTE_ORDER_LE
+               BNXT_ULP_DIRECTION_INGRESS] = {
+       .result_num_entries      = 16384,
+       .result_num_bytes        = 16,
+       .result_byte_order       = BNXT_ULP_BYTE_ORDER_LE
        },
        [BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_L2_CNTXT_TCAM << 1 |
-               TF_DIR_TX] = {
-       .result_num_entries     = 16384,
-       .result_byte_size       = 6,
-       .result_byte_order      = BNXT_ULP_BYTE_ORDER_LE
-
+               BNXT_ULP_DIRECTION_EGRESS] = {
+       .result_num_entries      = 16384,
+       .result_num_bytes        = 16,
+       .result_byte_order       = BNXT_ULP_BYTE_ORDER_LE
        },
        [BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_PROFILE_TCAM << 1 |
-               TF_DIR_RX] = {
-       .result_num_entries     = 16384,
-       .result_byte_size       = 6,
-       .result_byte_order      = BNXT_ULP_BYTE_ORDER_LE
+               BNXT_ULP_DIRECTION_INGRESS] = {
+       .result_num_entries      = 16384,
+       .result_num_bytes        = 16,
+       .result_byte_order       = BNXT_ULP_BYTE_ORDER_LE
        },
        [BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_PROFILE_TCAM << 1 |
-               TF_DIR_TX] = {
-       .result_num_entries     = 16384,
-       .result_byte_size       = 6,
-       .result_byte_order      = BNXT_ULP_BYTE_ORDER_LE
+               BNXT_ULP_DIRECTION_EGRESS] = {
+       .result_num_entries      = 16384,
+       .result_num_bytes        = 16,
+       .result_byte_order       = BNXT_ULP_BYTE_ORDER_LE
+       },
+       [BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_MIRROR_TBL << 1 |
+               BNXT_ULP_DIRECTION_INGRESS] = {
+       .result_num_entries      = 16,
+       .result_num_bytes        = 16,
+       .result_byte_order       = BNXT_ULP_BYTE_ORDER_LE
+       },
+       [BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_MIRROR_TBL << 1 |
+               BNXT_ULP_DIRECTION_EGRESS] = {
+       .result_num_entries      = 16,
+       .result_num_bytes        = 16,
+       .result_byte_order       = BNXT_ULP_BYTE_ORDER_LE
        }
 };
 
@@ -578,15 +54,27 @@ struct bnxt_ulp_generic_tbl_params ulp_generic_tbl_params[] = {
 const struct bnxt_ulp_template_device_tbls ulp_template_stingray_tbls[] = {
        [BNXT_ULP_TEMPLATE_TYPE_CLASS] = {
        .tmpl_list               = ulp_stingray_class_tmpl_list,
+       .tmpl_list_size          = ULP_STINGRAY_CLASS_TMPL_LIST_SIZE,
        .tbl_list                = ulp_stingray_class_tbl_list,
-       .key_field_list          = ulp_stingray_class_key_field_list,
+       .tbl_list_size           = ULP_STINGRAY_CLASS_TBL_LIST_SIZE,
+       .key_info_list           = ulp_stingray_class_key_info_list,
+       .key_info_list_size      = ULP_STINGRAY_CLASS_KEY_INFO_LIST_SIZE,
+       .ident_list              = ulp_stingray_class_ident_list,
+       .ident_list_size         = ULP_STINGRAY_CLASS_IDENT_LIST_SIZE,
+       .cond_list               = ulp_stingray_class_cond_list,
+       .cond_list_size          = ULP_STINGRAY_CLASS_COND_LIST_SIZE,
        .result_field_list       = ulp_stingray_class_result_field_list,
-       .ident_list              = ulp_stingray_class_ident_list
+       .result_field_list_size  = ULP_STINGRAY_CLASS_RESULT_FIELD_LIST_SIZE
        },
        [BNXT_ULP_TEMPLATE_TYPE_ACTION] = {
        .tmpl_list               = ulp_stingray_act_tmpl_list,
+       .tmpl_list_size          = ULP_STINGRAY_ACT_TMPL_LIST_SIZE,
        .tbl_list                = ulp_stingray_act_tbl_list,
-       .result_field_list       = ulp_stingray_act_result_field_list
+       .tbl_list_size           = ULP_STINGRAY_ACT_TBL_LIST_SIZE,
+       .cond_list               = ulp_stingray_act_cond_list,
+       .cond_list_size          = ULP_STINGRAY_ACT_COND_LIST_SIZE,
+       .result_field_list       = ulp_stingray_act_result_field_list,
+       .result_field_list_size  = ULP_STINGRAY_ACT_RESULT_FIELD_LIST_SIZE
        }
 };
 
@@ -594,15 +82,27 @@ const struct bnxt_ulp_template_device_tbls ulp_template_stingray_tbls[] = {
 const struct bnxt_ulp_template_device_tbls ulp_template_wh_plus_tbls[] = {
        [BNXT_ULP_TEMPLATE_TYPE_CLASS] = {
        .tmpl_list               = ulp_wh_plus_class_tmpl_list,
+       .tmpl_list_size          = ULP_WH_PLUS_CLASS_TMPL_LIST_SIZE,
        .tbl_list                = ulp_wh_plus_class_tbl_list,
-       .key_field_list          = ulp_wh_plus_class_key_field_list,
+       .tbl_list_size           = ULP_WH_PLUS_CLASS_TBL_LIST_SIZE,
+       .key_info_list           = ulp_wh_plus_class_key_info_list,
+       .key_info_list_size      = ULP_WH_PLUS_CLASS_KEY_INFO_LIST_SIZE,
+       .ident_list              = ulp_wh_plus_class_ident_list,
+       .ident_list_size         = ULP_WH_PLUS_CLASS_IDENT_LIST_SIZE,
+       .cond_list               = ulp_wh_plus_class_cond_list,
+       .cond_list_size          = ULP_WH_PLUS_CLASS_COND_LIST_SIZE,
        .result_field_list       = ulp_wh_plus_class_result_field_list,
-       .ident_list              = ulp_wh_plus_class_ident_list
+       .result_field_list_size  = ULP_WH_PLUS_CLASS_RESULT_FIELD_LIST_SIZE
        },
        [BNXT_ULP_TEMPLATE_TYPE_ACTION] = {
        .tmpl_list               = ulp_wh_plus_act_tmpl_list,
+       .tmpl_list_size          = ULP_WH_PLUS_ACT_TMPL_LIST_SIZE,
        .tbl_list                = ulp_wh_plus_act_tbl_list,
-       .result_field_list       = ulp_wh_plus_act_result_field_list
+       .tbl_list_size           = ULP_WH_PLUS_ACT_TBL_LIST_SIZE,
+       .cond_list               = ulp_wh_plus_act_cond_list,
+       .cond_list_size          = ULP_WH_PLUS_ACT_COND_LIST_SIZE,
+       .result_field_list       = ulp_wh_plus_act_result_field_list,
+       .result_field_list_size  = ULP_WH_PLUS_ACT_RESULT_FIELD_LIST_SIZE
        }
 };
 
@@ -653,265 +153,237 @@ struct bnxt_ulp_glb_resource_info ulp_glb_resource_tbl[] = {
        [0] = {
        .resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
        .resource_type           = TF_IDENT_TYPE_PROF_FUNC,
-       .glb_regfile_index       = BNXT_ULP_GLB_REGFILE_INDEX_GLB_PROF_FUNC_ID,
+       .glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_GLB_PROF_FUNC_ID,
        .direction               = TF_DIR_RX
        },
        [1] = {
        .resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
        .resource_type           = TF_IDENT_TYPE_PROF_FUNC,
-       .glb_regfile_index       = BNXT_ULP_GLB_REGFILE_INDEX_GLB_PROF_FUNC_ID,
+       .glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_GLB_PROF_FUNC_ID,
        .direction               = TF_DIR_TX
        },
        [2] = {
        .resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
        .resource_type           = TF_TBL_TYPE_FULL_ACT_RECORD,
-       .glb_regfile_index       = BNXT_ULP_GLB_REGFILE_INDEX_GLB_LB_AREC_PTR,
+       .glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_GLB_LB_AREC_PTR,
        .direction               = TF_DIR_TX
        },
        [3] = {
        .resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
        .resource_type           = TF_IDENT_TYPE_PROF_FUNC,
-       .glb_regfile_index       = BNXT_ULP_GLB_REGFILE_INDEX_L2_PROF_FUNC_ID,
+       .glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_L2_PROF_FUNC_ID,
        .direction               = TF_DIR_RX
        },
        [4] = {
        .resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
        .resource_type           = TF_IDENT_TYPE_PROF_FUNC,
-       .glb_regfile_index       = BNXT_ULP_GLB_REGFILE_INDEX_L2_PROF_FUNC_ID,
+       .glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_L2_PROF_FUNC_ID,
        .direction               = TF_DIR_TX
        },
        [5] = {
        .resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
        .resource_type           = TF_IDENT_TYPE_PROF_FUNC,
-       .glb_regfile_index       = BNXT_ULP_GLB_REGFILE_INDEX_VXLAN_PROF_FUNC_ID,
+       .glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_VXLAN_PROF_FUNC_ID,
        .direction               = TF_DIR_RX
        },
        [6] = {
        .resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
        .resource_type           = TF_TBL_TYPE_ACT_ENCAP_16B,
-       .glb_regfile_index       = BNXT_ULP_GLB_REGFILE_INDEX_ENCAP_MAC_PTR,
+       .glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_ENCAP_MAC_PTR,
        .direction               = TF_DIR_RX
        },
        [7] = {
        .resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,
        .resource_type           = TF_TBL_TYPE_ACT_ENCAP_16B,
-       .glb_regfile_index       = BNXT_ULP_GLB_REGFILE_INDEX_ENCAP_MAC_PTR,
+       .glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_ENCAP_MAC_PTR,
        .direction               = TF_DIR_TX
        }
 };
 
-/*
- * This table has to be indexed based on the rte_flow_item_type that is part of
- * DPDK. The below array is list of parsing functions for each of the flow items
- * that are supported.
- */
-struct bnxt_ulp_rte_hdr_info ulp_hdr_info[] = {
-       [RTE_FLOW_ITEM_TYPE_END] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_END,
-       .proto_hdr_func          = NULL
-       },
-       [RTE_FLOW_ITEM_TYPE_VOID] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
-       .proto_hdr_func          = ulp_rte_void_hdr_handler
-       },
-       [RTE_FLOW_ITEM_TYPE_INVERT] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
-       .proto_hdr_func          = NULL
-       },
-       [RTE_FLOW_ITEM_TYPE_ANY] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
-       .proto_hdr_func          = NULL
-       },
-       [RTE_FLOW_ITEM_TYPE_PF] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
-       .proto_hdr_func          = ulp_rte_pf_hdr_handler
-       },
-       [RTE_FLOW_ITEM_TYPE_VF] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
-       .proto_hdr_func          = ulp_rte_vf_hdr_handler
-       },
-       [RTE_FLOW_ITEM_TYPE_PHY_PORT] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
-       .proto_hdr_func          = ulp_rte_phy_port_hdr_handler
-       },
-       [RTE_FLOW_ITEM_TYPE_PORT_ID] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
-       .proto_hdr_func          = ulp_rte_port_id_hdr_handler
-       },
-       [RTE_FLOW_ITEM_TYPE_RAW] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
-       .proto_hdr_func          = NULL
-       },
-       [RTE_FLOW_ITEM_TYPE_ETH] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
-       .proto_hdr_func          = ulp_rte_eth_hdr_handler
-       },
-       [RTE_FLOW_ITEM_TYPE_VLAN] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
-       .proto_hdr_func          = ulp_rte_vlan_hdr_handler
-       },
-       [RTE_FLOW_ITEM_TYPE_IPV4] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
-       .proto_hdr_func          = ulp_rte_ipv4_hdr_handler
-       },
-       [RTE_FLOW_ITEM_TYPE_IPV6] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
-       .proto_hdr_func          = ulp_rte_ipv6_hdr_handler
-       },
-       [RTE_FLOW_ITEM_TYPE_ICMP] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
-       .proto_hdr_func          = NULL
-       },
-       [RTE_FLOW_ITEM_TYPE_UDP] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
-       .proto_hdr_func          = ulp_rte_udp_hdr_handler
-       },
-       [RTE_FLOW_ITEM_TYPE_TCP] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
-       .proto_hdr_func          = ulp_rte_tcp_hdr_handler
-       },
-       [RTE_FLOW_ITEM_TYPE_SCTP] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
-       .proto_hdr_func          = NULL
-       },
-       [RTE_FLOW_ITEM_TYPE_VXLAN] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
-       .proto_hdr_func          = ulp_rte_vxlan_hdr_handler
-       },
-       [RTE_FLOW_ITEM_TYPE_E_TAG] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
-       .proto_hdr_func          = NULL
-       },
-       [RTE_FLOW_ITEM_TYPE_NVGRE] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
-       .proto_hdr_func          = NULL
-       },
-       [RTE_FLOW_ITEM_TYPE_MPLS] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
-       .proto_hdr_func          = NULL
-       },
-       [RTE_FLOW_ITEM_TYPE_GRE] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
-       .proto_hdr_func          = NULL
-       },
-       [RTE_FLOW_ITEM_TYPE_FUZZY] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
-       .proto_hdr_func          = NULL
-       },
-       [RTE_FLOW_ITEM_TYPE_GTP] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
-       .proto_hdr_func          = NULL
-       },
-       [RTE_FLOW_ITEM_TYPE_GTPC] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
-       .proto_hdr_func          = NULL
-       },
-       [RTE_FLOW_ITEM_TYPE_GTPU] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
-       .proto_hdr_func          = NULL
-       },
-       [RTE_FLOW_ITEM_TYPE_ESP] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
-       .proto_hdr_func          = NULL
-       },
-       [RTE_FLOW_ITEM_TYPE_GENEVE] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
-       .proto_hdr_func          = NULL
-       },
-       [RTE_FLOW_ITEM_TYPE_VXLAN_GPE] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
-       .proto_hdr_func          = NULL
-       },
-       [RTE_FLOW_ITEM_TYPE_ARP_ETH_IPV4] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
-       .proto_hdr_func          = NULL
-       },
-       [RTE_FLOW_ITEM_TYPE_IPV6_EXT] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
-       .proto_hdr_func          = NULL
-       },
-       [RTE_FLOW_ITEM_TYPE_ICMP6] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
-       .proto_hdr_func          = NULL
-       },
-       [RTE_FLOW_ITEM_TYPE_ICMP6_ND_NS] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
-       .proto_hdr_func          = NULL
-       },
-       [RTE_FLOW_ITEM_TYPE_ICMP6_ND_NA] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
-       .proto_hdr_func          = NULL
-       },
-       [RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
-       .proto_hdr_func          = NULL
-       },
-       [RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT_SLA_ETH] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
-       .proto_hdr_func          = NULL
-       },
-       [RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT_TLA_ETH] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
-       .proto_hdr_func          = NULL
-       },
-       [RTE_FLOW_ITEM_TYPE_MARK] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
-       .proto_hdr_func          = NULL
-       },
-       [RTE_FLOW_ITEM_TYPE_META] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
-       .proto_hdr_func          = NULL
-       },
-       [RTE_FLOW_ITEM_TYPE_GRE_KEY] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
-       .proto_hdr_func          = NULL
-       },
-       [RTE_FLOW_ITEM_TYPE_GTP_PSC] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
-       .proto_hdr_func          = NULL
-       },
-       [RTE_FLOW_ITEM_TYPE_PPPOES] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
-       .proto_hdr_func          = NULL
-       },
-       [RTE_FLOW_ITEM_TYPE_PPPOED] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
-       .proto_hdr_func          = NULL
-       },
-       [RTE_FLOW_ITEM_TYPE_PPPOE_PROTO_ID] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
-       .proto_hdr_func          = NULL
-       },
-       [RTE_FLOW_ITEM_TYPE_NSH] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
-       .proto_hdr_func          = NULL
-       },
-       [RTE_FLOW_ITEM_TYPE_IGMP] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
-       .proto_hdr_func          = NULL
-       },
-       [RTE_FLOW_ITEM_TYPE_AH] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
-       .proto_hdr_func          = NULL
-       },
-       [RTE_FLOW_ITEM_TYPE_HIGIG2] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
-       .proto_hdr_func          = NULL
+/* Lists global action records */
+uint32_t ulp_glb_template_tbl[] = {
+       BNXT_ULP_DF_TPL_LOOPBACK_ACTION_REC
+};
+
+/* Provides act_bitmask */
+struct bnxt_ulp_shared_act_info ulp_shared_act_info[] = {
+       [BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_MIRROR_TBL << 1 |
+               BNXT_ULP_DIRECTION_INGRESS] = {
+       .act_bitmask             = BNXT_ULP_ACTION_BIT_SHARED_SAMPLE
+       },
+       [BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_MIRROR_TBL << 1 |
+               BNXT_ULP_DIRECTION_EGRESS] = {
+       .act_bitmask             = BNXT_ULP_ACTION_BIT_SHARED_SAMPLE
        }
 };
 
-/*
- * The parser uses this table to map vtags_num to CFA encapsulation VTAG
- * encoding. It then takes the result and stores it in act_prop[encap_vtag_type]
- */
-uint32_t bnxt_ulp_encap_vtag_map[] = {
-       BNXT_ULP_SYM_ECV_VTAG_TYPE_NOP,
-       BNXT_ULP_SYM_ECV_VTAG_TYPE_ADD_1_ENCAP_PRI,
-       BNXT_ULP_SYM_ECV_VTAG_TYPE_ADD_2_ENCAP_PRI
+uint32_t ulp_act_prop_map_table[] = {
+       [BNXT_ULP_ACT_PROP_IDX_ENCAP_TUN_SZ] =
+               BNXT_ULP_ACT_PROP_SZ_ENCAP_TUN_SZ,
+       [BNXT_ULP_ACT_PROP_IDX_ENCAP_IP_SZ] =
+               BNXT_ULP_ACT_PROP_SZ_ENCAP_IP_SZ,
+       [BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_SZ] =
+               BNXT_ULP_ACT_PROP_SZ_ENCAP_VTAG_SZ,
+       [BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_TYPE] =
+               BNXT_ULP_ACT_PROP_SZ_ENCAP_VTAG_TYPE,
+       [BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_NUM] =
+               BNXT_ULP_ACT_PROP_SZ_ENCAP_VTAG_NUM,
+       [BNXT_ULP_ACT_PROP_IDX_ENCAP_L3_TYPE] =
+               BNXT_ULP_ACT_PROP_SZ_ENCAP_L3_TYPE,
+       [BNXT_ULP_ACT_PROP_IDX_MPLS_POP_NUM] =
+               BNXT_ULP_ACT_PROP_SZ_MPLS_POP_NUM,
+       [BNXT_ULP_ACT_PROP_IDX_MPLS_PUSH_NUM] =
+               BNXT_ULP_ACT_PROP_SZ_MPLS_PUSH_NUM,
+       [BNXT_ULP_ACT_PROP_IDX_PORT_ID] =
+               BNXT_ULP_ACT_PROP_SZ_PORT_ID,
+       [BNXT_ULP_ACT_PROP_IDX_VNIC] =
+               BNXT_ULP_ACT_PROP_SZ_VNIC,
+       [BNXT_ULP_ACT_PROP_IDX_VPORT] =
+               BNXT_ULP_ACT_PROP_SZ_VPORT,
+       [BNXT_ULP_ACT_PROP_IDX_MARK] =
+               BNXT_ULP_ACT_PROP_SZ_MARK,
+       [BNXT_ULP_ACT_PROP_IDX_COUNT] =
+               BNXT_ULP_ACT_PROP_SZ_COUNT,
+       [BNXT_ULP_ACT_PROP_IDX_METER] =
+               BNXT_ULP_ACT_PROP_SZ_METER,
+       [BNXT_ULP_ACT_PROP_IDX_SET_MAC_SRC] =
+               BNXT_ULP_ACT_PROP_SZ_SET_MAC_SRC,
+       [BNXT_ULP_ACT_PROP_IDX_SET_MAC_DST] =
+               BNXT_ULP_ACT_PROP_SZ_SET_MAC_DST,
+       [BNXT_ULP_ACT_PROP_IDX_PUSH_VLAN] =
+               BNXT_ULP_ACT_PROP_SZ_PUSH_VLAN,
+       [BNXT_ULP_ACT_PROP_IDX_SET_VLAN_PCP] =
+               BNXT_ULP_ACT_PROP_SZ_SET_VLAN_PCP,
+       [BNXT_ULP_ACT_PROP_IDX_SET_VLAN_VID] =
+               BNXT_ULP_ACT_PROP_SZ_SET_VLAN_VID,
+       [BNXT_ULP_ACT_PROP_IDX_SET_IPV4_SRC] =
+               BNXT_ULP_ACT_PROP_SZ_SET_IPV4_SRC,
+       [BNXT_ULP_ACT_PROP_IDX_SET_IPV4_DST] =
+               BNXT_ULP_ACT_PROP_SZ_SET_IPV4_DST,
+       [BNXT_ULP_ACT_PROP_IDX_SET_IPV6_SRC] =
+               BNXT_ULP_ACT_PROP_SZ_SET_IPV6_SRC,
+       [BNXT_ULP_ACT_PROP_IDX_SET_IPV6_DST] =
+               BNXT_ULP_ACT_PROP_SZ_SET_IPV6_DST,
+       [BNXT_ULP_ACT_PROP_IDX_SET_TP_SRC] =
+               BNXT_ULP_ACT_PROP_SZ_SET_TP_SRC,
+       [BNXT_ULP_ACT_PROP_IDX_SET_TP_DST] =
+               BNXT_ULP_ACT_PROP_SZ_SET_TP_DST,
+       [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_0] =
+               BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_0,
+       [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_1] =
+               BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_1,
+       [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_2] =
+               BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_2,
+       [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_3] =
+               BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_3,
+       [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_4] =
+               BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_4,
+       [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_5] =
+               BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_5,
+       [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_6] =
+               BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_6,
+       [BNXT_ULP_ACT_PROP_IDX_OF_PUSH_MPLS_7] =
+               BNXT_ULP_ACT_PROP_SZ_OF_PUSH_MPLS_7,
+       [BNXT_ULP_ACT_PROP_IDX_ENCAP_L2_DMAC] =
+               BNXT_ULP_ACT_PROP_SZ_ENCAP_L2_DMAC,
+       [BNXT_ULP_ACT_PROP_IDX_ENCAP_L2_SMAC] =
+               BNXT_ULP_ACT_PROP_SZ_ENCAP_L2_SMAC,
+       [BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG] =
+               BNXT_ULP_ACT_PROP_SZ_ENCAP_VTAG,
+       [BNXT_ULP_ACT_PROP_IDX_ENCAP_IP] =
+               BNXT_ULP_ACT_PROP_SZ_ENCAP_IP,
+       [BNXT_ULP_ACT_PROP_IDX_ENCAP_IP_SRC] =
+               BNXT_ULP_ACT_PROP_SZ_ENCAP_IP_SRC,
+       [BNXT_ULP_ACT_PROP_IDX_ENCAP_UDP] =
+               BNXT_ULP_ACT_PROP_SZ_ENCAP_UDP,
+       [BNXT_ULP_ACT_PROP_IDX_ENCAP_TUN] =
+               BNXT_ULP_ACT_PROP_SZ_ENCAP_TUN,
+       [BNXT_ULP_ACT_PROP_IDX_JUMP] =
+               BNXT_ULP_ACT_PROP_SZ_JUMP,
+       [BNXT_ULP_ACT_PROP_IDX_SHARED_HANDLE] =
+               BNXT_ULP_ACT_PROP_SZ_SHARED_HANDLE,
+       [BNXT_ULP_ACT_PROP_IDX_LAST] =
+               BNXT_ULP_ACT_PROP_SZ_LAST
 };
 
-/* Lists global action records */
-uint32_t ulp_glb_template_tbl[] = {
-       BNXT_ULP_DF_TPL_LOOPBACK_ACTION_REC
+uint8_t ulp_glb_field_tbl[] = {
+       [2048] = 0,
+       [2049] = 1,
+       [2050] = 2,
+       [2052] = 3,
+       [2054] = 4,
+       [2056] = 5,
+       [2058] = 6,
+       [2060] = 7,
+       [2062] = 8,
+       [2064] = 9,
+       [2066] = 10,
+       [2068] = 11,
+       [2070] = 12,
+       [2072] = 13,
+       [2074] = 14,
+       [2102] = 15,
+       [2104] = 16,
+       [2106] = 17,
+       [2108] = 18,
+       [2110] = 19,
+       [2112] = 20,
+       [2114] = 21,
+       [2116] = 22,
+       [2118] = 23,
+       [2176] = 0,
+       [2177] = 1,
+       [2178] = 2,
+       [2180] = 3,
+       [2182] = 4,
+       [2184] = 8,
+       [2186] = 9,
+       [2188] = 10,
+       [2190] = 11,
+       [2192] = 12,
+       [2194] = 13,
+       [2196] = 14,
+       [2198] = 15,
+       [2200] = 16,
+       [2202] = 17,
+       [2230] = 18,
+       [2232] = 19,
+       [2234] = 20,
+       [2236] = 21,
+       [2238] = 22,
+       [2240] = 23,
+       [2242] = 24,
+       [2244] = 25,
+       [2246] = 26,
+       [2256] = 5,
+       [2260] = 6,
+       [2264] = 7,
+       [4352] = 0,
+       [4353] = 1,
+       [4354] = 2,
+       [4356] = 3,
+       [4358] = 4,
+       [4360] = 8,
+       [4362] = 9,
+       [4364] = 10,
+       [4366] = 11,
+       [4368] = 12,
+       [4370] = 13,
+       [4372] = 14,
+       [4374] = 15,
+       [4376] = 16,
+       [4378] = 17,
+       [4406] = 18,
+       [4408] = 19,
+       [4410] = 20,
+       [4412] = 21,
+       [4414] = 22,
+       [4416] = 23,
+       [4418] = 24,
+       [4420] = 25,
+       [4422] = 26,
+       [4432] = 5,
+       [4436] = 6,
+       [4440] = 7
 };