# SPDX-License-Identifier: GPL-2.0-only
menuconfig INFINIBAND
	tristate "InfiniBand support"
	depends on HAS_IOMEM && HAS_DMA
	depends on NET
	depends on INET
	depends on m || IPV6 != m
	depends on !ALPHA
	select IRQ_POLL
	select DIMLIB
	---help---
	  Core support for InfiniBand (IB).  Make sure to also select
	  any protocols you wish to use as well as drivers for your
	  InfiniBand hardware.

if INFINIBAND

config INFINIBAND_USER_MAD
	tristate "InfiniBand userspace MAD support"
	depends on INFINIBAND
	---help---
	  Userspace InfiniBand Management Datagram (MAD) support.  This
	  is the kernel side of the userspace MAD support, which allows
	  userspace processes to send and receive MADs. You will also
	  need libibumad from rdma-core
	  <https://github.com/linux-rdma/rdma-core>.

config INFINIBAND_USER_ACCESS
	tristate "InfiniBand userspace access (verbs and CM)"
	depends on MMU
	---help---
	  Userspace InfiniBand access support.  This enables the
	  kernel side of userspace verbs and the userspace
	  communication manager (CM).  This allows userspace processes
	  to set up connections and directly access InfiniBand
	  hardware for fast-path operations.  You will also need
	  libibverbs, libibcm and a hardware driver library from
	  rdma-core <https://github.com/linux-rdma/rdma-core>.

config INFINIBAND_EXP_LEGACY_VERBS_NEW_UAPI
	bool "Allow experimental legacy verbs in new ioctl uAPI  (EXPERIMENTAL)"
	depends on INFINIBAND_USER_ACCESS
	---help---
	  IOCTL based uAPI support for Infiniband is enabled by default for
	  new verbs only. This allows userspace to invoke the IOCTL based uAPI
	  for current legacy verbs too.

config INFINIBAND_USER_MEM
	bool
	depends on INFINIBAND_USER_ACCESS != n
	depends on MMU
	default y

config INFINIBAND_ON_DEMAND_PAGING
	bool "InfiniBand on-demand paging support"
	depends on INFINIBAND_USER_MEM
	select MMU_NOTIFIER
	select INTERVAL_TREE
	default y
	---help---
	  On demand paging support for the InfiniBand subsystem.
	  Together with driver support this allows registration of
	  memory regions without pinning their pages, fetching the
	  pages on demand instead.

config INFINIBAND_ADDR_TRANS
	bool "RDMA/CM"
	depends on INFINIBAND
	default y
	---help---
	  Support for RDMA communication manager (CM).
	  This allows for a generic connection abstraction over RDMA.

config INFINIBAND_ADDR_TRANS_CONFIGFS
	bool
	depends on INFINIBAND_ADDR_TRANS && CONFIGFS_FS && !(INFINIBAND=y && CONFIGFS_FS=m)
	default y
	---help---
	  ConfigFS support for RDMA communication manager (CM).
	  This allows the user to config the default GID type that the CM
	  uses for each device, when initiaing new connections.

config INFINIBAND_VIRT_DMA
	def_bool !HIGHMEM

if INFINIBAND_USER_ACCESS || !INFINIBAND_USER_ACCESS
source "drivers/infiniband/hw/mthca/Kconfig"
source "drivers/infiniband/hw/qib/Kconfig"
source "drivers/infiniband/hw/cxgb3/Kconfig"
source "drivers/infiniband/hw/cxgb4/Kconfig"
source "drivers/infiniband/hw/efa/Kconfig"
source "drivers/infiniband/hw/i40iw/Kconfig"
source "drivers/infiniband/hw/mlx4/Kconfig"
source "drivers/infiniband/hw/mlx5/Kconfig"
source "drivers/infiniband/hw/ocrdma/Kconfig"
source "drivers/infiniband/hw/vmw_pvrdma/Kconfig"
source "drivers/infiniband/hw/usnic/Kconfig"
source "drivers/infiniband/hw/hns/Kconfig"
source "drivers/infiniband/hw/bnxt_re/Kconfig"
source "drivers/infiniband/hw/hfi1/Kconfig"
source "drivers/infiniband/hw/qedr/Kconfig"
source "drivers/infiniband/sw/rdmavt/Kconfig"
source "drivers/infiniband/sw/rxe/Kconfig"
source "drivers/infiniband/sw/siw/Kconfig"
endif

source "drivers/infiniband/ulp/ipoib/Kconfig"

source "drivers/infiniband/ulp/srp/Kconfig"
source "drivers/infiniband/ulp/srpt/Kconfig"

source "drivers/infiniband/ulp/iser/Kconfig"
source "drivers/infiniband/ulp/isert/Kconfig"

source "drivers/infiniband/ulp/opa_vnic/Kconfig"

endif # INFINIBAND
