1# SPDX-License-Identifier: GPL-2.0-only
2menuconfig VDPA
3	tristate "vDPA drivers"
4	depends on NET
5	help
6	  Enable this module to support vDPA device that uses a
7	  datapath which complies with virtio specifications with
8	  vendor specific control path.
9
10if VDPA
11
12config VDPA_SIM
13	tristate "vDPA device simulator core"
14	depends on RUNTIME_TESTING_MENU
15	select VHOST_RING
16	select IOMMU_IOVA
17	help
18	  Enable this module to support vDPA device simulators. These devices
19	  are used for testing, prototyping and development of vDPA.
20
21config VDPA_SIM_NET
22	tristate "vDPA simulator for networking device"
23	depends on VDPA_SIM
24	select GENERIC_NET_UTILS
25	help
26	  vDPA networking device simulator which loops TX traffic back to RX.
27
28config VDPA_SIM_BLOCK
29	tristate "vDPA simulator for block device"
30	depends on VDPA_SIM
31	help
32	  vDPA block device simulator which terminates IO request in a
33	  memory buffer.
34
35config VDPA_USER
36	tristate "VDUSE (vDPA Device in Userspace) support"
37	depends on EVENTFD && MMU && HAS_DMA
38	#
39	# This driver incorrectly tries to override the dma_ops.  It should
40	# never have done that, but for now keep it working on architectures
41	# that use dma ops
42	#
43	depends on ARCH_HAS_DMA_OPS
44	select VHOST_IOTLB
45	select IOMMU_IOVA
46	help
47	  With VDUSE it is possible to emulate a vDPA Device
48	  in a userspace program.
49
50config IFCVF
51	tristate "Intel IFC VF vDPA driver"
52	depends on PCI_MSI
53	help
54	  This kernel module can drive Intel IFC VF NIC to offload
55	  virtio dataplane traffic to hardware.
56	  To compile this driver as a module, choose M here: the module will
57	  be called ifcvf.
58
59config MLX5_VDPA
60	bool
61	select VHOST_IOTLB
62	help
63	  Support library for Mellanox VDPA drivers. Provides code that is
64	  common for all types of VDPA drivers. The following drivers are planned:
65	  net, block.
66
67config MLX5_VDPA_NET
68	tristate "vDPA driver for ConnectX devices"
69	select MLX5_VDPA
70	select VHOST_RING
71	depends on MLX5_CORE
72	help
73	  VDPA network driver for ConnectX6 and newer. Provides offloading
74	  of virtio net datapath such that descriptors put on the ring will
75	  be executed by the hardware. It also supports a variety of stateless
76	  offloads depending on the actual device used and firmware version.
77
78config MLX5_VDPA_STEERING_DEBUG
79	bool "expose steering counters on debugfs"
80	select MLX5_VDPA
81	help
82	  Expose RX steering counters in debugfs to aid in debugging. For each VLAN
83	  or non VLAN interface, two hardware counters are added to the RX flow
84	  table: one for unicast and one for multicast.
85	  The counters counts the number of packets and bytes and exposes them in
86	  debugfs. Once can read the counters using, e.g.:
87	  cat /sys/kernel/debug/mlx5/mlx5_core.sf.1/vdpa-0/rx/untagged/ucast/packets
88	  cat /sys/kernel/debug/mlx5/mlx5_core.sf.1/vdpa-0/rx/untagged/mcast/bytes
89
90config VP_VDPA
91	tristate "Virtio PCI bridge vDPA driver"
92	select VIRTIO_PCI_LIB
93	depends on PCI_MSI
94	help
95	  This kernel module bridges virtio PCI device to vDPA bus.
96
97config ALIBABA_ENI_VDPA
98	tristate "vDPA driver for Alibaba ENI"
99	select VIRTIO_PCI_LIB_LEGACY
100	depends on PCI_MSI && X86
101	help
102	  VDPA driver for Alibaba ENI (Elastic Network Interface) which is built upon
103	  virtio 0.9.5 specification.
104
105 config SNET_VDPA
106	tristate "SolidRun's vDPA driver for SolidNET"
107	depends on PCI_MSI && PCI_IOV && (HWMON || HWMON=n)
108
109	# This driver MAY create a HWMON device.
110	# Depending on (HWMON || HWMON=n) ensures that:
111	# If HWMON=n the driver can be compiled either as a module or built-in.
112	# If HWMON=y the driver can be compiled either as a module or built-in.
113	# If HWMON=m the driver is forced to be compiled as a module.
114	# By doing so, IS_ENABLED can be used instead of IS_REACHABLE
115
116	help
117	  vDPA driver for SolidNET DPU.
118	  With this driver, the VirtIO dataplane can be
119	  offloaded to a SolidNET DPU.
120	  This driver includes a HW monitor device that
121	  reads health values from the DPU.
122
123config PDS_VDPA
124	tristate "vDPA driver for AMD/Pensando DSC devices"
125	select VIRTIO_PCI_LIB
126	depends on PCI_MSI
127	depends on PDS_CORE
128	help
129	  vDPA network driver for AMD/Pensando's PDS Core devices.
130	  With this driver, the VirtIO dataplane can be
131	  offloaded to an AMD/Pensando DSC device.
132
133config OCTEONEP_VDPA
134	tristate "vDPA driver for Octeon DPU devices"
135	depends on m
136	depends on PCI_MSI
137	help
138	  This is a vDPA driver designed for Marvell's Octeon DPU devices.
139	  This driver enables the offloading of the VirtIO dataplane to an
140	  Octeon DPU device.
141	  Please note that this driver must be built as a module and it
142	  cannot be loaded until the Octeon emulation software is running.
143
144endif # VDPA
145