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