# SPDX-License-Identifier: GPL-2.0
menu "S/390 network device drivers"
	depends on NETDEVICES && S390

config LCS
	def_tristate m
	prompt "Lan Channel Station Interface"
	depends on CCW && NETDEVICES && (ETHERNET || FDDI)
	help
	   Select this option if you want to use LCS networking on IBM System z.
	   This device driver supports FDDI (IEEE 802.7) and Ethernet.
	   To compile as a module, choose M. The module name is lcs.
	   If you do not know what it is, it's safe to choose Y.

config CTCM
	def_tristate m
	prompt "CTC and MPC SNA device support"
	depends on CCW && NETDEVICES
	help
	  Select this option if you want to use channel-to-channel
	  point-to-point networking on IBM System z.
	  This device driver supports real CTC coupling using ESCON.
	  It also supports virtual CTCs when running under VM.
	  This driver also supports channel-to-channel MPC SNA devices.
	  MPC is an SNA protocol device used by Communication Server for Linux.
	  To compile as a module, choose M. The module name is ctcm.
	  To compile into the kernel, choose Y.
	  If you do not need any channel-to-channel connection, choose N.

config NETIUCV
	def_tristate m
	prompt "IUCV network device support (VM only)"
	depends on IUCV && NETDEVICES
	help
	  Select this option if you want to use inter-user communication
	  vehicle networking under VM or VIF. It enables a fast communication
	  link between VM guests. Using ifconfig a point-to-point connection
	  can be established to the Linux on IBM System z
	  running on the other VM guest. To compile as a module, choose M.
	  The module name is netiucv. If unsure, choose Y.

config SMSGIUCV
	def_tristate m
	prompt "IUCV special message support (VM only)"
	depends on IUCV
	help
	  Select this option if you want to be able to receive SMSG messages
	  from other VM guest systems.

config SMSGIUCV_EVENT
	def_tristate m
	prompt "Deliver IUCV special messages as uevents (VM only)"
	depends on SMSGIUCV
	help
	  Select this option to deliver CP special messages (SMSGs) as
	  uevents.  The driver handles only those special messages that
	  start with "APP".

	  To compile as a module, choose M. The module name is "smsgiucv_app".

config QETH
	def_tristate y
	prompt "Gigabit Ethernet device support"
	depends on CCW && NETDEVICES && IP_MULTICAST && QDIO && ETHERNET
	help
	  This driver supports the IBM System z OSA Express adapters
	  in QDIO mode (all media types), HiperSockets interfaces and z/VM
	  virtual NICs for Guest LAN and VSWITCH.
	
	  For details please refer to the documentation provided by IBM at
	  <http://www.ibm.com/developerworks/linux/linux390>

	  To compile this driver as a module, choose M.
	  The module name is qeth.

config QETH_L2
	def_tristate y
	prompt "qeth layer 2 device support"
	depends on QETH
	help
	  Select this option to be able to run qeth devices in layer 2 mode.
	  To compile as a module, choose M. The module name is qeth_l2.
	  If unsure, choose y.

config QETH_L3
	def_tristate y
	prompt "qeth layer 3 device support"
	depends on QETH
	help
	  Select this option to be able to run qeth devices in layer 3 mode.
	  To compile as a module choose M. The module name is qeth_l3.
	  If unsure, choose Y.

config CCWGROUP
	tristate
	default (LCS || CTCM || QETH)

config ISM
	tristate "Support for ISM vPCI Adapter"
	depends on PCI && SMC
	default n
	help
	  Select this option if you want to use the Internal Shared Memory
	  vPCI Adapter.

	  To compile as a module choose M. The module name is ism.
	  If unsure, choose N.
endmenu
