# 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, including executing Vendor Unique Commands.

	  If unsure, say N.

config NVME_TARGET_LOOP
	tristate "NVMe loopback device support"
	depends on NVME_TARGET
	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_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.

config NVME_TARGET_TCP_TLS
	bool "NVMe over Fabrics TCP target TLS encryption support"
	depends on NVME_TARGET_TCP
	select NVME_KEYRING
	select NET_HANDSHAKE
	select KEYS
	help
	  Enables TLS encryption for the NVMe TCP target using the netlink handshake API.

	  The TLS handshake daemon is available at
	  https://github.com/oracle/ktls-utils.

	  If unsure, say N.

config NVME_TARGET_AUTH
	bool "NVMe over Fabrics In-band Authentication support"
	depends on NVME_TARGET
	select NVME_AUTH
	help
	  This enables support for NVMe over Fabrics In-band Authentication

	  If unsure, say N.
