Imported Upstream version 17.05
[deb_dpdk.git] / drivers / net / virtio / virtio_pci.h
index 511a1c8..18caebd 100644 (file)
@@ -106,6 +106,7 @@ struct virtnet_ctl;
 /* The feature bitmap for virtio net */
 #define VIRTIO_NET_F_CSUM      0       /* Host handles pkts w/ partial csum */
 #define VIRTIO_NET_F_GUEST_CSUM        1       /* Guest handles pkts w/ partial csum */
+#define VIRTIO_NET_F_MTU       3       /* Initial MTU advice. */
 #define VIRTIO_NET_F_MAC       5       /* Host has given MAC address. */
 #define VIRTIO_NET_F_GUEST_TSO4        7       /* Guest can handle TSOv4 in. */
 #define VIRTIO_NET_F_GUEST_TSO6        8       /* Guest can handle TSOv6 in. */
@@ -160,7 +161,8 @@ struct virtnet_ctl;
 /*
  * Maximum number of virtqueues per device.
  */
-#define VIRTIO_MAX_VIRTQUEUES 8
+#define VIRTIO_MAX_VIRTQUEUE_PAIRS 8
+#define VIRTIO_MAX_VIRTQUEUES (VIRTIO_MAX_VIRTQUEUE_PAIRS * 2 + 1)
 
 /* Common configuration */
 #define VIRTIO_PCI_CAP_COMMON_CFG      1
@@ -235,6 +237,9 @@ struct virtio_pci_ops {
 
        uint16_t (*set_config_irq)(struct virtio_hw *hw, uint16_t vec);
 
+       uint16_t (*set_queue_irq)(struct virtio_hw *hw, struct virtqueue *vq,
+                       uint16_t vec);
+
        uint16_t (*get_queue_num)(struct virtio_hw *hw, uint16_t queue_id);
        int (*setup_queue)(struct virtio_hw *hw, struct virtqueue *vq);
        void (*del_queue)(struct virtio_hw *hw, struct virtqueue *vq);
@@ -248,6 +253,8 @@ struct virtio_hw {
        uint64_t    req_guest_features;
        uint64_t    guest_features;
        uint32_t    max_queue_pairs;
+       uint16_t    started;
+       uint16_t        max_mtu;
        uint16_t    vtnet_hdr_size;
        uint8_t     vlan_strip;
        uint8_t     use_msix;
@@ -258,7 +265,6 @@ struct virtio_hw {
        uint32_t    notify_off_multiplier;
        uint8_t     *isr;
        uint16_t    *notify_base;
-       struct rte_pci_device *dev;
        struct virtio_pci_common_cfg *common_cfg;
        struct virtio_net_config *dev_cfg;
        void        *virtio_user_dev;
@@ -294,6 +300,7 @@ struct virtio_net_config {
        /* See VIRTIO_NET_F_STATUS and VIRTIO_NET_S_* above */
        uint16_t   status;
        uint16_t   max_virtqueue_pairs;
+       uint16_t   mtu;
 } __attribute__((packed));
 
 /*
@@ -314,8 +321,7 @@ vtpci_with_feature(struct virtio_hw *hw, uint64_t bit)
 /*
  * Function declaration from virtio_pci.c
  */
-int vtpci_init(struct rte_pci_device *, struct virtio_hw *,
-              uint32_t *dev_flags);
+int vtpci_init(struct rte_pci_device *dev, struct virtio_hw *hw);
 void vtpci_reset(struct virtio_hw *);
 
 void vtpci_reinit_complete(struct virtio_hw *);
@@ -331,8 +337,6 @@ void vtpci_read_dev_config(struct virtio_hw *, size_t, void *, int);
 
 uint8_t vtpci_isr(struct virtio_hw *);
 
-uint16_t vtpci_irq_config(struct virtio_hw *, uint16_t);
-
 extern const struct virtio_pci_ops legacy_ops;
 extern const struct virtio_pci_ops modern_ops;
 extern const struct virtio_pci_ops virtio_user_ops;