From f305ecbbb7c3ed3c06c24f094258757bcb395898 Mon Sep 17 00:00:00 2001 From: Maxime Coquelin Date: Tue, 26 Jan 2021 11:16:01 +0100 Subject: [PATCH] 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 --- drivers/net/virtio/virtio_ethdev.c | 2 +- drivers/net/virtio/virtio_pci.c | 2 ++ drivers/net/virtio/virtio_pci.h | 5 +++++ 3 files changed, 8 insertions(+), 1 deletion(-) 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 -- 2.20.1