X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fiavf%2Fiavf.h;h=34bfa9af47343ba5914a706f88f9e70853e221c8;hb=dd4e429c95f90dfa049ad53cbd9e1142253f278c;hp=feb8337b552f34a06c6a8051de0c210571a9f419;hpb=44d0a720a53863a1c9323fcded3223e4ee11ee6a;p=dpdk.git diff --git a/drivers/net/iavf/iavf.h b/drivers/net/iavf/iavf.h index feb8337b55..34bfa9af47 100644 --- a/drivers/net/iavf/iavf.h +++ b/drivers/net/iavf/iavf.h @@ -5,6 +5,8 @@ #ifndef _IAVF_ETHDEV_H_ #define _IAVF_ETHDEV_H_ +#include + #include #include @@ -69,6 +71,8 @@ #define IAVF_QUEUE_ITR_INTERVAL_DEFAULT 32 /* 32 us */ #define IAVF_QUEUE_ITR_INTERVAL_MAX 8160 /* 8160 us */ +#define IAVF_ALARM_INTERVAL 50000 /* us */ + /* The overhead from MTU to max frame size. * Considering QinQ packet, the VLAN tag needs to be counted twice. */ @@ -86,6 +90,8 @@ #define IAVF_BITS_PER_BYTE 8 +#define IAVF_VLAN_TAG_PCP_OFFSET 13 + struct iavf_adapter; struct iavf_rx_queue; struct iavf_tx_queue; @@ -165,6 +171,13 @@ struct iavf_tm_conf { bool committed; }; +/* Struct to store queue TC mapping. Queue is continuous in one TC */ +struct iavf_qtc_map { + uint8_t tc; + uint16_t start_queue_id; + uint16_t queue_count; +}; + /* Structure to store private data specific for VF instance. */ struct iavf_info { uint16_t num_queue_pairs; @@ -213,7 +226,10 @@ struct iavf_info { bool lv_enabled; struct virtchnl_qos_cap_list *qos_cap; + struct iavf_qtc_map *qtc_map; struct iavf_tm_conf tm_conf; + + struct rte_eth_dev *eth_dev; }; #define IAVF_MAX_PKT_TYPE 1024 @@ -242,7 +258,7 @@ struct iavf_devargs { /* Structure to store private data for each VF instance. */ struct iavf_adapter { struct iavf_hw hw; - struct rte_eth_dev *eth_dev; + struct rte_eth_dev_data *dev_data; struct iavf_info vf; bool rx_bulk_alloc_allowed; @@ -268,8 +284,6 @@ struct iavf_adapter { (&(((struct iavf_vsi *)vsi)->adapter->hw)) #define IAVF_VSI_TO_VF(vsi) \ (&(((struct iavf_vsi *)vsi)->adapter->vf)) -#define IAVF_VSI_TO_ETH_DEV(vsi) \ - (((struct iavf_vsi *)vsi)->adapter->eth_dev) static inline void iavf_init_adminq_parameter(struct iavf_hw *hw) @@ -325,7 +339,8 @@ _clear_cmd(struct iavf_info *vf) static inline int _atomic_set_cmd(struct iavf_info *vf, enum virtchnl_ops ops) { - int ret = rte_atomic32_cmpset(&vf->pend_cmd, VIRTCHNL_OP_UNKNOWN, ops); + int ret = rte_atomic32_cmpset((volatile uint32_t *)&vf->pend_cmd, + VIRTCHNL_OP_UNKNOWN, ops); if (!ret) PMD_DRV_LOG(ERR, "There is incomplete cmd %d", vf->pend_cmd); @@ -362,6 +377,7 @@ int iavf_config_irq_map_lv(struct iavf_adapter *adapter, uint16_t num, void iavf_add_del_all_mac_addr(struct iavf_adapter *adapter, bool add); int iavf_dev_link_update(struct rte_eth_dev *dev, __rte_unused int wait_to_complete); +void iavf_dev_alarm_handler(void *param); int iavf_query_stats(struct iavf_adapter *adapter, struct virtchnl_eth_stats **pstats); int iavf_config_promisc(struct iavf_adapter *adapter, bool enable_unicast, @@ -381,7 +397,7 @@ int iavf_rss_hash_set(struct iavf_adapter *ad, uint64_t rss_hf, bool add); int iavf_add_del_mc_addr_list(struct iavf_adapter *adapter, struct rte_ether_addr *mc_addrs, uint32_t mc_addrs_num, bool add); -int iavf_request_queues(struct iavf_adapter *adapter, uint16_t num); +int iavf_request_queues(struct rte_eth_dev *dev, uint16_t num); int iavf_get_max_rss_queue_region(struct iavf_adapter *adapter); int iavf_get_qos_cap(struct iavf_adapter *adapter); int iavf_set_q_tc_map(struct rte_eth_dev *dev,