menu "S/390 network device drivers"
	depends on NETDEVICES && S390

config LCS
	def_tristate m
	prompt "Lan Channel Station Interface"
	depends on CCW && NETDEVICES && (NET_ETHERNET || TR || FDDI)
	help
	   Select this option if you want to use LCS networking on IBM System z.
	   This device driver supports Token Ring (IEEE 802.5),
	   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 CLAW
	def_tristate m
	prompt "CLAW device support"
	depends on CCW && NETDEVICES
	help
	  This driver supports channel attached CLAW devices.
	  CLAW is Common Link Access for Workstation.  Common devices
          that use CLAW are RS/6000s, Cisco Routers (CIP) and 3172 devices.
	  To compile as a module, choose M. The module name is claw.
	  To compile into the kernel, choose Y.

config QETH
	def_tristate y
	prompt "Gigabit Ethernet device support"
	depends on CCW && NETDEVICES && IP_MULTICAST && QDIO
	help
	  This driver supports the IBM System z OSA Express adapters
	  in QDIO mode (all media types), HiperSockets interfaces and VM GuestLAN
	  interfaces in QDIO and HIPER mode.
	
	  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 QETH_IPV6
	def_bool y if (QETH_L3 = IPV6) || (QETH_L3 && IPV6 = 'y')

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

endmenu
