net/qede: fix link state configuration
[dpdk.git] / drivers / net / netvsc / hn_var.h
index 05bc492..d1d38b4 100644 (file)
@@ -52,6 +52,8 @@ struct hn_tx_queue {
        uint16_t        port_id;
        uint16_t        queue_id;
        uint32_t        free_thresh;
+       struct rte_mempool *txdesc_pool;
+       void            *tx_rndis;
 
        /* Applied packet transmission aggregation limits. */
        uint32_t        agg_szmax;
@@ -96,7 +98,7 @@ struct hn_rx_bufinfo {
 struct hn_data {
        struct rte_vmbus_device *vmbus;
        struct hn_rx_queue *primary;
-       rte_spinlock_t  vf_lock;
+       rte_rwlock_t    vf_lock;
        uint16_t        port_id;
        uint16_t        vf_port;
 
@@ -115,8 +117,10 @@ struct hn_data {
        uint16_t        num_queues;
        uint64_t        rss_offloads;
 
+       rte_spinlock_t  chim_lock;
        struct rte_mem_resource *chim_res;      /* UIO resource for Tx */
-       struct rte_mempool *tx_pool;            /* Tx descriptors */
+       struct rte_bitmap *chim_bmap;           /* Send buffer map */
+       void            *chim_bmem;
        uint32_t        chim_szmax;             /* Max size per buffer */
        uint32_t        chim_cnt;               /* Max packets per buffer */
 
@@ -135,8 +139,6 @@ struct hn_data {
        uint8_t         rss_key[40];
        uint16_t        rss_ind[128];
 
-       struct rte_ether_addr mac_addr;
-
        struct rte_eth_dev_owner owner;
        struct rte_intr_handle vf_intr;
 
@@ -157,8 +159,8 @@ uint16_t hn_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,
 uint16_t hn_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
                      uint16_t nb_pkts);
 
-int    hn_tx_pool_init(struct rte_eth_dev *dev);
-void   hn_tx_pool_uninit(struct rte_eth_dev *dev);
+int    hn_chim_init(struct rte_eth_dev *dev);
+void   hn_chim_uninit(struct rte_eth_dev *dev);
 int    hn_dev_link_update(struct rte_eth_dev *dev, int wait);
 int    hn_dev_tx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx,
                              uint16_t nb_desc, unsigned int socket_id,
@@ -186,15 +188,15 @@ hn_vf_attached(const struct hn_data *hv)
        return hv->vf_port != HN_INVALID_PORT;
 }
 
-/* Get VF device for existing netvsc device */
+/*
+ * Get VF device for existing netvsc device
+ * Assumes vf_lock is held.
+ */
 static inline struct rte_eth_dev *
 hn_get_vf_dev(const struct hn_data *hv)
 {
        uint16_t vf_port = hv->vf_port;
 
-       /* make sure vf_port is loaded */
-       rte_smp_rmb();
-
        if (vf_port == HN_INVALID_PORT)
                return NULL;
        else