net/virtio: add PCI operation for queue/irq binding
[dpdk.git] / drivers / net / virtio / virtio_pci.h
index 3d8f797..59e45c4 100644 (file)
@@ -235,6 +235,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);
@@ -245,7 +248,6 @@ struct virtio_net_config;
 
 struct virtio_hw {
        struct virtnet_ctl *cvq;
-       struct rte_pci_ioport io;
        uint64_t    req_guest_features;
        uint64_t    guest_features;
        uint32_t    max_queue_pairs;
@@ -259,7 +261,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;
@@ -275,9 +276,11 @@ struct virtio_hw {
  */
 struct virtio_hw_internal {
        const struct virtio_pci_ops *vtpci_ops;
+       struct rte_pci_ioport io;
 };
 
 #define VTPCI_OPS(hw)  (virtio_hw_internal[(hw)->port_id].vtpci_ops)
+#define VTPCI_IO(hw)   (&virtio_hw_internal[(hw)->port_id].io)
 
 extern struct virtio_hw_internal virtio_hw_internal[RTE_MAX_ETHPORTS];
 
@@ -330,12 +333,8 @@ 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);
-
-static inline struct rte_intr_handle *
-vtpci_intr_handle(struct virtio_hw *hw)
-{
-       return hw->dev ? &hw->dev->intr_handle : NULL;
-}
+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;
 
 #endif /* _VIRTIO_PCI_H_ */