xref: /linux/drivers/nvme/target/Kconfig (revision 5e3b7009f116f684ac6b93d8924506154f3b1f6d)
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_PASSTHRU
21	bool "NVMe Target Passthrough support"
22	depends on NVME_TARGET
23	depends on NVME_CORE=y || NVME_CORE=NVME_TARGET
24	help
25	  This enables target side NVMe passthru controller support for the
26	  NVMe Over Fabrics protocol. It allows for hosts to manage and
27	  directly access an actual NVMe controller residing on the target
28	  side, including executing Vendor Unique Commands.
29
30	  If unsure, say N.
31
32config NVME_TARGET_LOOP
33	tristate "NVMe loopback device support"
34	depends on NVME_TARGET
35	select NVME_FABRICS
36	select SG_POOL
37	help
38	  This enables the NVMe loopback device support, which can be useful
39	  to test NVMe host and target side features.
40
41	  If unsure, say N.
42
43config NVME_TARGET_RDMA
44	tristate "NVMe over Fabrics RDMA target support"
45	depends on INFINIBAND && INFINIBAND_ADDR_TRANS
46	depends on NVME_TARGET
47	select SGL_ALLOC
48	help
49	  This enables the NVMe RDMA target support, which allows exporting NVMe
50	  devices over RDMA.
51
52	  If unsure, say N.
53
54config NVME_TARGET_FC
55	tristate "NVMe over Fabrics FC target driver"
56	depends on NVME_TARGET
57	depends on HAS_DMA
58	select SGL_ALLOC
59	help
60	  This enables the NVMe FC target support, which allows exporting NVMe
61	  devices over FC.
62
63	  If unsure, say N.
64
65config NVME_TARGET_FCLOOP
66	tristate "NVMe over Fabrics FC Transport Loopback Test driver"
67	depends on NVME_TARGET
68	select NVME_FABRICS
69	select SG_POOL
70	depends on NVME_FC
71	depends on NVME_TARGET_FC
72	help
73	  This enables the NVMe FC loopback test support, which can be useful
74	  to test NVMe-FC transport interfaces.
75
76	  If unsure, say N.
77
78config NVME_TARGET_TCP
79	tristate "NVMe over Fabrics TCP target support"
80	depends on INET
81	depends on NVME_TARGET
82	help
83	  This enables the NVMe TCP target support, which allows exporting NVMe
84	  devices over TCP.
85
86	  If unsure, say N.
87
88config NVME_TARGET_TCP_TLS
89	bool "NVMe over Fabrics TCP target TLS encryption support"
90	depends on NVME_TARGET_TCP
91	select NET_HANDSHAKE
92	help
93	  Enables TLS encryption for the NVMe TCP target using the netlink handshake API.
94
95	  The TLS handshake daemon is available at
96	  https://github.com/oracle/ktls-utils.
97
98	  If unsure, say N.
99
100config NVME_TARGET_AUTH
101	bool "NVMe over Fabrics In-band Authentication in target side"
102	depends on NVME_TARGET
103	select NVME_AUTH
104	help
105	  This enables support for NVMe over Fabrics In-band Authentication in
106	  target side.
107
108	  If unsure, say N.
109