1# SPDX-License-Identifier: GPL-2.0-only
2
3config NVME_TARGET
4	tristate "NVMe Target support"
5	depends on BLOCK
6	depends on CONFIGFS_FS
7	select BLK_DEV_INTEGRITY_T10 if BLK_DEV_INTEGRITY
8	select SGL_ALLOC
9	help
10	  This enabled target side support for the NVMe protocol, that is
11	  it allows the Linux kernel to implement NVMe subsystems and
12	  controllers and export Linux block devices as NVMe namespaces.
13	  You need to select at least one of the transports below to make this
14	  functionality useful.
15
16	  To configure the NVMe target you probably want to use the nvmetcli
17	  tool from http://git.infradead.org/users/hch/nvmetcli.git.
18
19config NVME_TARGET_PASSTHRU
20	bool "NVMe Target Passthrough support"
21	depends on NVME_TARGET
22	depends on NVME_CORE=y || NVME_CORE=NVME_TARGET
23	help
24	  This enables target side NVMe passthru controller support for the
25	  NVMe Over Fabrics protocol. It allows for hosts to manage and
26	  directly access an actual NVMe controller residing on the target
27	  side, including executing Vendor Unique Commands.
28
29	  If unsure, say N.
30
31config NVME_TARGET_LOOP
32	tristate "NVMe loopback device support"
33	depends on NVME_TARGET
34	select NVME_FABRICS
35	select SG_POOL
36	help
37	  This enables the NVMe loopback device support, which can be useful
38	  to test NVMe host and target side features.
39
40	  If unsure, say N.
41
42config NVME_TARGET_RDMA
43	tristate "NVMe over Fabrics RDMA target support"
44	depends on INFINIBAND && INFINIBAND_ADDR_TRANS
45	depends on NVME_TARGET
46	select SGL_ALLOC
47	help
48	  This enables the NVMe RDMA target support, which allows exporting NVMe
49	  devices over RDMA.
50
51	  If unsure, say N.
52
53config NVME_TARGET_FC
54	tristate "NVMe over Fabrics FC target driver"
55	depends on NVME_TARGET
56	depends on HAS_DMA
57	select SGL_ALLOC
58	help
59	  This enables the NVMe FC target support, which allows exporting NVMe
60	  devices over FC.
61
62	  If unsure, say N.
63
64config NVME_TARGET_FCLOOP
65	tristate "NVMe over Fabrics FC Transport Loopback Test driver"
66	depends on NVME_TARGET
67	select NVME_FABRICS
68	select SG_POOL
69	depends on NVME_FC
70	depends on NVME_TARGET_FC
71	help
72	  This enables the NVMe FC loopback test support, which can be useful
73	  to test NVMe-FC transport interfaces.
74
75	  If unsure, say N.
76
77config NVME_TARGET_TCP
78	tristate "NVMe over Fabrics TCP target support"
79	depends on INET
80	depends on NVME_TARGET
81	help
82	  This enables the NVMe TCP target support, which allows exporting NVMe
83	  devices over TCP.
84
85	  If unsure, say N.
86
87config NVME_TARGET_AUTH
88	bool "NVMe over Fabrics In-band Authentication support"
89	depends on NVME_TARGET
90	select NVME_COMMON
91	select CRYPTO
92	select CRYPTO_HMAC
93	select CRYPTO_SHA256
94	select CRYPTO_SHA512
95	select CRYPTO_DH
96	select CRYPTO_DH_RFC7919_GROUPS
97	help
98	  This enables support for NVMe over Fabrics In-band Authentication
99
100	  If unsure, say N.
101