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

config LCS
	tristate "Lan Channel Station Interface"
	depends on NETDEVICES && (NET_ETHERNET || TR || FDDI)
	help
	   Select this option if you want to use LCS networking  on IBM S/390
  	   or zSeries. This device driver supports Token Ring (IEEE 802.5),
  	   FDDI (IEEE 802.7) and Ethernet. 
	   This option is also available as a module which will be
	   called lcs.ko. If you do not know what it is, it's safe to say "Y".

config CTC
	tristate "CTC device support"
	depends on NETDEVICES
	help
	  Select this option if you want to use channel-to-channel networking
	  on IBM S/390 or zSeries. This device driver supports real CTC
	  coupling using ESCON. It also supports virtual CTCs when running
	  under VM. It will use the channel device configuration if this is
	  available.  This option is also available as a module which will be
	  called ctc.ko.  If you do not know what it is, it's safe to say "Y".

config IUCV
	tristate "IUCV support (VM only)"
	help
	  Select this option if you want to use inter-user communication
	  under VM or VIF. If unsure, say "Y" to enable a fast communication
	  link between VM guests. At boot time the user ID of the guest needs
	  to be passed to the kernel. Note that both kernels need to be
	  compiled with this option and both need to be booted with the user ID
	  of the other VM guest.

config NETIUCV
	tristate "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 for zSeries and S7390 system
	  running on the other VM guest. This option is also available
	  as a module which will be called netiucv.ko. If unsure, say "Y".

config SMSGIUCV
	tristate "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 CLAW
	tristate "CLAW device support"
	depends on 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 here:  The module will be called
	  claw.ko to compile into the kernel choose Y

config QETH
	tristate "Gigabit Ethernet device support"
	depends on NETDEVICES && IP_MULTICAST && QDIO
	help
	  This driver supports the IBM S/390 and zSeries 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://www10.software.ibm.com/developerworks/opensource/linux390>

	  To compile this driver as a module, choose M here: the
	  module will be called qeth.ko.


comment "Gigabit Ethernet default settings"
	depends on QETH

config QETH_IPV6
	bool "IPv6 support for gigabit ethernet"
	depends on (QETH = IPV6) || (QETH && IPV6 = 'y')
	help
	  If CONFIG_QETH is switched on, this option will include IPv6
	  support in the qeth device driver.
	
config QETH_VLAN
	bool "VLAN support for gigabit ethernet"
	depends on (QETH = VLAN_8021Q) || (QETH && VLAN_8021Q = 'y')
	help
	  If CONFIG_QETH is switched on, this option will include IEEE
	  802.1q VLAN support in the qeth device driver.

config QETH_PERF_STATS
	bool "Performance statistics in /proc"
	depends on QETH
	help
	  When switched on, this option will add a file in the proc-fs
	  (/proc/qeth_perf_stats) containing performance statistics. It
	  may slightly impact performance, so this is only recommended for
	  internal tuning of the device driver.

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

endmenu
