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

config NVME_TARGET
	tristate "NVMe Target support"
	depends on BLOCK
	depends on CONFIGFS_FS
	select NVME_KEYRING if NVME_TARGET_TCP_TLS
	select KEYS if NVME_TARGET_TCP_TLS
	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 NET_HANDSHAKE
	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 in target side"
	depends on NVME_TARGET
	select NVME_AUTH
	help
	  This enables support for NVMe over Fabrics In-band Authentication in
	  target side.

	  If unsure, say N.
