|  | # SPDX-License-Identifier: GPL-2.0-only | 
|  | menuconfig VDPA | 
|  | tristate "vDPA drivers" | 
|  | depends on NET | 
|  | help | 
|  | Enable this module to support vDPA device that uses a | 
|  | datapath which complies with virtio specifications with | 
|  | vendor specific control path. | 
|  |  | 
|  | if VDPA | 
|  |  | 
|  | config VDPA_SIM | 
|  | tristate "vDPA device simulator core" | 
|  | depends on RUNTIME_TESTING_MENU | 
|  | select VHOST_RING | 
|  | select IOMMU_IOVA | 
|  | help | 
|  | Enable this module to support vDPA device simulators. These devices | 
|  | are used for testing, prototyping and development of vDPA. | 
|  |  | 
|  | config VDPA_SIM_NET | 
|  | tristate "vDPA simulator for networking device" | 
|  | depends on VDPA_SIM | 
|  | select GENERIC_NET_UTILS | 
|  | help | 
|  | vDPA networking device simulator which loops TX traffic back to RX. | 
|  |  | 
|  | config VDPA_SIM_BLOCK | 
|  | tristate "vDPA simulator for block device" | 
|  | depends on VDPA_SIM | 
|  | help | 
|  | vDPA block device simulator which terminates IO request in a | 
|  | memory buffer. | 
|  |  | 
|  | config VDPA_USER | 
|  | tristate "VDUSE (vDPA Device in Userspace) support" | 
|  | depends on EVENTFD && MMU && HAS_DMA | 
|  | # | 
|  | # This driver incorrectly tries to override the dma_ops.  It should | 
|  | # never have done that, but for now keep it working on architectures | 
|  | # that use dma ops | 
|  | # | 
|  | depends on ARCH_HAS_DMA_OPS | 
|  | select VHOST_IOTLB | 
|  | select IOMMU_IOVA | 
|  | help | 
|  | With VDUSE it is possible to emulate a vDPA Device | 
|  | in a userspace program. | 
|  |  | 
|  | config IFCVF | 
|  | tristate "Intel IFC VF vDPA driver" | 
|  | depends on PCI_MSI | 
|  | help | 
|  | This kernel module can drive Intel IFC VF NIC to offload | 
|  | virtio dataplane traffic to hardware. | 
|  | To compile this driver as a module, choose M here: the module will | 
|  | be called ifcvf. | 
|  |  | 
|  | config MLX5_VDPA | 
|  | bool | 
|  | select VHOST_IOTLB | 
|  | help | 
|  | Support library for Mellanox VDPA drivers. Provides code that is | 
|  | common for all types of VDPA drivers. The following drivers are planned: | 
|  | net, block. | 
|  |  | 
|  | config MLX5_VDPA_NET | 
|  | tristate "vDPA driver for ConnectX devices" | 
|  | select MLX5_VDPA | 
|  | select VHOST_RING | 
|  | depends on MLX5_CORE | 
|  | help | 
|  | VDPA network driver for ConnectX6 and newer. Provides offloading | 
|  | of virtio net datapath such that descriptors put on the ring will | 
|  | be executed by the hardware. It also supports a variety of stateless | 
|  | offloads depending on the actual device used and firmware version. | 
|  |  | 
|  | config MLX5_VDPA_STEERING_DEBUG | 
|  | bool "expose steering counters on debugfs" | 
|  | select MLX5_VDPA | 
|  | help | 
|  | Expose RX steering counters in debugfs to aid in debugging. For each VLAN | 
|  | or non VLAN interface, two hardware counters are added to the RX flow | 
|  | table: one for unicast and one for multicast. | 
|  | The counters counts the number of packets and bytes and exposes them in | 
|  | debugfs. Once can read the counters using, e.g.: | 
|  | cat /sys/kernel/debug/mlx5/mlx5_core.sf.1/vdpa-0/rx/untagged/ucast/packets | 
|  | cat /sys/kernel/debug/mlx5/mlx5_core.sf.1/vdpa-0/rx/untagged/mcast/bytes | 
|  |  | 
|  | config VP_VDPA | 
|  | tristate "Virtio PCI bridge vDPA driver" | 
|  | select VIRTIO_PCI_LIB | 
|  | depends on PCI_MSI | 
|  | help | 
|  | This kernel module bridges virtio PCI device to vDPA bus. | 
|  |  | 
|  | config ALIBABA_ENI_VDPA | 
|  | tristate "vDPA driver for Alibaba ENI" | 
|  | select VIRTIO_PCI_LIB_LEGACY | 
|  | depends on PCI_MSI && X86 | 
|  | help | 
|  | VDPA driver for Alibaba ENI (Elastic Network Interface) which is built upon | 
|  | virtio 0.9.5 specification. | 
|  |  | 
|  | config SNET_VDPA | 
|  | tristate "SolidRun's vDPA driver for SolidNET" | 
|  | depends on PCI_MSI && PCI_IOV && (HWMON || HWMON=n) | 
|  |  | 
|  | # This driver MAY create a HWMON device. | 
|  | # Depending on (HWMON || HWMON=n) ensures that: | 
|  | # If HWMON=n the driver can be compiled either as a module or built-in. | 
|  | # If HWMON=y the driver can be compiled either as a module or built-in. | 
|  | # If HWMON=m the driver is forced to be compiled as a module. | 
|  | # By doing so, IS_ENABLED can be used instead of IS_REACHABLE | 
|  |  | 
|  | help | 
|  | vDPA driver for SolidNET DPU. | 
|  | With this driver, the VirtIO dataplane can be | 
|  | offloaded to a SolidNET DPU. | 
|  | This driver includes a HW monitor device that | 
|  | reads health values from the DPU. | 
|  |  | 
|  | config PDS_VDPA | 
|  | tristate "vDPA driver for AMD/Pensando DSC devices" | 
|  | select VIRTIO_PCI_LIB | 
|  | depends on PCI_MSI | 
|  | depends on PDS_CORE | 
|  | help | 
|  | vDPA network driver for AMD/Pensando's PDS Core devices. | 
|  | With this driver, the VirtIO dataplane can be | 
|  | offloaded to an AMD/Pensando DSC device. | 
|  |  | 
|  | config OCTEONEP_VDPA | 
|  | tristate "vDPA driver for Octeon DPU devices" | 
|  | depends on m | 
|  | depends on PCI_MSI | 
|  | help | 
|  | This is a vDPA driver designed for Marvell's Octeon DPU devices. | 
|  | This driver enables the offloading of the VirtIO dataplane to an | 
|  | Octeon DPU device. | 
|  | Please note that this driver must be built as a module and it | 
|  | cannot be loaded until the Octeon emulation software is running. | 
|  |  | 
|  | endif # VDPA |