#
# Wireless LAN device configuration
#

menuconfig WLAN
	bool "Wireless LAN"
	depends on !S390
	depends on NET
	select WIRELESS
	default y
	---help---
	  This section contains all the pre 802.11 and 802.11 wireless
	  device drivers. For a complete list of drivers and documentation
	  on them refer to the wireless wiki:

	  http://wireless.kernel.org/en/users/Drivers

if WLAN

config PCMCIA_RAYCS
	tristate "Aviator/Raytheon 2.4GHz wireless support"
	depends on PCMCIA
	select WIRELESS_EXT
	select WEXT_SPY
	select WEXT_PRIV
	---help---
	  Say Y here if you intend to attach an Aviator/Raytheon PCMCIA
	  (PC-card) wireless Ethernet networking card to your computer.
	  Please read the file <file:Documentation/networking/ray_cs.txt> for
	  details.

	  To compile this driver as a module, choose M here: the module will be
	  called ray_cs.  If unsure, say N.

config LIBERTAS_THINFIRM
	tristate "Marvell 8xxx Libertas WLAN driver support with thin firmware"
	depends on MAC80211
	select FW_LOADER
	---help---
	  A library for Marvell Libertas 8xxx devices using thinfirm.

config LIBERTAS_THINFIRM_DEBUG
	bool "Enable full debugging output in the Libertas thin firmware module."
	depends on LIBERTAS_THINFIRM
	---help---
	  Debugging support.

config LIBERTAS_THINFIRM_USB
	tristate "Marvell Libertas 8388 USB 802.11b/g cards with thin firmware"
	depends on LIBERTAS_THINFIRM && USB
	---help---
	  A driver for Marvell Libertas 8388 USB devices using thinfirm.

config AIRO
	tristate "Cisco/Aironet 34X/35X/4500/4800 ISA and PCI cards"
	depends on ISA_DMA_API && (PCI || BROKEN)
	select WIRELESS_EXT
	select CRYPTO
	select WEXT_SPY
	select WEXT_PRIV
	---help---
	  This is the standard Linux driver to support Cisco/Aironet ISA and
	  PCI 802.11 wireless cards.
	  It supports the new 802.11b cards from Cisco (Cisco 34X, Cisco 35X
	  - with or without encryption) as well as card before the Cisco
	  acquisition (Aironet 4500, Aironet 4800, Aironet 4800B).

	  This driver support both the standard Linux Wireless Extensions
	  and Cisco proprietary API, so both the Linux Wireless Tools and the
	  Cisco Linux utilities can be used to configure the card.

	  The driver can be compiled as a module and will be named "airo".

config ATMEL
      tristate "Atmel at76c50x chipset  802.11b support"
      depends on (PCI || PCMCIA)
      select WIRELESS_EXT
      select WEXT_PRIV
      select FW_LOADER
      select CRC32
       ---help---
        A driver 802.11b wireless cards based on the Atmel fast-vnet
        chips. This driver supports standard Linux wireless extensions.

        Many  cards based on this chipset do not have flash memory
        and need their firmware loaded at start-up. If yours is
        one of these, you will need to provide a firmware image
        to be loaded into the card by the driver. The Atmel
        firmware package can be downloaded from
        <http://www.thekelleys.org.uk/atmel>

config PCI_ATMEL
      tristate "Atmel at76c506 PCI cards"
      depends on ATMEL && PCI
       ---help---
        Enable support for PCI and mini-PCI cards containing the
        Atmel at76c506 chip.

config PCMCIA_ATMEL
	tristate "Atmel at76c502/at76c504 PCMCIA cards"
	depends on ATMEL && PCMCIA
	select WIRELESS_EXT
	select FW_LOADER
	select CRC32
	---help---
	  Enable support for PCMCIA cards containing the
	  Atmel at76c502 and at76c504 chips.

config AT76C50X_USB
        tristate "Atmel at76c503/at76c505/at76c505a USB cards"
        depends on MAC80211 && USB
        select FW_LOADER
        ---help---
          Enable support for USB Wireless devices using Atmel at76c503,
          at76c505 or at76c505a chips.

config AIRO_CS
	tristate "Cisco/Aironet 34X/35X/4500/4800 PCMCIA cards"
	depends on PCMCIA && (BROKEN || !M32R)
	select WIRELESS_EXT
	select WEXT_SPY
	select WEXT_PRIV
	select CRYPTO
	select CRYPTO_AES
	---help---
	  This is the standard Linux driver to support Cisco/Aironet PCMCIA
	  802.11 wireless cards.  This driver is the same as the Aironet
	  driver part of the Linux Pcmcia package.
	  It supports the new 802.11b cards from Cisco (Cisco 34X, Cisco 35X
	  - with or without encryption) as well as card before the Cisco
	  acquisition (Aironet 4500, Aironet 4800, Aironet 4800B). It also
	  supports OEM of Cisco such as the DELL TrueMobile 4800 and Xircom
	  802.11b cards.

	  This driver support both the standard Linux Wireless Extensions
	  and Cisco proprietary API, so both the Linux Wireless Tools and the
	  Cisco Linux utilities can be used to configure the card.

config PCMCIA_WL3501
	tristate "Planet WL3501 PCMCIA cards"
	depends on EXPERIMENTAL && PCMCIA
	select WIRELESS_EXT
	select WEXT_SPY
	help
	  A driver for WL3501 PCMCIA 802.11 wireless cards made by Planet.
	  It has basic support for Linux wireless extensions and initial
	  micro support for ethtool.

