net/bnxt: enable wildcard match for ingress flows
[dpdk.git] / drivers / net / bnxt / tf_ulp / bnxt_ulp.h
index ea38dc0..68f1470 100644 (file)
@@ -13,6 +13,7 @@
 #include "rte_version.h"
 #include "rte_ethdev.h"
 
+#include "bnxt.h"
 #include "ulp_template_db_enum.h"
 #include "ulp_tun.h"
 #include "bnxt_tf_common.h"
 #define BNXT_ULP_SHARED_SESSION_ENABLED        0x2
 #define BNXT_ULP_APP_DEV_UNSUPPORTED   0x4
 #define BNXT_ULP_HIGH_AVAIL_ENABLED    0x8
+#define BNXT_ULP_APP_UNICAST_ONLY      0x10
+#define BNXT_ULP_APP_SOCKET_DIRECT     0x20
+
 #define ULP_VF_REP_IS_ENABLED(flag)    ((flag) & BNXT_ULP_VF_REP_ENABLED)
 #define ULP_SHARED_SESSION_IS_ENABLED(flag) ((flag) &\
                                             BNXT_ULP_SHARED_SESSION_ENABLED)
 #define ULP_APP_DEV_UNSUPPORTED_ENABLED(flag)  ((flag) &\
                                                 BNXT_ULP_APP_DEV_UNSUPPORTED)
 #define ULP_HIGH_AVAIL_IS_ENABLED(flag)        ((flag) & BNXT_ULP_HIGH_AVAIL_ENABLED)
+#define ULP_SOCKET_DIRECT_IS_ENABLED(flag) ((flag) & BNXT_ULP_APP_SOCKET_DIRECT)
 
 enum bnxt_ulp_flow_mem_type {
        BNXT_ULP_FLOW_MEM_TYPE_INT = 0,
@@ -46,6 +51,18 @@ enum bnxt_ulp_flow_mem_type {
        BNXT_ULP_FLOW_MEM_TYPE_LAST = 3
 };
 
+enum bnxt_rte_flow_item_type {
+       BNXT_RTE_FLOW_ITEM_TYPE_END = (uint32_t)INT_MIN,
+       BNXT_RTE_FLOW_ITEM_TYPE_VXLAN_DECAP,
+       BNXT_RTE_FLOW_ITEM_TYPE_LAST
+};
+
+enum bnxt_rte_flow_action_type {
+       BNXT_RTE_FLOW_ACTION_TYPE_END = (uint32_t)INT_MIN,
+       BNXT_RTE_FLOW_ACTION_TYPE_VXLAN_DECAP,
+       BNXT_RTE_FLOW_ACTION_TYPE_LAST
+};
+
 struct bnxt_ulp_df_rule_info {
        uint32_t                        def_port_flow_id;
        uint8_t                         valid;
@@ -77,6 +94,8 @@ struct bnxt_ulp_data {
        struct bnxt_tun_cache_entry     tun_tbl[BNXT_ULP_MAX_TUN_CACHE_ENTRIES];
        bool                            accum_stats;
        uint8_t                         app_id;
+       uint8_t                         num_shared_clients;
+       struct bnxt_flow_app_tun_ent    app_tun[BNXT_ULP_MAX_TUN_CACHE_ENTRIES];
 };
 
 struct bnxt_ulp_context {
@@ -256,9 +275,6 @@ bnxt_ulp_cntxt_acquire_fdb_lock(struct bnxt_ulp_context     *ulp_ctx);
 void
 bnxt_ulp_cntxt_release_fdb_lock(struct bnxt_ulp_context        *ulp_ctx);
 
-int32_t
-ulp_post_process_tun_flow(struct ulp_rte_parser_params *params);
-
 struct bnxt_ulp_glb_resource_info *
 bnxt_ulp_app_glb_resource_info_list_get(uint32_t *num_entries);
 
@@ -275,7 +291,7 @@ struct bnxt_ulp_app_capabilities_info *
 bnxt_ulp_app_cap_list_get(uint32_t *num_entries);
 
 int32_t
-bnxt_ulp_cntxt_app_caps_init(struct bnxt_ulp_context *ulp_ctx,
+bnxt_ulp_cntxt_app_caps_init(struct bnxt *bp,
                             uint8_t app_id, uint32_t dev_id);
 
 struct bnxt_ulp_resource_resv_info *
@@ -297,4 +313,10 @@ bnxt_ulp_cntxt_entry_acquire(void);
 void
 bnxt_ulp_cntxt_entry_release(void);
 
+uint8_t
+bnxt_ulp_cntxt_num_shared_clients_get(struct bnxt_ulp_context *ulp_ctx);
+
+struct bnxt_flow_app_tun_ent *
+bnxt_ulp_cntxt_ptr2_app_tun_list_get(struct bnxt_ulp_context *ulp);
+
 #endif /* _BNXT_ULP_H_ */