From: Maxime Coquelin Date: Tue, 26 Jan 2021 10:16:01 +0000 (+0100) Subject: net/virtio: introduce PCI device metadata X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=f305ecbbb7c3ed3c06c24f094258757bcb395898;p=dpdk.git net/virtio: introduce PCI device metadata This patch initiate refactoring of Virtio PCI, by introducing a new device structure for PCI-specific metadata. Signed-off-by: Maxime Coquelin Reviewed-by: Chenbo Xia --- diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c index 68f233356d..5bbff2790f 100644 --- a/drivers/net/virtio/virtio_ethdev.c +++ b/drivers/net/virtio/virtio_ethdev.c @@ -2154,7 +2154,7 @@ static int eth_virtio_pci_probe(struct rte_pci_driver *pci_drv __rte_unused, if (vdpa == 1) return 1; - return rte_eth_dev_pci_generic_probe(pci_dev, sizeof(struct virtio_hw), + return rte_eth_dev_pci_generic_probe(pci_dev, sizeof(struct virtio_pci_dev), eth_virtio_dev_init); } diff --git a/drivers/net/virtio/virtio_pci.c b/drivers/net/virtio/virtio_pci.c index 1692268f30..345d73f868 100644 --- a/drivers/net/virtio/virtio_pci.c +++ b/drivers/net/virtio/virtio_pci.c @@ -689,6 +689,8 @@ next: int vtpci_init(struct rte_pci_device *dev, struct virtio_hw *hw) { + RTE_BUILD_BUG_ON(offsetof(struct virtio_pci_dev, hw) != 0); + /* * Try if we can succeed reading virtio pci caps, which exists * only on modern pci device. If failed, we fallback to legacy diff --git a/drivers/net/virtio/virtio_pci.h b/drivers/net/virtio/virtio_pci.h index d5ef74b1ee..6793d33d9f 100644 --- a/drivers/net/virtio/virtio_pci.h +++ b/drivers/net/virtio/virtio_pci.h @@ -289,6 +289,11 @@ struct virtio_hw { struct virtqueue **vqs; }; +struct virtio_pci_dev { + struct virtio_hw hw; +}; + +#define virtio_pci_get_dev(hwp) container_of(hwp, struct virtio_pci_dev, hw) /* * While virtio_hw is stored in shared memory, this structure stores