1# SPDX-License-Identifier: GPL-2.0-only
2menuconfig INFINIBAND
3	tristate "InfiniBand support"
4	depends on HAS_IOMEM && HAS_DMA
5	depends on NET
6	depends on INET
7	depends on m || IPV6 != m
8	depends on !ALPHA
9	select IRQ_POLL
10	select DIMLIB
11	---help---
12	  Core support for InfiniBand (IB).  Make sure to also select
13	  any protocols you wish to use as well as drivers for your
14	  InfiniBand hardware.
15
16if INFINIBAND
17
18config INFINIBAND_USER_MAD
19	tristate "InfiniBand userspace MAD support"
20	depends on INFINIBAND
21	---help---
22	  Userspace InfiniBand Management Datagram (MAD) support.  This
23	  is the kernel side of the userspace MAD support, which allows
24	  userspace processes to send and receive MADs. You will also
25	  need libibumad from rdma-core
26	  <https://github.com/linux-rdma/rdma-core>.
27
28config INFINIBAND_USER_ACCESS
29	tristate "InfiniBand userspace access (verbs and CM)"
30	depends on MMU
31	---help---
32	  Userspace InfiniBand access support.  This enables the
33	  kernel side of userspace verbs and the userspace
34	  communication manager (CM).  This allows userspace processes
35	  to set up connections and directly access InfiniBand
36	  hardware for fast-path operations.  You will also need
37	  libibverbs, libibcm and a hardware driver library from
38	  rdma-core <https://github.com/linux-rdma/rdma-core>.
39
40config INFINIBAND_EXP_LEGACY_VERBS_NEW_UAPI
41	bool "Allow experimental legacy verbs in new ioctl uAPI  (EXPERIMENTAL)"
42	depends on INFINIBAND_USER_ACCESS
43	---help---
44	  IOCTL based uAPI support for Infiniband is enabled by default for
45	  new verbs only. This allows userspace to invoke the IOCTL based uAPI
46	  for current legacy verbs too.
47
48config INFINIBAND_USER_MEM
49	bool
50	depends on INFINIBAND_USER_ACCESS != n
51	depends on MMU
52	default y
53
54config INFINIBAND_ON_DEMAND_PAGING
55	bool "InfiniBand on-demand paging support"
56	depends on INFINIBAND_USER_MEM
57	select MMU_NOTIFIER
58	select INTERVAL_TREE
59	default y
60	---help---
61	  On demand paging support for the InfiniBand subsystem.
62	  Together with driver support this allows registration of
63	  memory regions without pinning their pages, fetching the
64	  pages on demand instead.
65
66config INFINIBAND_ADDR_TRANS
67	bool "RDMA/CM"
68	depends on INFINIBAND
69	default y
70	---help---
71	  Support for RDMA communication manager (CM).
72	  This allows for a generic connection abstraction over RDMA.
73
74config INFINIBAND_ADDR_TRANS_CONFIGFS
75	bool
76	depends on INFINIBAND_ADDR_TRANS && CONFIGFS_FS && !(INFINIBAND=y && CONFIGFS_FS=m)
77	default y
78	---help---
79	  ConfigFS support for RDMA communication manager (CM).
80	  This allows the user to config the default GID type that the CM
81	  uses for each device, when initiaing new connections.
82
83if INFINIBAND_USER_ACCESS || !INFINIBAND_USER_ACCESS
84source "drivers/infiniband/hw/mthca/Kconfig"
85source "drivers/infiniband/hw/qib/Kconfig"
86source "drivers/infiniband/hw/cxgb3/Kconfig"
87source "drivers/infiniband/hw/cxgb4/Kconfig"
88source "drivers/infiniband/hw/efa/Kconfig"
89source "drivers/infiniband/hw/i40iw/Kconfig"
90source "drivers/infiniband/hw/mlx4/Kconfig"
91source "drivers/infiniband/hw/mlx5/Kconfig"
92source "drivers/infiniband/hw/ocrdma/Kconfig"
93source "drivers/infiniband/hw/vmw_pvrdma/Kconfig"
94source "drivers/infiniband/hw/usnic/Kconfig"
95source "drivers/infiniband/hw/hns/Kconfig"
96source "drivers/infiniband/hw/bnxt_re/Kconfig"
97source "drivers/infiniband/hw/hfi1/Kconfig"
98source "drivers/infiniband/hw/qedr/Kconfig"
99source "drivers/infiniband/sw/rdmavt/Kconfig"
100source "drivers/infiniband/sw/rxe/Kconfig"
101source "drivers/infiniband/sw/siw/Kconfig"
102endif
103
104source "drivers/infiniband/ulp/ipoib/Kconfig"
105
106source "drivers/infiniband/ulp/srp/Kconfig"
107source "drivers/infiniband/ulp/srpt/Kconfig"
108
109source "drivers/infiniband/ulp/iser/Kconfig"
110source "drivers/infiniband/ulp/isert/Kconfig"
111
112source "drivers/infiniband/ulp/opa_vnic/Kconfig"
113
114endif # INFINIBAND
115