config PRISM54
	tristate 'Intersil Prism GT/Duette/Indigo PCI/Cardbus (DEPRECATED)'
	depends on PCI && EXPERIMENTAL
	select WIRELESS_EXT
	select WEXT_SPY
	select WEXT_PRIV
	select FW_LOADER
	---help---
	  This enables support for FullMAC PCI/Cardbus prism54 devices. This
	  driver is now deprecated in favor for the SoftMAC driver, p54pci.
	  p54pci supports FullMAC PCI/Cardbus devices as well. For details on
	  the scheduled removal of this driver on the kernel see the feature
	  removal schedule:

	  Documentation/feature-removal-schedule.txt

	  For more information refer to the p54 wiki:

	  http://wireless.kernel.org/en/users/Drivers/p54

	  Note: You need a motherboard with DMA support to use any of these cards

	  When built as module you get the module prism54

config USB_ZD1201
	tristate "USB ZD1201 based Wireless device support"
	depends on USB
	select WIRELESS_EXT
	select WEXT_PRIV
	select FW_LOADER
	---help---
	  Say Y if you want to use wireless LAN adapters based on the ZyDAS
	  ZD1201 chip.

	  This driver makes the adapter appear as a normal Ethernet interface,
	  typically on wlan0.

	  The zd1201 device requires external firmware to be loaded.
	  This can be found at http://linux-lc100020.sourceforge.net/

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

config USB_NET_RNDIS_WLAN
	tristate "Wireless RNDIS USB support"
	depends on USB && EXPERIMENTAL
	depends on CFG80211
	select USB_USBNET
	select USB_NET_CDCETHER
	select USB_NET_RNDIS_HOST
	---help---
	  This is a driver for wireless RNDIS devices.
	  These are USB based adapters found in devices such as:

	  Buffalo WLI-U2-KG125S
	  U.S. Robotics USR5421
	  Belkin F5D7051
	  Linksys WUSB54GSv2
	  Linksys WUSB54GSC
	  Asus WL169gE
	  Eminent EM4045
	  BT Voyager 1055
	  Linksys WUSB54GSv1
	  U.S. Robotics USR5420
	  BUFFALO WLI-USB-G54

	  All of these devices are based on Broadcom 4320 chip which is the
	  only wireless RNDIS chip known to date.

	  If you choose to build a module, it'll be called rndis_wlan.

source "drivers/net/wireless/rtl818x/Kconfig"

config ADM8211
	tristate "ADMtek ADM8211 support"
	depends on MAC80211 && PCI && EXPERIMENTAL
	select CRC32
	select EEPROM_93CX6
	---help---
	  This driver is for ADM8211A, ADM8211B, and ADM8211C based cards.
	  These are PCI/mini-PCI/Cardbus 802.11b chips found in cards such as:

	  Xterasys Cardbus XN-2411b
	  Blitz NetWave Point PC
	  TrendNet 221pc
	  Belkin F5D6001
	  SMC 2635W
	  Linksys WPC11 v1
	  Fiberline FL-WL-200X
	  3com Office Connect (3CRSHPW796)
	  Corega WLPCIB-11
	  SMC 2602W V2 EU
	  D-Link DWL-520 Revision C

	  However, some of these cards have been replaced with other chips
	  like the RTL8180L (Xterasys Cardbus XN-2411b, Belkin F5D6001) or
	  the Ralink RT2400 (SMC2635W) without a model number change.

	  Thanks to Infineon-ADMtek for their support of this driver.

config MAC80211_HWSIM
	tristate "Simulated radio testing tool for mac80211"
	depends on MAC80211
	---help---
	  This driver is a developer testing tool that can be used to test
	  IEEE 802.11 networking stack (mac80211) functionality. This is not
	  needed for normal wireless LAN usage and is only for testing. See
	  Documentation/networking/mac80211_hwsim for more information on how
	  to use this tool.

	  To compile this driver as a module, choose M here: the module will be
	  called mac80211_hwsim.  If unsure, say N.

config MWL8K
	tristate "Marvell 88W8xxx PCI/PCIe Wireless support"
	depends on MAC80211 && PCI && EXPERIMENTAL
	---help---
	  This driver supports Marvell TOPDOG 802.11 wireless cards.

	  To compile this driver as a module, choose M here: the module
	  will be called mwl8k.  If unsure, say N.

source "drivers/net/wireless/ath/Kconfig"
source "drivers/net/wireless/b43/Kconfig"
source "drivers/net/wireless/b43legacy/Kconfig"
source "drivers/net/wireless/hostap/Kconfig"
source "drivers/net/wireless/ipw2x00/Kconfig"
source "drivers/net/wireless/iwlwifi/Kconfig"
source "drivers/net/wireless/iwmc3200wifi/Kconfig"
source "drivers/net/wireless/libertas/Kconfig"
source "drivers/net/wireless/orinoco/Kconfig"
source "drivers/net/wireless/p54/Kconfig"
source "drivers/net/wireless/rt2x00/Kconfig"
source "drivers/net/wireless/wl12xx/Kconfig"
source "drivers/net/wireless/zd1211rw/Kconfig"

endif # WLAN
