mbox series

[net-next,00/11] sfc: add vDPA support for EF100 devices

Message ID 20221207145428.31544-1-gautam.dawar@amd.com (mailing list archive)
Headers show
Series sfc: add vDPA support for EF100 devices | expand

Message

Gautam Dawar Dec. 7, 2022, 2:54 p.m. UTC
Hi All,

This series adds the vdpa support for EF100 devices.
For now, only a network class of vdpa device is supported and
they can be created only on a VF. Each EF100 VF can have one
of the three function personalities (EF100, vDPA & None) at
any time with EF100 being the default. A VF's function personality
is changed to vDPA while creating the vdpa device using vdpa tool.

A vDPA management device is created per VF to allow selection of
the desired VF for vDPA device creation. The MAC address for the
target net device must be specified at the device creation time
via the `mac` parameter of the `vdpa dev add` command as the control
virtqueue is not supported yet.

To use with vhost-vdpa, QEMU version 6.1.0 or later must be used
as it fixes the incorrect feature negotiation (vhost-vdpa backend)
without which VIRTIO_F_IN_ORDER feature bit is negotiated but not
honored when using the guest kernel virtio driver.

Gautam Dawar (11):
  sfc: add function personality support for EF100 devices
  sfc: implement MCDI interface for vDPA operations
  sfc: implement init and fini functions for vDPA personality
  sfc: implement vDPA management device operations
  sfc: implement vdpa device config operations
  sfc: implement vdpa vring config operations
  sfc: implement filters for receiving traffic
  sfc: implement device status related vdpa config operations
  sfc: implement iova rbtree to store dma mappings
  sfc: implement vdpa config_ops for dma operations
  sfc: register the vDPA device

 drivers/net/ethernet/sfc/Kconfig          |   8 +
 drivers/net/ethernet/sfc/Makefile         |   2 +
 drivers/net/ethernet/sfc/ef10.c           |   2 +-
 drivers/net/ethernet/sfc/ef100.c          |   6 +-
 drivers/net/ethernet/sfc/ef100_iova.c     | 205 +++++
 drivers/net/ethernet/sfc/ef100_iova.h     |  40 +
 drivers/net/ethernet/sfc/ef100_nic.c      | 126 ++-
 drivers/net/ethernet/sfc/ef100_nic.h      |  22 +
 drivers/net/ethernet/sfc/ef100_vdpa.c     | 693 +++++++++++++++++
 drivers/net/ethernet/sfc/ef100_vdpa.h     | 241 ++++++
 drivers/net/ethernet/sfc/ef100_vdpa_ops.c | 897 ++++++++++++++++++++++
 drivers/net/ethernet/sfc/mcdi.h           |   7 +
 drivers/net/ethernet/sfc/mcdi_filters.c   |  51 +-
 drivers/net/ethernet/sfc/mcdi_functions.c |   9 +-
 drivers/net/ethernet/sfc/mcdi_functions.h |   3 +-
 drivers/net/ethernet/sfc/mcdi_vdpa.c      | 268 +++++++
 drivers/net/ethernet/sfc/mcdi_vdpa.h      |  84 ++
 drivers/net/ethernet/sfc/net_driver.h     |  19 +
 18 files changed, 2650 insertions(+), 33 deletions(-)
 create mode 100644 drivers/net/ethernet/sfc/ef100_iova.c
 create mode 100644 drivers/net/ethernet/sfc/ef100_iova.h
 create mode 100644 drivers/net/ethernet/sfc/ef100_vdpa.c
 create mode 100644 drivers/net/ethernet/sfc/ef100_vdpa.h
 create mode 100644 drivers/net/ethernet/sfc/ef100_vdpa_ops.c
 create mode 100644 drivers/net/ethernet/sfc/mcdi_vdpa.c
 create mode 100644 drivers/net/ethernet/sfc/mcdi_vdpa.h

Comments

