162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_cimenuconfig VDPA
362306a36Sopenharmony_ci	tristate "vDPA drivers"
462306a36Sopenharmony_ci	depends on NET
562306a36Sopenharmony_ci	help
662306a36Sopenharmony_ci	  Enable this module to support vDPA device that uses a
762306a36Sopenharmony_ci	  datapath which complies with virtio specifications with
862306a36Sopenharmony_ci	  vendor specific control path.
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ciif VDPA
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ciconfig VDPA_SIM
1362306a36Sopenharmony_ci	tristate "vDPA device simulator core"
1462306a36Sopenharmony_ci	depends on RUNTIME_TESTING_MENU && HAS_DMA
1562306a36Sopenharmony_ci	select DMA_OPS
1662306a36Sopenharmony_ci	select VHOST_RING
1762306a36Sopenharmony_ci	select IOMMU_IOVA
1862306a36Sopenharmony_ci	help
1962306a36Sopenharmony_ci	  Enable this module to support vDPA device simulators. These devices
2062306a36Sopenharmony_ci	  are used for testing, prototyping and development of vDPA.
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ciconfig VDPA_SIM_NET
2362306a36Sopenharmony_ci	tristate "vDPA simulator for networking device"
2462306a36Sopenharmony_ci	depends on VDPA_SIM
2562306a36Sopenharmony_ci	select GENERIC_NET_UTILS
2662306a36Sopenharmony_ci	help
2762306a36Sopenharmony_ci	  vDPA networking device simulator which loops TX traffic back to RX.
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ciconfig VDPA_SIM_BLOCK
3062306a36Sopenharmony_ci	tristate "vDPA simulator for block device"
3162306a36Sopenharmony_ci	depends on VDPA_SIM
3262306a36Sopenharmony_ci	help
3362306a36Sopenharmony_ci	  vDPA block device simulator which terminates IO request in a
3462306a36Sopenharmony_ci	  memory buffer.
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ciconfig VDPA_USER
3762306a36Sopenharmony_ci	tristate "VDUSE (vDPA Device in Userspace) support"
3862306a36Sopenharmony_ci	depends on EVENTFD && MMU && HAS_DMA
3962306a36Sopenharmony_ci	select DMA_OPS
4062306a36Sopenharmony_ci	select VHOST_IOTLB
4162306a36Sopenharmony_ci	select IOMMU_IOVA
4262306a36Sopenharmony_ci	help
4362306a36Sopenharmony_ci	  With VDUSE it is possible to emulate a vDPA Device
4462306a36Sopenharmony_ci	  in a userspace program.
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ciconfig IFCVF
4762306a36Sopenharmony_ci	tristate "Intel IFC VF vDPA driver"
4862306a36Sopenharmony_ci	depends on PCI_MSI
4962306a36Sopenharmony_ci	help
5062306a36Sopenharmony_ci	  This kernel module can drive Intel IFC VF NIC to offload
5162306a36Sopenharmony_ci	  virtio dataplane traffic to hardware.
5262306a36Sopenharmony_ci	  To compile this driver as a module, choose M here: the module will
5362306a36Sopenharmony_ci	  be called ifcvf.
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ciconfig MLX5_VDPA
5662306a36Sopenharmony_ci	bool
5762306a36Sopenharmony_ci	select VHOST_IOTLB
5862306a36Sopenharmony_ci	help
5962306a36Sopenharmony_ci	  Support library for Mellanox VDPA drivers. Provides code that is
6062306a36Sopenharmony_ci	  common for all types of VDPA drivers. The following drivers are planned:
6162306a36Sopenharmony_ci	  net, block.
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ciconfig MLX5_VDPA_NET
6462306a36Sopenharmony_ci	tristate "vDPA driver for ConnectX devices"
6562306a36Sopenharmony_ci	select MLX5_VDPA
6662306a36Sopenharmony_ci	select VHOST_RING
6762306a36Sopenharmony_ci	depends on MLX5_CORE
6862306a36Sopenharmony_ci	help
6962306a36Sopenharmony_ci	  VDPA network driver for ConnectX6 and newer. Provides offloading
7062306a36Sopenharmony_ci	  of virtio net datapath such that descriptors put on the ring will
7162306a36Sopenharmony_ci	  be executed by the hardware. It also supports a variety of stateless
7262306a36Sopenharmony_ci	  offloads depending on the actual device used and firmware version.
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_ciconfig MLX5_VDPA_STEERING_DEBUG
7562306a36Sopenharmony_ci	bool "expose steering counters on debugfs"
7662306a36Sopenharmony_ci	select MLX5_VDPA
7762306a36Sopenharmony_ci	help
7862306a36Sopenharmony_ci	  Expose RX steering counters in debugfs to aid in debugging. For each VLAN
7962306a36Sopenharmony_ci	  or non VLAN interface, two hardware counters are added to the RX flow
8062306a36Sopenharmony_ci	  table: one for unicast and one for multicast.
8162306a36Sopenharmony_ci	  The counters counts the number of packets and bytes and exposes them in
8262306a36Sopenharmony_ci	  debugfs. Once can read the counters using, e.g.:
8362306a36Sopenharmony_ci	  cat /sys/kernel/debug/mlx5/mlx5_core.sf.1/vdpa-0/rx/untagged/ucast/packets
8462306a36Sopenharmony_ci	  cat /sys/kernel/debug/mlx5/mlx5_core.sf.1/vdpa-0/rx/untagged/mcast/bytes
8562306a36Sopenharmony_ci
8662306a36Sopenharmony_ciconfig VP_VDPA
8762306a36Sopenharmony_ci	tristate "Virtio PCI bridge vDPA driver"
8862306a36Sopenharmony_ci	select VIRTIO_PCI_LIB
8962306a36Sopenharmony_ci	depends on PCI_MSI
9062306a36Sopenharmony_ci	help
9162306a36Sopenharmony_ci	  This kernel module bridges virtio PCI device to vDPA bus.
9262306a36Sopenharmony_ci
9362306a36Sopenharmony_ciconfig ALIBABA_ENI_VDPA
9462306a36Sopenharmony_ci	tristate "vDPA driver for Alibaba ENI"
9562306a36Sopenharmony_ci	select VIRTIO_PCI_LIB_LEGACY
9662306a36Sopenharmony_ci	depends on PCI_MSI && X86
9762306a36Sopenharmony_ci	help
9862306a36Sopenharmony_ci	  VDPA driver for Alibaba ENI (Elastic Network Interface) which is built upon
9962306a36Sopenharmony_ci	  virtio 0.9.5 specification.
10062306a36Sopenharmony_ci
10162306a36Sopenharmony_ci config SNET_VDPA
10262306a36Sopenharmony_ci	tristate "SolidRun's vDPA driver for SolidNET"
10362306a36Sopenharmony_ci	depends on PCI_MSI && PCI_IOV && (HWMON || HWMON=n)
10462306a36Sopenharmony_ci
10562306a36Sopenharmony_ci	# This driver MAY create a HWMON device.
10662306a36Sopenharmony_ci	# Depending on (HWMON || HWMON=n) ensures that:
10762306a36Sopenharmony_ci	# If HWMON=n the driver can be compiled either as a module or built-in.
10862306a36Sopenharmony_ci	# If HWMON=y the driver can be compiled either as a module or built-in.
10962306a36Sopenharmony_ci	# If HWMON=m the driver is forced to be compiled as a module.
11062306a36Sopenharmony_ci	# By doing so, IS_ENABLED can be used instead of IS_REACHABLE
11162306a36Sopenharmony_ci
11262306a36Sopenharmony_ci	help
11362306a36Sopenharmony_ci	  vDPA driver for SolidNET DPU.
11462306a36Sopenharmony_ci	  With this driver, the VirtIO dataplane can be
11562306a36Sopenharmony_ci	  offloaded to a SolidNET DPU.
11662306a36Sopenharmony_ci	  This driver includes a HW monitor device that
11762306a36Sopenharmony_ci	  reads health values from the DPU.
11862306a36Sopenharmony_ci
11962306a36Sopenharmony_ciconfig PDS_VDPA
12062306a36Sopenharmony_ci	tristate "vDPA driver for AMD/Pensando DSC devices"
12162306a36Sopenharmony_ci	select VIRTIO_PCI_LIB
12262306a36Sopenharmony_ci	depends on PCI_MSI
12362306a36Sopenharmony_ci	depends on PDS_CORE
12462306a36Sopenharmony_ci	help
12562306a36Sopenharmony_ci	  vDPA network driver for AMD/Pensando's PDS Core devices.
12662306a36Sopenharmony_ci	  With this driver, the VirtIO dataplane can be
12762306a36Sopenharmony_ci	  offloaded to an AMD/Pensando DSC device.
12862306a36Sopenharmony_ci
12962306a36Sopenharmony_ciendif # VDPA
130