Re: [dpdk-dev] [PATCH 02/40] net/virtio: Introduce Virtio bus type
From: David Marchand <hidden>
Date: 2021-01-05 21:15:45
On Sun, Dec 20, 2020 at 10:14 PM Maxime Coquelin [off-list ref] wrote:
This patch is preliminary work for introducing a bus layer in Virtio PMD, in order to improve Virtio-user integration. A new bus type is added to provide a unified way to distinguish which bus type is used (PCI modern, PCI legacy or Virtio-user).
In dpdk, we don't use a capital letter for starting a title.
quoted hunk ↗ jump to hunk
@@ -1883,15 +1883,14 @@ virtio_remap_pci(struct rte_pci_device *pci_dev, struct virtio_hw *hw) static void virtio_set_vtpci_ops(struct virtio_hw *hw) { -#ifdef RTE_VIRTIO_USER
Too soon to remove this check, since virtio_user_ops comes from virtio_user_ethdev.c. This will break compilation on FreeBSD.
quoted hunk ↗ jump to hunk
- if (hw->virtio_user_dev) + if (hw->bus_type == VIRTIO_BUS_USER) VTPCI_OPS(hw) = &virtio_user_ops; - else -#endif - if (hw->modern) + else if (hw->bus_type == VIRTIO_BUS_PCI_MODERN) VTPCI_OPS(hw) = &modern_ops; - else + else if (hw->bus_type == VIRTIO_BUS_PCI_LEGACY) VTPCI_OPS(hw) = &legacy_ops; + + return; } /*@@ -1919,7 +1918,7 @@ eth_virtio_dev_init(struct rte_eth_dev *eth_dev) eth_dev->rx_descriptor_done = virtio_dev_rx_queue_done; if (rte_eal_process_type() == RTE_PROC_SECONDARY) { - if (!hw->virtio_user_dev) { + if (hw->bus_type != VIRTIO_BUS_USER) {
In the rest of the patch, we check for PCI types when dealing with PCI code, so I'd rather be consistent and check for modern and legacy pci types here too.
quoted hunk ↗ jump to hunk
ret = virtio_remap_pci(RTE_ETH_DEV_TO_PCI(eth_dev), hw); if (ret) return ret;@@ -1950,7 +1949,7 @@ eth_virtio_dev_init(struct rte_eth_dev *eth_dev) /* For virtio_user case the hw->virtio_user_dev is populated by * virtio_user_eth_dev_alloc() before eth_virtio_dev_init() is called. */ - if (!hw->virtio_user_dev) { + if (hw->bus_type != VIRTIO_BUS_USER) {
Idem.
quoted hunk ↗ jump to hunk
ret = vtpci_init(RTE_ETH_DEV_TO_PCI(eth_dev), hw); if (ret) goto err_vtpci_init;@@ -1982,9 +1981,9 @@ eth_virtio_dev_init(struct rte_eth_dev *eth_dev) return 0; err_virtio_init: - if (!hw->virtio_user_dev) { + if (hw->bus_type == VIRTIO_BUS_PCI_MODERN || hw->bus_type == VIRTIO_BUS_PCI_LEGACY) { rte_pci_unmap_device(RTE_ETH_DEV_TO_PCI(eth_dev)); - if (!hw->modern) + if (hw->bus_type == VIRTIO_BUS_PCI_LEGACY) rte_pci_ioport_unmap(VTPCI_IO(hw)); } err_vtpci_init:
-- David Marchand