net/bnxt: reject flow offload with invalid MAC
[dpdk.git] / drivers / net / bnxt / tf_ulp / bnxt_ulp.h
index d2ca178..8a2825a 100644 (file)
 
 #include "rte_ethdev.h"
 
+#include "ulp_template_db_enum.h"
+
+/* NAT defines to reuse existing inner L2 SMAC and DMAC */
+#define BNXT_ULP_NAT_INNER_L2_HEADER_SMAC      0x2000
+#define BNXT_ULP_NAT_INNER_L2_HEADER_DMAC      0x100
+
+/* defines for the ulp_flags */
+#define BNXT_ULP_VF_REP_ENABLED                0x1
+#define ULP_VF_REP_IS_ENABLED(flag)    ((flag) & BNXT_ULP_VF_REP_ENABLED)
+
+struct bnxt_ulp_df_rule_info {
+       uint32_t                        port_to_app_flow_id;
+       uint32_t                        app_to_port_flow_id;
+       uint8_t                         valid;
+};
+
+struct bnxt_ulp_vfr_rule_info {
+       uint32_t                        rep2vf_flow_id;
+       uint32_t                        vf2rep_flow_id;
+       uint16_t                        parent_port_id;
+       uint8_t                         valid;
+};
+
 struct bnxt_ulp_data {
        uint32_t                        tbl_scope_id;
        struct bnxt_ulp_mark_tbl        *mark_tbl;
@@ -19,11 +42,15 @@ struct bnxt_ulp_data {
        uint32_t                        ref_cnt;
        struct bnxt_ulp_flow_db         *flow_db;
        void                            *mapper_data;
+       struct bnxt_ulp_port_db         *port_db;
+       struct bnxt_ulp_fc_info         *fc_info;
+       uint32_t                        ulp_flags;
+       struct bnxt_ulp_df_rule_info    df_rule_info[RTE_MAX_ETHPORTS];
+       struct bnxt_ulp_vfr_rule_info   vfr_rule_info[RTE_MAX_ETHPORTS];
 };
 
 struct bnxt_ulp_context {
        struct bnxt_ulp_data    *cfg_data;
-       /* TBD The tfp should be removed once tf_attach is implemented. */
        struct tf               *g_tfp;
 };
 
@@ -38,7 +65,6 @@ struct bnxt_ulp_session_state {
        pthread_mutex_t                         bnxt_ulp_mutex;
        struct bnxt_ulp_pci_info                pci_info;
        struct bnxt_ulp_data                    *cfg_data;
-       /* TBD The tfp should be removed once tf_attach is implemented. */
        struct tf                               *g_tfp;
        uint32_t                                session_opened;
 };
@@ -48,6 +74,12 @@ struct rte_tf_flow {
        uint32_t        flow_id;
 };
 
+struct ulp_tlv_param {
+       enum bnxt_ulp_df_param_type type;
+       uint32_t length;
+       uint8_t value[16];
+};
+
 /*
  * Allow the deletion of context only for the bnxt device that
  * created the session
@@ -117,4 +149,48 @@ bnxt_ulp_cntxt_ptr2_mapper_data_set(struct bnxt_ulp_context *ulp_ctx,
 void *
 bnxt_ulp_cntxt_ptr2_mapper_data_get(struct bnxt_ulp_context *ulp_ctx);
 
+/* Function to set the port database to the ulp context. */
+int32_t
+bnxt_ulp_cntxt_ptr2_port_db_set(struct bnxt_ulp_context        *ulp_ctx,
+                               struct bnxt_ulp_port_db *port_db);
+
+/* Function to get the port database from the ulp context. */
+struct bnxt_ulp_port_db *
+bnxt_ulp_cntxt_ptr2_port_db_get(struct bnxt_ulp_context        *ulp_ctx);
+
+/* Function to create default flows. */
+int32_t
+ulp_default_flow_create(struct rte_eth_dev *eth_dev,
+                       struct ulp_tlv_param *param_list,
+                       uint32_t ulp_class_tid,
+                       uint32_t *flow_id);
+
+/* Function to destroy default flows. */
+int32_t
+ulp_default_flow_destroy(struct rte_eth_dev *eth_dev,
+                        uint32_t flow_id);
+
+int
+bnxt_ulp_flow_destroy(struct rte_eth_dev *dev, struct rte_flow *flow,
+                     struct rte_flow_error *error);
+
+int32_t
+bnxt_ulp_cntxt_ptr2_fc_info_set(struct bnxt_ulp_context *ulp_ctx,
+                               struct bnxt_ulp_fc_info *ulp_fc_info);
+
+struct bnxt_ulp_fc_info *
+bnxt_ulp_cntxt_ptr2_fc_info_get(struct bnxt_ulp_context *ulp_ctx);
+
+int32_t
+bnxt_ulp_cntxt_ptr2_ulp_flags_get(struct bnxt_ulp_context *ulp_ctx,
+                                 uint32_t *flags);
+
+int32_t
+bnxt_ulp_get_df_rule_info(uint8_t port_id, struct bnxt_ulp_context *ulp_ctx,
+                         struct bnxt_ulp_df_rule_info *info);
+
+struct bnxt_ulp_vfr_rule_info*
+bnxt_ulp_cntxt_ptr2_ulp_vfr_info_get(struct bnxt_ulp_context *ulp_ctx,
+                                    uint32_t port_id);
+
 #endif /* _BNXT_ULP_H_ */