# SPDX-License-Identifier: GPL-2.0-only
#
# 9P protocol configuration
#

menuconfig NET_9P
	tristate "Plan 9 Resource Sharing Support (9P2000)"
	select NETFS_SUPPORT
	help
	  If you say Y here, you will get experimental support for
	  Plan 9 resource sharing via the 9P2000 protocol.

	  See <http://v9fs.sf.net> for more information.

	  If unsure, say N.

if NET_9P

config NET_9P_FD
	default NET_9P
	imply INET
	imply UNIX
	tristate "9P FD Transport"
	help
	  This builds support for transports over TCP, Unix sockets and
	  filedescriptors.

config NET_9P_VIRTIO
	depends on VIRTIO
	tristate "9P Virtio Transport"
	help
	  This builds support for a transports between
	  guest partitions and a host partition.

config NET_9P_XEN
	depends on XEN
	select XEN_XENBUS_FRONTEND
	tristate "9P Xen Transport"
	help
	  This builds support for a transport for 9pfs between
	  two Xen domains.

config NET_9P_USBG
	tristate "9P USB Gadget Transport"
	depends on USB_GADGET
	select CONFIGFS_FS
	select USB_LIBCOMPOSITE
	help
	  This builds support for a transport for 9pfs over
	  usb gadget.

config NET_9P_RDMA
	depends on INET && INFINIBAND && INFINIBAND_ADDR_TRANS
	tristate "9P RDMA Transport (Experimental)"
	help
	  This builds support for an RDMA transport.

config NET_9P_DEBUG
	bool "Debug information"
	help
	  Say Y if you want the 9P subsystem to log debug information.

endif
