net/bnxt: fix L2 filter allocation
[dpdk.git] / drivers / net / bnxt / bnxt.h
index 50f93ff..74e2c9a 100644 (file)
 #define BNXT_CMPL_AGGR_DMA_TMR_DURING_INT      50
 #define BNXT_NUM_CMPL_DMA_AGGR_DURING_INT      12
 
+#define        BNXT_DEFAULT_VNIC_STATE_MASK                    \
+       HWRM_ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_EVENT_DATA1_DEF_VNIC_STATE_MASK
+#define        BNXT_DEFAULT_VNIC_STATE_SFT                     \
+       HWRM_ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_EVENT_DATA1_DEF_VNIC_STATE_SFT
+#define        BNXT_DEFAULT_VNIC_ALLOC                         \
+       HWRM_ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_EVENT_DATA1_DEF_VNIC_STATE_DEF_VNIC_ALLOC
+#define        BNXT_DEFAULT_VNIC_FREE                          \
+       HWRM_ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_EVENT_DATA1_DEF_VNIC_STATE_DEF_VNIC_FREE
+#define        BNXT_DEFAULT_VNIC_CHANGE_PF_ID_MASK             \
+       HWRM_ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_EVENT_DATA1_PF_ID_MASK
+#define        BNXT_DEFAULT_VNIC_CHANGE_PF_ID_SFT              \
+       HWRM_ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_EVENT_DATA1_PF_ID_SFT
+#define        BNXT_DEFAULT_VNIC_CHANGE_VF_ID_MASK             \
+       HWRM_ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_EVENT_DATA1_VF_ID_MASK
+#define        BNXT_DEFAULT_VNIC_CHANGE_VF_ID_SFT              \
+       HWRM_ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_EVENT_DATA1_VF_ID_SFT
+
 struct bnxt_led_info {
        uint8_t      num_leds;
        uint8_t      led_id;
@@ -498,6 +515,8 @@ struct bnxt_mark_info {
 struct bnxt_rep_info {
        struct rte_eth_dev      *vfr_eth_dev;
        pthread_mutex_t         vfr_lock;
+       pthread_mutex_t         vfr_start_lock;
+       bool                    conduit_valid;
 };
 
 /* address space location of register */
@@ -784,6 +803,7 @@ struct bnxt {
        struct bnxt_flow_stat_info *flow_stat;
        uint8_t                 flow_xstat;
        uint16_t                max_num_kflows;
+       uint16_t                tx_cfa_action;
 };
 
 #define BNXT_FC_TIMER  1 /* Timer freq in Sec Flow Counters */
@@ -795,10 +815,10 @@ struct bnxt_vf_representor {
        uint16_t                switch_domain_id;
        uint16_t                vf_id;
        uint16_t                fw_fid;
+#define        BNXT_DFLT_VNIC_ID_INVALID       0xFFFF
        uint16_t                dflt_vnic_id;
        uint16_t                svif;
-       uint32_t                vfr_tx_cfa_action;
-       uint16_t                rx_cfa_code;
+       uint16_t                vfr_tx_cfa_action;
        uint32_t                rep2vf_flow_id;
        uint32_t                vf2rep_flow_id;
        /* Private data store of associated PF/Trusted VF */
@@ -872,6 +892,8 @@ extern int bnxt_logtype_driver;
 extern const struct rte_flow_ops bnxt_ulp_rte_flow_ops;
 int32_t bnxt_ulp_init(struct bnxt *bp);
 void bnxt_ulp_deinit(struct bnxt *bp);
+int32_t bnxt_ulp_create_df_rules(struct bnxt *bp);
+void bnxt_ulp_destroy_df_rules(struct bnxt *bp, bool global);
 
 uint16_t bnxt_get_vnic_id(uint16_t port, enum bnxt_ulp_intf_type type);
 uint16_t bnxt_get_svif(uint16_t port_id, bool func_svif,
@@ -882,6 +904,7 @@ uint16_t bnxt_get_phy_port_id(uint16_t port);
 uint16_t bnxt_get_vport(uint16_t port);
 enum bnxt_ulp_intf_type
 bnxt_get_interface_type(uint16_t port);
+int bnxt_vf_rep_dev_start_op(struct rte_eth_dev *eth_dev);
 
 void bnxt_cancel_fc_thread(struct bnxt *bp);
 void bnxt_flow_cnt_alarm_cb(void *arg);