net/virtio: remove started field
[dpdk.git] / drivers / net / virtio / virtio_pci.h
index b69785e..de271bf 100644 (file)
 #include <rte_ethdev.h>
 
 struct virtqueue;
+struct virtnet_ctl;
 
 /* VirtIO PCI vendor/device ID. */
 #define VIRTIO_PCI_VENDORID     0x1AF4
-#define VIRTIO_PCI_DEVICEID_MIN 0x1000
-#define VIRTIO_PCI_DEVICEID_MAX 0x103F
+#define VIRTIO_PCI_LEGACY_DEVICEID_NET 0x1000
+#define VIRTIO_PCI_MODERN_DEVICEID_NET 0x1041
 
 /* VirtIO ABI version, this must match exactly. */
 #define VIRTIO_PCI_ABI_VERSION 0
@@ -137,6 +138,7 @@ struct virtqueue;
 #define VIRTIO_RING_F_INDIRECT_DESC    28
 
 #define VIRTIO_F_VERSION_1             32
+#define VIRTIO_F_IOMMU_PLATFORM        33
 
 /*
  * Some VirtIO feature bits (currently bits 28 through 31) are
@@ -144,7 +146,7 @@ struct virtqueue;
  * rest are per-device feature bits.
  */
 #define VIRTIO_TRANSPORT_F_START 28
-#define VIRTIO_TRANSPORT_F_END   32
+#define VIRTIO_TRANSPORT_F_END   34
 
 /* The Guest publishes the used index for which it expects an interrupt
  * at the end of the avail ring. Host should ignore the avail->flags field. */
@@ -234,7 +236,7 @@ struct virtio_pci_ops {
        uint16_t (*set_config_irq)(struct virtio_hw *hw, uint16_t vec);
 
        uint16_t (*get_queue_num)(struct virtio_hw *hw, uint16_t queue_id);
-       void (*setup_queue)(struct virtio_hw *hw, struct virtqueue *vq);
+       int (*setup_queue)(struct virtio_hw *hw, struct virtqueue *vq);
        void (*del_queue)(struct virtio_hw *hw, struct virtqueue *vq);
        void (*notify_queue)(struct virtio_hw *hw, struct virtqueue *vq);
 };
@@ -242,16 +244,16 @@ struct virtio_pci_ops {
 struct virtio_net_config;
 
 struct virtio_hw {
-       struct virtqueue *cvq;
+       struct virtnet_ctl *cvq;
        struct rte_pci_ioport io;
+       uint64_t    req_guest_features;
        uint64_t    guest_features;
-       uint32_t    max_tx_queues;
-       uint32_t    max_rx_queues;
+       uint32_t    max_queue_pairs;
        uint16_t    vtnet_hdr_size;
        uint8_t     vlan_strip;
        uint8_t     use_msix;
-       uint8_t     started;
        uint8_t     modern;
+       uint8_t     use_simple_rxtx;
        uint8_t     mac_addr[ETHER_ADDR_LEN];
        uint32_t    notify_off_multiplier;
        uint8_t     *isr;
@@ -260,6 +262,9 @@ struct virtio_hw {
        struct virtio_pci_common_cfg *common_cfg;
        struct virtio_net_config *dev_cfg;
        const struct virtio_pci_ops *vtpci_ops;
+       void        *virtio_user_dev;
+
+       struct virtqueue **vqs;
 };
 
 /*
@@ -293,7 +298,8 @@ 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 *);
+int vtpci_init(struct rte_pci_device *, struct virtio_hw *,
+              uint32_t *dev_flags);
 void vtpci_reset(struct virtio_hw *);
 
 void vtpci_reinit_complete(struct virtio_hw *);