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 NVME_KEYRING if NVME_TARGET_TCP_TLS
8	select KEYS if NVME_TARGET_TCP_TLS
9	select SGL_ALLOC
10	help
11	  This enabled target side support for the NVMe protocol, that is
12	  it allows the Linux kernel to implement NVMe subsystems and
13	  controllers and export Linux block devices as NVMe namespaces.
14	  You need to select at least one of the transports below to make this
15	  functionality useful.
16
17	  To configure the NVMe target you probably want to use the nvmetcli
18	  tool from http://git.infradead.org/users/hch/nvmetcli.git.
19
20config NVME_TARGET_DEBUGFS
21        bool "NVMe Target debugfs support"
22	depends on NVME_TARGET
23	help
24	  This enables debugfs support to display the connected controllers
25	  to each subsystem
26
27	  If unsure, say N.
28
29config NVME_TARGET_PASSTHRU
30	bool "NVMe Target Passthrough support"
31	depends on NVME_TARGET
32	depends on NVME_CORE=y || NVME_CORE=NVME_TARGET
33	help
34	  This enables target side NVMe passthru controller support for the
35	  NVMe Over Fabrics protocol. It allows for hosts to manage and
36	  directly access an actual NVMe controller residing on the target
37	  side, including executing Vendor Unique Commands.
38
39	  If unsure, say N.
40
41config NVME_TARGET_LOOP
42	tristate "NVMe loopback device support"
43	depends on NVME_TARGET
44	select NVME_FABRICS
45	select SG_POOL
46	help
47	  This enables the NVMe loopback device support, which can be useful
48	  to test NVMe host and target side features.
49
50	  If unsure, say N.
51
52config NVME_TARGET_RDMA
53	tristate "NVMe over Fabrics RDMA target support"
54	depends on INFINIBAND && INFINIBAND_ADDR_TRANS
55	depends on NVME_TARGET
56	select SGL_ALLOC
57	help
58	  This enables the NVMe RDMA target support, which allows exporting NVMe
59	  devices over RDMA.
60
61	  If unsure, say N.
62
63config NVME_TARGET_FC
64	tristate "NVMe over Fabrics FC target driver"
65	depends on NVME_TARGET
66	depends on HAS_DMA
67	select SGL_ALLOC
68	help
69	  This enables the NVMe FC target support, which allows exporting NVMe
70	  devices over FC.
71
72	  If unsure, say N.
73
74config NVME_TARGET_FCLOOP
75	tristate "NVMe over Fabrics FC Transport Loopback Test driver"
76	depends on NVME_TARGET
77	select NVME_FABRICS
78	select SG_POOL
79	depends on NVME_FC
80	depends on NVME_TARGET_FC
81	help
82	  This enables the NVMe FC loopback test support, which can be useful
83	  to test NVMe-FC transport interfaces.
84
85	  If unsure, say N.
86
87config NVME_TARGET_TCP
88	tristate "NVMe over Fabrics TCP target support"
89	depends on INET
90	depends on NVME_TARGET
91	help
92	  This enables the NVMe TCP target support, which allows exporting NVMe
93	  devices over TCP.
94
95	  If unsure, say N.
96
97config NVME_TARGET_TCP_TLS
98	bool "NVMe over Fabrics TCP target TLS encryption support"
99	depends on NVME_TARGET_TCP
100	select NET_HANDSHAKE
101	help
102	  Enables TLS encryption for the NVMe TCP target using the netlink handshake API.
103
104	  The TLS handshake daemon is available at
105	  https://github.com/oracle/ktls-utils.
106
107	  If unsure, say N.
108
109config NVME_TARGET_AUTH
110	bool "NVMe over Fabrics In-band Authentication in target side"
111	depends on NVME_TARGET
112	select NVME_AUTH
113	help
114	  This enables support for NVMe over Fabrics In-band Authentication in
115	  target side.
116
117	  If unsure, say N.
118