mbox series

[v1,0/2] introduce new iavf driver on vfio-user client

Message ID 20201219143816.64174-1-jingjing.wu@intel.com (mailing list archive)
Headers show
Series introduce new iavf driver on vfio-user client | expand

Message

Wu, Jingjing Dec. 19, 2020, 2:38 p.m. UTC
This series introduces a new net virtual device called iavf_client which
is based on vfio-user client interface. Through vfio-user client interface,
PCI liked device could be used similar as IntelĀ® Ethernet Adaptive Virtual
Function specification.
The code to enable iavf_client mainly contains two parts:
 - Emulated pci interfaces for vfio-user client which is located
   in common/iavf/vfio_user/.
 - A new net driver base on vdev abstraction, i.e. iavf_client_ethdev.c

      ----------------------
      | ------------------ |
      | |  iavf driver   | |----> (iavf_client_ethdev.c)
      | ------------------ |
      | ------------------ |
      | | device emulate | |------>(common/iavf/vfio_user/)
      | ------------------ |
      ----------------------
                |
                |  
      ----------------------
      |      vfio-user     |
      |       client       |
      ----------------------



This driver can be used to test the device emulation framework
mentioned in:
  [RFC 0/2] Add device emulation support in DPDK
  http://patchwork.dpdk.org/cover/75549/

                    +------------------------------------------------------+
                    |   +---------------+      +---------------+           |
                    |   | iavf_emudev   |      | iavfbe_ethdev |           |
                    |   |    driver     |      |     driver    |           |
                    |   +---------------+      +---------------+           |
                    |           |                       |                  |
                    | ------------------------------------------- VDEV BUS |
                    |           |                       |                  |
                    |   +---------------+       +--------------+           |
+--------------+    |   | vdev:         |       | vdev:        |           |
| +----------+ |    |   | /path/to/vfio |       |iavf_emudev_# |           |
| |   iavf   | |    |   +---------------+       +--------------+           |
| |  client  |      |           |                                          |
| +----------+ |    |           |                                          |
| +----------+ |    |      +----------+                                    |
| | vfio-user| |    |      | vfio-user|                                    |
| | client   | |<---|----->| server   |                                    |
| +----------+ |    |      +----------+                                    |
| QEMU/DPDK    |    | DPDK                                                 |
+--------------+    +------------------------------------------------------+

It can be launched together with patch series for the testing:
  [0/9] Introduce vfio-user library:
  http://patchwork.dpdk.org/cover/85389/
  [0/8]Introduce emudev library and iavf emudev driver
  http://patchwork.dpdk.org/cover/85488/


This series depends on patch serieses:
  [0/9] Introduce vfio-user library:
  http://patchwork.dpdk.org/cover/85389/

Jingjing Wu (2):
  common/iavf: emulated pci interfaces on vfio-user client
  net/iavf: introduce iavf driver on vfio-user client

 config/rte_config.h                           |   3 +
 drivers/common/iavf/iavf_common.c             |   7 +
 drivers/common/iavf/iavf_impl.c               |  45 +-
 drivers/common/iavf/iavf_osdep.h              |  14 +
 drivers/common/iavf/iavf_prototype.h          |   1 +
 drivers/common/iavf/iavf_type.h               |   3 +
 drivers/common/iavf/meson.build               |  11 +-
 drivers/common/iavf/version.map               |   5 +
 drivers/common/iavf/vfio_user/vfio_user_pci.c | 517 ++++++++++++++++++
 drivers/common/iavf/vfio_user/vfio_user_pci.h |  66 +++
 drivers/net/iavf/iavf.h                       |  18 +-
 drivers/net/iavf/iavf_client_ethdev.c         | 298 ++++++++++
 drivers/net/iavf/iavf_ethdev.c                |  26 +-
 drivers/net/iavf/iavf_rxtx.c                  |  23 +-
 drivers/net/iavf/meson.build                  |   1 +
 15 files changed, 1015 insertions(+), 23 deletions(-)
 create mode 100644 drivers/common/iavf/vfio_user/vfio_user_pci.c
 create mode 100644 drivers/common/iavf/vfio_user/vfio_user_pci.h
 create mode 100644 drivers/net/iavf/iavf_client_ethdev.c