#
# 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
	depends on n
	tristate "Aviator/Raytheon 2.4GHz wireless support"
	depends on m
	depends on PCMCIA
	depends on WIRELESS_EXT
	depends on WEXT_SPY
	depends on 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
	depends on !BACKPORT_KERNEL_2_6_27
	tristate "Marvell 8xxx Libertas WLAN driver support with thin firmware"
	depends on m
	depends on MAC80211
	select BACKPORT_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 m
	depends on LIBERTAS_THINFIRM && USB
	---help---
	  A driver for Marvell Libertas 8388 USB devices using thinfirm.

config AIRO
	depends on n
	tristate "Cisco/Aironet 34X/35X/4500/4800 ISA and PCI cards"
	depends on m
	depends on ISA_DMA_API && (PCI || BROKEN)
	depends on WIRELESS_EXT
	depends on CRYPTO
	depends on WEXT_SPY
	depends on 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
	depends on n
      tristate "Atmel at76c50x chipset  802.11b support"
      depends on m
      depends on (PCI || PCMCIA)
      depends on WIRELESS_EXT
      depends on WEXT_PRIV
      select BACKPORT_FW_LOADER
      depends on 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
	depends on n
      tristate "Atmel at76c506 PCI cards"
      depends on m
      depends on ATMEL && PCI
       ---help---
        Enable support for PCI and mini-PCI cards containing the
        Atmel at76c506 chip.

config PCMCIA_ATMEL
	depends on n
	tristate "Atmel at76c502/at76c504 PCMCIA cards"
	depends on m
	depends on ATMEL && PCMCIA
	depends on WIRELESS_EXT
	select BACKPORT_FW_LOADER
	depends on 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 m
        depends on MAC80211 && USB
        select BACKPORT_FW_LOADER
        ---help---
          Enable support for USB Wireless devices using Atmel at76c503,
          at76c505 or at76c505a chips.

config AIRO_CS
	depends on n
	tristate "Cisco/Aironet 34X/35X/4500/4800 PCMCIA cards"
	depends on m
	depends on PCMCIA && (BROKEN || !M32R)
	depends on WIRELESS_EXT
	depends on WEXT_SPY
	depends on WEXT_PRIV
	depends on CRYPTO
	depends on 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
	depends on n
	tristate "Planet WL3501 PCMCIA cards"
	depends on m
	depends on PCMCIA
	depends on WIRELESS_EXT
	depends on 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
	depends on n
	tristate 'Intersil Prism GT/Duette/Indigo PCI/Cardbus (DEPRECATED)'
	depends on m
	depends on PCI
	depends on WIRELESS_EXT
	depends on WEXT_SPY
	depends on WEXT_PRIV
	select BACKPORT_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 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
	depends on n
	tristate "USB ZD1201 based Wireless device support"
	depends on m
	depends on USB
	depends on WIRELESS_EXT
	depends on WEXT_PRIV
	select BACKPORT_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
	depends on !BACKPORT_KERNEL_2_6_29
	tristate "Wireless RNDIS USB support"
	depends on m
	depends on USB
	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 m
	depends on MAC80211 && PCI
	depends on CRC32
	depends on 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
	depends on !BACKPORT_KERNEL_2_6_31
	tristate "Simulated radio testing tool for mac80211"
	depends on m
	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 m
	depends on MAC80211 && PCI
	---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/brcm80211/Kconfig"
#source "drivers/net/wireless/hostap/Kconfig"
source "drivers/net/wireless/ipw2x00/Kconfig"
source "drivers/net/wireless/iwlwifi/Kconfig"
source "drivers/net/wireless/iwlegacy/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/rtlwifi/Kconfig"
source "drivers/net/wireless/ti/Kconfig"
source "drivers/net/wireless/zd1211rw/Kconfig"
source "drivers/net/wireless/mwifiex/Kconfig"
source "drivers/net/wireless/cw1200/Kconfig"

endif # WLAN