Martin Habets Dec. 11, 2022, 6:05 p.m. UTC | #1
On Wed, Dec 07, 2022 at 08:24:16PM +0530, Gautam Dawar wrote:
> Hi All,
> 
> This series adds the vdpa support for EF100 devices.
> For now, only a network class of vdpa device is supported and
> they can be created only on a VF. Each EF100 VF can have one
> of the three function personalities (EF100, vDPA & None) at
> any time with EF100 being the default. A VF's function personality
> is changed to vDPA while creating the vdpa device using vdpa tool.
> 
> A vDPA management device is created per VF to allow selection of
> the desired VF for vDPA device creation. The MAC address for the
> target net device must be specified at the device creation time
> via the `mac` parameter of the `vdpa dev add` command as the control
> virtqueue is not supported yet.
> 
> To use with vhost-vdpa, QEMU version 6.1.0 or later must be used
> as it fixes the incorrect feature negotiation (vhost-vdpa backend)
> without which VIRTIO_F_IN_ORDER feature bit is negotiated but not
> honored when using the guest kernel virtio driver.
> 
> Gautam Dawar (11):
>   sfc: add function personality support for EF100 devices
>   sfc: implement MCDI interface for vDPA operations
>   sfc: implement init and fini functions for vDPA personality
>   sfc: implement vDPA management device operations
>   sfc: implement vdpa device config operations
>   sfc: implement vdpa vring config operations
>   sfc: implement filters for receiving traffic
>   sfc: implement device status related vdpa config operations
>   sfc: implement iova rbtree to store dma mappings
>   sfc: implement vdpa config_ops for dma operations
>   sfc: register the vDPA device

For the series:
Acked-by: Martin Habets <habetsm.xilinx@gmail.com>

> 
>  drivers/net/ethernet/sfc/Kconfig          |   8 +
>  drivers/net/ethernet/sfc/Makefile         |   2 +
>  drivers/net/ethernet/sfc/ef10.c           |   2 +-
>  drivers/net/ethernet/sfc/ef100.c          |   6 +-
>  drivers/net/ethernet/sfc/ef100_iova.c     | 205 +++++
>  drivers/net/ethernet/sfc/ef100_iova.h     |  40 +
>  drivers/net/ethernet/sfc/ef100_nic.c      | 126 ++-
>  drivers/net/ethernet/sfc/ef100_nic.h      |  22 +
>  drivers/net/ethernet/sfc/ef100_vdpa.c     | 693 +++++++++++++++++
>  drivers/net/ethernet/sfc/ef100_vdpa.h     | 241 ++++++
>  drivers/net/ethernet/sfc/ef100_vdpa_ops.c | 897 ++++++++++++++++++++++
>  drivers/net/ethernet/sfc/mcdi.h           |   7 +
>  drivers/net/ethernet/sfc/mcdi_filters.c   |  51 +-
>  drivers/net/ethernet/sfc/mcdi_functions.c |   9 +-
>  drivers/net/ethernet/sfc/mcdi_functions.h |   3 +-
>  drivers/net/ethernet/sfc/mcdi_vdpa.c      | 268 +++++++
>  drivers/net/ethernet/sfc/mcdi_vdpa.h      |  84 ++
>  drivers/net/ethernet/sfc/net_driver.h     |  19 +
>  18 files changed, 2650 insertions(+), 33 deletions(-)
>  create mode 100644 drivers/net/ethernet/sfc/ef100_iova.c
>  create mode 100644 drivers/net/ethernet/sfc/ef100_iova.h
>  create mode 100644 drivers/net/ethernet/sfc/ef100_vdpa.c
>  create mode 100644 drivers/net/ethernet/sfc/ef100_vdpa.h
>  create mode 100644 drivers/net/ethernet/sfc/ef100_vdpa_ops.c
>  create mode 100644 drivers/net/ethernet/sfc/mcdi_vdpa.c
>  create mode 100644 drivers/net/ethernet/sfc/mcdi_vdpa.h
> 
> -- 
> 2.30.1