[dpdk-dev] [PATCH 02/40] net/virtio: Introduce Virtio bus type

David Marchand david.marchand at redhat.com
Tue Jan 5 22:15:28 CET 2021


On Sun, Dec 20, 2020 at 10:14 PM Maxime Coquelin
<maxime.coquelin at redhat.com> 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.


> @@ -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.


> -       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.


>                         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.


>                 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



More information about the dev mailing list