net/bnxt: support NAT for dest IP and port combination
[dpdk.git] / drivers / net / bnxt / tf_ulp / ulp_rte_handler_tbl.c
index 8054bac..e9337ec 100644 (file)
@@ -67,7 +67,7 @@ struct bnxt_ulp_rte_act_info ulp_act_info[] = {
        },
        [RTE_FLOW_ACTION_TYPE_PORT_ID] = {
        .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
-       .proto_act_func          = ulp_rte_port_id_act_handler
+       .proto_act_func          = ulp_rte_port_act_handler
        },
        [RTE_FLOW_ACTION_TYPE_METER] = {
        .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
@@ -208,6 +208,33 @@ struct bnxt_ulp_rte_act_info ulp_act_info[] = {
        [RTE_FLOW_ACTION_TYPE_DEC_TCP_ACK] = {
        .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
        .proto_act_func          = NULL
+       },
+       [RTE_FLOW_ACTION_TYPE_SAMPLE] = {
+       .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
+       .proto_act_func          = ulp_rte_sample_act_handler
+       },
+       [RTE_FLOW_ACTION_TYPE_PORT_REPRESENTOR] = {
+       .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
+       .proto_act_func          = ulp_rte_port_act_handler
+       },
+       [RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT] = {
+       .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
+       .proto_act_func          = ulp_rte_port_act_handler
+       },
+};
+
+struct bnxt_ulp_rte_act_info ulp_vendor_act_info[] = {
+       [BNXT_RTE_FLOW_ACTION_TYPE_END - BNXT_RTE_FLOW_ACTION_TYPE_END] = {
+       .act_type                = BNXT_ULP_ACT_TYPE_END,
+       .proto_act_func          = NULL
+       },
+       [BNXT_RTE_FLOW_ACTION_TYPE_VXLAN_DECAP - BNXT_RTE_FLOW_ACTION_TYPE_END] = {
+       .act_type                = BNXT_ULP_ACT_TYPE_SUPPORTED,
+       .proto_act_func          = ulp_vendor_vxlan_decap_act_handler
+       },
+       [BNXT_RTE_FLOW_ACTION_TYPE_LAST - BNXT_RTE_FLOW_ACTION_TYPE_END] = {
+       .act_type                = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
+       .proto_act_func          = NULL
        }
 };
 
@@ -230,8 +257,8 @@ struct bnxt_ulp_rte_hdr_info ulp_hdr_info[] = {
        .proto_hdr_func          = NULL
        },
        [RTE_FLOW_ITEM_TYPE_ANY] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
-       .proto_hdr_func          = NULL
+       .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
+       .proto_hdr_func          = ulp_rte_item_any_handler
        },
        [RTE_FLOW_ITEM_TYPE_PF] = {
        .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
@@ -247,7 +274,7 @@ struct bnxt_ulp_rte_hdr_info ulp_hdr_info[] = {
        },
        [RTE_FLOW_ITEM_TYPE_PORT_ID] = {
        .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
-       .proto_hdr_func          = ulp_rte_port_id_hdr_handler
+       .proto_hdr_func          = ulp_rte_port_hdr_handler
        },
        [RTE_FLOW_ITEM_TYPE_RAW] = {
        .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
@@ -270,8 +297,8 @@ struct bnxt_ulp_rte_hdr_info ulp_hdr_info[] = {
        .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
+       .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
+       .proto_hdr_func          = ulp_rte_icmp_hdr_handler
        },
        [RTE_FLOW_ITEM_TYPE_UDP] = {
        .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
@@ -302,8 +329,8 @@ struct bnxt_ulp_rte_hdr_info ulp_hdr_info[] = {
        .proto_hdr_func          = NULL
        },
        [RTE_FLOW_ITEM_TYPE_GRE] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
-       .proto_hdr_func          = NULL
+       .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
+       .proto_hdr_func          = ulp_rte_gre_hdr_handler
        },
        [RTE_FLOW_ITEM_TYPE_FUZZY] = {
        .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
@@ -342,8 +369,8 @@ struct bnxt_ulp_rte_hdr_info ulp_hdr_info[] = {
        .proto_hdr_func          = NULL
        },
        [RTE_FLOW_ITEM_TYPE_ICMP6] = {
-       .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
-       .proto_hdr_func          = NULL
+       .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
+       .proto_hdr_func          = ulp_rte_icmp6_hdr_handler
        },
        [RTE_FLOW_ITEM_TYPE_ICMP6_ND_NS] = {
        .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
@@ -408,5 +435,29 @@ struct bnxt_ulp_rte_hdr_info ulp_hdr_info[] = {
        [RTE_FLOW_ITEM_TYPE_HIGIG2] = {
        .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
        .proto_hdr_func          = NULL
+       },
+       [RTE_FLOW_ITEM_TYPE_PORT_REPRESENTOR] = {
+       .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
+       .proto_hdr_func          = ulp_rte_port_hdr_handler
+       },
+       [RTE_FLOW_ITEM_TYPE_REPRESENTED_PORT] = {
+       .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
+       .proto_hdr_func          = ulp_rte_port_hdr_handler
        }
 };
+
+struct bnxt_ulp_rte_hdr_info ulp_vendor_hdr_info[] = {
+       [BNXT_RTE_FLOW_ITEM_TYPE_END - BNXT_RTE_FLOW_ITEM_TYPE_END] = {
+       .hdr_type                = BNXT_ULP_HDR_TYPE_END,
+       .proto_hdr_func          = NULL
+       },
+       [BNXT_RTE_FLOW_ITEM_TYPE_VXLAN_DECAP - BNXT_RTE_FLOW_ITEM_TYPE_END] = {
+       .hdr_type                = BNXT_ULP_HDR_TYPE_SUPPORTED,
+       .proto_hdr_func          = ulp_rte_vendor_vxlan_decap_hdr_handler
+       },
+       [BNXT_RTE_FLOW_ITEM_TYPE_LAST - BNXT_RTE_FLOW_ITEM_TYPE_END] = {
+       .hdr_type                = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
+       .proto_hdr_func          = NULL
+       },
+
+};