X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fvirtio%2Fvirtio_pci.h;h=b8295a788be45a61e048aab91a0dca3a6b381313;hb=5cd0e2889c432b4dd2be65866f85a0306231496b;hp=0544a079f5ed5ce448622265e521472eda240a9b;hpb=b86af7b1b57ebe02ebf5298415172d51f1f81e8b;p=dpdk.git diff --git a/drivers/net/virtio/virtio_pci.h b/drivers/net/virtio/virtio_pci.h index 0544a079f5..b8295a788b 100644 --- a/drivers/net/virtio/virtio_pci.h +++ b/drivers/net/virtio/virtio_pci.h @@ -36,16 +36,11 @@ #include -#ifdef __FreeBSD__ -#include -#include -#else -#include -#endif - +#include #include struct virtqueue; +struct virtnet_ctl; /* VirtIO PCI vendor/device ID. */ #define VIRTIO_PCI_VENDORID 0x1AF4 @@ -240,7 +235,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); }; @@ -248,8 +243,8 @@ struct virtio_pci_ops { struct virtio_net_config; struct virtio_hw { - struct virtqueue *cvq; - uint32_t io_base; + struct virtnet_ctl *cvq; + struct rte_pci_ioport io; uint64_t guest_features; uint32_t max_tx_queues; uint32_t max_rx_queues; @@ -258,6 +253,7 @@ struct virtio_hw { 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; @@ -266,6 +262,7 @@ 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; }; /* @@ -281,12 +278,6 @@ struct virtio_net_config { uint16_t max_virtqueue_pairs; } __attribute__((packed)); -/* - * The remaining space is defined by each driver as the per-driver - * configuration space. - */ -#define VIRTIO_PCI_CONFIG(hw) (((hw)->use_msix) ? 24 : 20) - /* * How many bits to shift physical queue address written to QUEUE_PFN. * 12 is historical, and due to x86 page size. @@ -296,28 +287,6 @@ struct virtio_net_config { /* The alignment to use between consumer and producer parts of vring. */ #define VIRTIO_PCI_VRING_ALIGN 4096 -#ifdef __FreeBSD__ - -static inline void -outb_p(unsigned char data, unsigned int port) -{ - - outb(port, (u_char)data); -} - -static inline void -outw_p(unsigned short data, unsigned int port) -{ - outw(port, (u_short)data); -} - -static inline void -outl_p(unsigned int data, unsigned int port) -{ - outl(port, (u_int)data); -} -#endif - static inline int vtpci_with_feature(struct virtio_hw *hw, uint64_t bit) { @@ -327,7 +296,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 *);