
config NVME_TARGET
	tristate "NVMe Target support"
	depends on BLOCK
	depends on CONFIGFS_FS
	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_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
	depends on NVME_TARGET
	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
	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.
