# 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
	help
	  Select this option if you want to use LCS networking on IBM System z.
	  To compile as a module, choose M. The module name is lcs.
	  If you do not use LCS, choose N.

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 IBM's OSA Express network adapters in QDIO mode,
	  HiperSockets interfaces and z/VM virtual NICs for Guest LAN and
	  VSWITCH.

	  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
	depends on BRIDGE || BRIDGE=n
	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 QETH_OSX
	def_bool !HAVE_MARCH_Z15_FEATURES
	prompt "qeth OSX device support"
	depends on QETH
	help
	  This enables the qeth driver to support devices in OSX mode.
	  If unsure, choose N.

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

config ISM
	tristate "Support for ISM vPCI Adapter"
	depends on PCI
	imply SMC
	default n
	help
	  Select this option if you want to use the Internal Shared Memory
	  vPCI Adapter. The adapter can be used with the SMC network protocol.

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