# SPDX-License-Identifier: GPL-2.0-only

config NVME_TARGET
	tristate "NVMe Target support"
	depends on BLOCK
	depends on CONFIGFS_FS
	select BLK_DEV_INTEGRITY_T10 if BLK_DEV_INTEGRITY
	select SGL_ALLOC
	help
	  This enabled target side support for the NVMe protocol, that is
	  it allows the Linux kernel to implement NVMe subsystems and
	  controllers and export Linux block devices as NVMe namespaces.
	  You need to select at least one of the transports below to make this
	  functionality useful.

	  To configure the NVMe target you probably want to use the nvmetcli
	  tool from http://git.infradead.org/users/hch/nvmetcli.git.

config NVME_TARGET_PASSTHRU
	bool "NVMe Target Passthrough support"
	depends on NVME_TARGET
	depends on NVME_CORE=y || NVME_CORE=NVME_TARGET
	help
	  This enables target side NVMe passthru controller support for the
	  NVMe Over Fabrics protocol. It allows for hosts to manage and
	  directly access an actual NVMe controller residing on the target
	  side, incuding executing Vendor Unique Commands.

	  If unsure, say N.

config NVME_TARGET_LOOP
	tristate "NVMe loopback device support"
	depends on NVME_TARGET
	select NVME_CORE
	select NVME_FABRICS
	select SG_POOL
	help
	  This enables the NVMe loopback device support, which can be useful
	  to test NVMe host and target side features.

	  If unsure, say N.

config NVME_TARGET_RDMA
	tristate "NVMe over Fabrics RDMA target support"
	depends on INFINIBAND && INFINIBAND_ADDR_TRANS
	depends on NVME_TARGET
	select SGL_ALLOC
	help
	  This enables the NVMe RDMA target support, which allows exporting NVMe
	  devices over RDMA.

	  If unsure, say N.

config NVME_TARGET_FC
	tristate "NVMe over Fabrics FC target driver"
	depends on NVME_TARGET
	depends on HAS_DMA
	select SGL_ALLOC
	help
	  This enables the NVMe FC target support, which allows exporting NVMe
	  devices over FC.

	  If unsure, say N.

config NVME_TARGET_FCLOOP
	tristate "NVMe over Fabrics FC Transport Loopback Test driver"
	depends on NVME_TARGET
	select NVME_CORE
	select NVME_FABRICS
	select SG_POOL
	depends on NVME_FC
	depends on NVME_TARGET_FC
	help
	  This enables the NVMe FC loopback test support, which can be useful
	  to test NVMe-FC transport interfaces.

	  If unsure, say N.

config NVME_TARGET_TCP
	tristate "NVMe over Fabrics TCP target support"
	depends on INET
	depends on NVME_TARGET
	help
	  This enables the NVMe TCP target support, which allows exporting NVMe
	  devices over TCP.

	  If unsure, say N.
