On 8/29/19 9:59 AM, Maxime Coquelin wrote: > vDPA allows to offload Virtio Datapath processing by supported > NICs, like IFCVF for example. > > The control path has to be handled by a dedicated vDPA driver, > so that it can translate Vhost-user protocol requests to > proprietary NICs registers accesses. > > This driver is the vDPA driver for Virtio devices, meaning > that Vhost-user protocol requests get translated to Virtio > registers accesses as per defined in the Virtio spec. > > Basically, it can be used within a guest with a para-virtualized > Virtio-net device, or even with a full Virtio HW offload NIC > directly on host. > > Amongst the main features, all currently supported Virtio spec > versions are supported (split & packed rings, but only tested > with split ring for now) and also multiqueue support is added > by implementing the cotnrol virtqueue in the driver. > > The structure of this driver is heavily based on IFCVF vDPA. > > Maxime Coquelin (15): > vhost: remove vhost kernel header inclusion > vhost: configure vDPA as soon as the device is ready > net/virtio: move control path fonctions in virtqueue file > net/virtio: add virtio PCI subsystem device ID declaration > net/virtio: save notify bar ID in virtio HW struct > net/virtio: add skeleton for virtio vDPA driver > net/virtio: add vDPA ops to get number of queue > net/virtio: add virtio vDPA op to get features > net/virtio: add virtio vDPA op to get protocol features > net/virtio: add vDPA op to configure and start the device > net/virtio: add vDPA op to stop and close the device > net/virtio: add vDPA op to set features > net/virtio: add vDPA ops to get VFIO FDs > net/virtio: add vDPA op to get notification area > doc: add documentation for Virtio vDPA driver > > config/common_linux | 1 + > doc/guides/nics/index.rst | 1 + > doc/guides/nics/virtio_vdpa.rst | 45 ++ > drivers/net/ifc/ifcvf_vdpa.c | 1 + > drivers/net/virtio/Makefile | 4 + > drivers/net/virtio/meson.build | 3 +- > drivers/net/virtio/virtio_ethdev.c | 252 -------- > drivers/net/virtio/virtio_pci.c | 6 +- > drivers/net/virtio/virtio_pci.h | 2 + > drivers/net/virtio/virtio_vdpa.c | 918 +++++++++++++++++++++++++++++ > drivers/net/virtio/virtqueue.c | 255 ++++++++ > drivers/net/virtio/virtqueue.h | 5 + > lib/librte_vhost/rte_vdpa.h | 1 - > lib/librte_vhost/rte_vhost.h | 9 +- > lib/librte_vhost/vhost_user.c | 3 +- > 15 files changed, 1243 insertions(+), 263 deletions(-) > create mode 100644 doc/guides/nics/virtio_vdpa.rst > create mode 100644 drivers/net/virtio/virtio_vdpa.c > Deferring the series to v20.02.