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

config NVME_TARGET
	tristate "NVMe Target support"
	depends on BLOCK
	select CONFIGFS_FS
	select NVME_KEYRING if NVME_TARGET_TCP_TLS
	select KEYS if NVME_TARGET_TCP_TLS
	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_DEBUGFS
        bool "NVMe Target debugfs support"
	depends on NVME_TARGET
	help
	  This enables debugfs support to display the connected controllers
	  to each subsystem

	  If unsure, say N.

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
	select TLS
	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.

config NVME_TARGET_PCI_EPF
	tristate "NVMe PCI Endpoint Function target support"
	depends on NVME_TARGET && PCI_ENDPOINT
	depends on NVME_CORE=y || NVME_CORE=NVME_TARGET
	help
	  This enables the NVMe PCI Endpoint Function target driver support,
	  which allows creating a NVMe PCI controller using an endpoint mode
	  capable PCI controller.

	  If unsure, say N.
