162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci
362306a36Sopenharmony_ciconfig NVME_TARGET
462306a36Sopenharmony_ci	tristate "NVMe Target support"
562306a36Sopenharmony_ci	depends on BLOCK
662306a36Sopenharmony_ci	depends on CONFIGFS_FS
762306a36Sopenharmony_ci	select BLK_DEV_INTEGRITY_T10 if BLK_DEV_INTEGRITY
862306a36Sopenharmony_ci	select SGL_ALLOC
962306a36Sopenharmony_ci	help
1062306a36Sopenharmony_ci	  This enabled target side support for the NVMe protocol, that is
1162306a36Sopenharmony_ci	  it allows the Linux kernel to implement NVMe subsystems and
1262306a36Sopenharmony_ci	  controllers and export Linux block devices as NVMe namespaces.
1362306a36Sopenharmony_ci	  You need to select at least one of the transports below to make this
1462306a36Sopenharmony_ci	  functionality useful.
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci	  To configure the NVMe target you probably want to use the nvmetcli
1762306a36Sopenharmony_ci	  tool from http://git.infradead.org/users/hch/nvmetcli.git.
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ciconfig NVME_TARGET_PASSTHRU
2062306a36Sopenharmony_ci	bool "NVMe Target Passthrough support"
2162306a36Sopenharmony_ci	depends on NVME_TARGET
2262306a36Sopenharmony_ci	depends on NVME_CORE=y || NVME_CORE=NVME_TARGET
2362306a36Sopenharmony_ci	help
2462306a36Sopenharmony_ci	  This enables target side NVMe passthru controller support for the
2562306a36Sopenharmony_ci	  NVMe Over Fabrics protocol. It allows for hosts to manage and
2662306a36Sopenharmony_ci	  directly access an actual NVMe controller residing on the target
2762306a36Sopenharmony_ci	  side, including executing Vendor Unique Commands.
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci	  If unsure, say N.
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ciconfig NVME_TARGET_LOOP
3262306a36Sopenharmony_ci	tristate "NVMe loopback device support"
3362306a36Sopenharmony_ci	depends on NVME_TARGET
3462306a36Sopenharmony_ci	select NVME_FABRICS
3562306a36Sopenharmony_ci	select SG_POOL
3662306a36Sopenharmony_ci	help
3762306a36Sopenharmony_ci	  This enables the NVMe loopback device support, which can be useful
3862306a36Sopenharmony_ci	  to test NVMe host and target side features.
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ci	  If unsure, say N.
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ciconfig NVME_TARGET_RDMA
4362306a36Sopenharmony_ci	tristate "NVMe over Fabrics RDMA target support"
4462306a36Sopenharmony_ci	depends on INFINIBAND && INFINIBAND_ADDR_TRANS
4562306a36Sopenharmony_ci	depends on NVME_TARGET
4662306a36Sopenharmony_ci	select SGL_ALLOC
4762306a36Sopenharmony_ci	help
4862306a36Sopenharmony_ci	  This enables the NVMe RDMA target support, which allows exporting NVMe
4962306a36Sopenharmony_ci	  devices over RDMA.
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ci	  If unsure, say N.
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_ciconfig NVME_TARGET_FC
5462306a36Sopenharmony_ci	tristate "NVMe over Fabrics FC target driver"
5562306a36Sopenharmony_ci	depends on NVME_TARGET
5662306a36Sopenharmony_ci	depends on HAS_DMA
5762306a36Sopenharmony_ci	select SGL_ALLOC
5862306a36Sopenharmony_ci	help
5962306a36Sopenharmony_ci	  This enables the NVMe FC target support, which allows exporting NVMe
6062306a36Sopenharmony_ci	  devices over FC.
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ci	  If unsure, say N.
6362306a36Sopenharmony_ci
6462306a36Sopenharmony_ciconfig NVME_TARGET_FCLOOP
6562306a36Sopenharmony_ci	tristate "NVMe over Fabrics FC Transport Loopback Test driver"
6662306a36Sopenharmony_ci	depends on NVME_TARGET
6762306a36Sopenharmony_ci	select NVME_FABRICS
6862306a36Sopenharmony_ci	select SG_POOL
6962306a36Sopenharmony_ci	depends on NVME_FC
7062306a36Sopenharmony_ci	depends on NVME_TARGET_FC
7162306a36Sopenharmony_ci	help
7262306a36Sopenharmony_ci	  This enables the NVMe FC loopback test support, which can be useful
7362306a36Sopenharmony_ci	  to test NVMe-FC transport interfaces.
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_ci	  If unsure, say N.
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ciconfig NVME_TARGET_TCP
7862306a36Sopenharmony_ci	tristate "NVMe over Fabrics TCP target support"
7962306a36Sopenharmony_ci	depends on INET
8062306a36Sopenharmony_ci	depends on NVME_TARGET
8162306a36Sopenharmony_ci	help
8262306a36Sopenharmony_ci	  This enables the NVMe TCP target support, which allows exporting NVMe
8362306a36Sopenharmony_ci	  devices over TCP.
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_ci	  If unsure, say N.
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_ciconfig NVME_TARGET_AUTH
8862306a36Sopenharmony_ci	bool "NVMe over Fabrics In-band Authentication support"
8962306a36Sopenharmony_ci	depends on NVME_TARGET
9062306a36Sopenharmony_ci	select NVME_COMMON
9162306a36Sopenharmony_ci	select CRYPTO
9262306a36Sopenharmony_ci	select CRYPTO_HMAC
9362306a36Sopenharmony_ci	select CRYPTO_SHA256
9462306a36Sopenharmony_ci	select CRYPTO_SHA512
9562306a36Sopenharmony_ci	select CRYPTO_DH
9662306a36Sopenharmony_ci	select CRYPTO_DH_RFC7919_GROUPS
9762306a36Sopenharmony_ci	help
9862306a36Sopenharmony_ci	  This enables support for NVMe over Fabrics In-band Authentication
9962306a36Sopenharmony_ci
10062306a36Sopenharmony_ci	  If unsure, say N.
101