X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fhns3%2Fhns3_ethdev.h;h=e9a3fe41073581694b0ba230be4c96375552073d;hb=0ab9d1cfd01bd2980a053d80c2c4ccd3dc6515ac;hp=c433bed9d9b17f6d1c78334a87efa11c21b8f8f2;hpb=737f30e1c3ab24c46b7a56b59f360517f85f0196;p=dpdk.git diff --git a/drivers/net/hns3/hns3_ethdev.h b/drivers/net/hns3/hns3_ethdev.h index c433bed9d9..e9a3fe4107 100644 --- a/drivers/net/hns3/hns3_ethdev.h +++ b/drivers/net/hns3/hns3_ethdev.h @@ -9,6 +9,10 @@ #include #include "hns3_cmd.h" +#include "hns3_mbx.h" +#include "hns3_rss.h" +#include "hns3_fdir.h" +#include "hns3_stats.h" /* Vendor ID */ #define PCI_VENDOR_ID_HUAWEI 0x19e5 @@ -39,6 +43,7 @@ #define HNS3_MAX_MTU (HNS3_MAX_FRAME_LEN - HNS3_ETH_OVERHEAD) #define HNS3_DEFAULT_MTU 1500UL #define HNS3_DEFAULT_FRAME_LEN (HNS3_DEFAULT_MTU + HNS3_ETH_OVERHEAD) +#define HNS3_MIN_PKT_SIZE 60 #define HNS3_4_TCS 4 #define HNS3_8_TCS 8 @@ -269,8 +274,6 @@ struct hns3_reset_stats { uint64_t merge_cnt; /* Total merged in high reset times */ }; -struct hns3_adapter; - typedef bool (*check_completion_func)(struct hns3_hw *hw); struct hns3_wait_data { @@ -332,8 +335,14 @@ struct hns3_hw { struct rte_eth_dev_data *data; void *io_base; struct hns3_cmq cmq; + struct hns3_mbx_resp_status mbx_resp; /* mailbox response */ + struct hns3_mbx_arq_ring arq; /* mailbox async rx queue */ + pthread_t irq_thread_id; struct hns3_mac mac; unsigned int secondary_cnt; /* Number of secondary processes init'd. */ + struct hns3_tqp_stats tqp_stats; + /* Include Mac stats | Rx stats | Tx stats */ + struct hns3_mac_stats mac_stats; uint32_t fw_version; uint16_t num_msi; @@ -347,6 +356,9 @@ struct hns3_hw { struct rte_ether_addr mc_addrs[HNS3_MC_MACADDR_NUM]; int mc_addrs_num; /* Multicast mac addresses number */ + /* The configuration info of RSS */ + struct hns3_rss_conf rss_info; + uint8_t num_tc; /* Total number of enabled TCs */ uint8_t hw_tc_map; enum hns3_fc_mode current_mode; @@ -468,6 +480,9 @@ struct hns3_pf { struct hns3_vtag_cfg vtag_config; struct hns3_port_base_vlan_config port_base_vlan_cfg; LIST_HEAD(vlan_tbl, hns3_user_vlan_table) vlan_list; + + struct hns3_fdir_info fdir; /* flow director info */ + LIST_HEAD(counters, hns3_flow_counter) flow_counters; }; struct hns3_vf { @@ -609,4 +624,23 @@ hns3_test_and_clear_bit(unsigned int nr, volatile uint64_t *addr) return __atomic_fetch_and(addr, ~mask, __ATOMIC_RELAXED) & mask; } +int hns3_buffer_alloc(struct hns3_hw *hw); +int hns3_config_gro(struct hns3_hw *hw, bool en); +int hns3_dev_filter_ctrl(struct rte_eth_dev *dev, + enum rte_filter_type filter_type, + enum rte_filter_op filter_op, void *arg); +bool hns3_is_reset_pending(struct hns3_adapter *hns); +bool hns3vf_is_reset_pending(struct hns3_adapter *hns); + +static inline bool +is_reset_pending(struct hns3_adapter *hns) +{ + bool ret; + if (hns->is_vf) + ret = hns3vf_is_reset_pending(hns); + else + ret = hns3_is_reset_pending(hns); + return ret; +} + #endif /* _HNS3_ETHDEV_H_ */