config CFG80211
	tristate "cfg80211 - wireless configuration API"
	depends on RFKILL || !RFKILL
	---help---
	  cfg80211 is the Linux wireless LAN (802.11) configuration API.
	  Enable this if you have a wireless device.

	  For more information refer to documentation on the wireless wiki:

	  http://wireless.kernel.org/en/developers/Documentation/cfg80211

	  When built as a module it will be called cfg80211.

config NL80211_TESTMODE
	bool "nl80211 testmode command"
	depends on CFG80211
	help
	  The nl80211 testmode command helps implementing things like
	  factory calibration or validation tools for wireless chips.

	  Select this option ONLY for kernels that are specifically
	  built for such purposes.

	  Debugging tools that are supposed to end up in the hands of
	  users should better be implemented with debugfs.

	  Say N.

config CFG80211_DEVELOPER_WARNINGS
	bool "enable developer warnings"
	depends on CFG80211
	default n
	help
	  This option enables some additional warnings that help
	  cfg80211 developers and driver developers, but that can
	  trigger due to races with userspace.

	  For example, when a driver reports that it was disconnected
	  from the AP, but the user disconnects manually at the same
	  time, the warning might trigger spuriously due to races.

	  Say Y only if you are developing cfg80211 or a driver based
	  on it (or mac80211).


config CFG80211_REG_DEBUG
	bool "cfg80211 regulatory debugging"
	depends on CFG80211
	default n
	---help---
	  You can enable this if you want to debug regulatory changes.
	  For more information on cfg80211 regulatory refer to the wireless
	  wiki:

	  http://wireless.kernel.org/en/developers/Regulatory

	  If unsure, say N.

config CFG80211_DEFAULT_PS
	bool "enable powersave by default"
	depends on CFG80211
	default y
	help
	  This option enables powersave mode by default.

	  If this causes your applications to misbehave you should fix your
	  applications instead -- they need to register their network
	  latency requirement, see Documentation/power/pm_qos_interface.txt.

config CFG80211_DEFAULT_PS_VALUE
	int
	default 1 if CFG80211_DEFAULT_PS
	default 0

config CFG80211_DEBUGFS
	bool "cfg80211 DebugFS entries"
	depends on CFG80211 && DEBUG_FS
	---help---
	  You can enable this if you want to debugfs entries for cfg80211.

	  If unsure, say N.

config WIRELESS_OLD_REGULATORY
	bool "Old wireless static regulatory definitions"
	default n
	---help---
	  This option enables the old static regulatory information
	  and uses it within the new framework. This option is available
	  for historical reasons and it is advised to leave it off.

	  For details see:

	  http://wireless.kernel.org/en/developers/Regulatory

	  Say N and if you say Y, please tell us why. The default is N.

config WIRELESS_EXT
	bool "Wireless extensions"
	default y
	---help---
	  This option enables the legacy wireless extensions
	  (wireless network interface configuration via ioctls.)

	  Say Y unless you've upgraded all your userspace to use
	  nl80211 instead of wireless extensions.

config WIRELESS_EXT_SYSFS
	bool "Wireless extensions sysfs files"
	default y
	depends on WIRELESS_EXT && SYSFS
	help
	  This option enables the deprecated wireless statistics
	  files in /sys/class/net/*/wireless/. The same information
	  is available via the ioctls as well.

	  Say Y if you have programs using it, like old versions of
	  hal.

config LIB80211
	tristate "Common routines for IEEE802.11 drivers"
	default n
	help
	  This options enables a library of common routines used
	  by IEEE802.11 wireless LAN drivers.

	  Drivers should select this themselves if needed.  Say Y if
	  you want this built into your kernel.

config LIB80211_CRYPT_WEP
	tristate

config LIB80211_CRYPT_CCMP
	tristate

config LIB80211_CRYPT_TKIP
	tristate

config LIB80211_DEBUG
	bool "lib80211 debugging messages"
	depends on LIB80211
	default n
	---help---
	  You can enable this if you want verbose debugging messages
	  from lib80211.

	  If unsure, say N.
