config WIRELESS_EXT
	bool

config WEXT_CORE
	def_bool y
	depends on CFG80211_WEXT || WIRELESS_EXT

config WEXT_PROC
	def_bool y
	depends on PROC_FS
	depends on WEXT_CORE

config WEXT_SPY
	bool

config WEXT_PRIV
	bool

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_CERTIFICATION_ONUS
	bool "cfg80211 certification onus"
	depends on CFG80211 && EXPERT
	default n
	---help---
	  You should disable this option unless you are both capable
	  and willing to ensure your system will remain regulatory
	  compliant with the features available under this option.
	  Some options may still be under heavy development and
	  for whatever reason regulatory compliance has not or
	  cannot yet be verified. Regulatory verification may at
	  times only be possible until you have the final system
	  in place.

	  This option should only be enabled by system integrators
	  or distributions that have done work necessary to ensure
	  regulatory certification on the system with the enabled
	  features. Alternatively you can enable this option if
	  you are a wireless researcher and are working in a controlled
	  and approved environment by your local regulatory agency.

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_DEBUGFS
	bool "cfg80211 DebugFS entries"
	depends on CFG80211
	depends on DEBUG_FS
	---help---
	  You can enable this if you want to debugfs entries for cfg80211.

	  If unsure, say N.

config CFG80211_INTERNAL_REGDB
	bool "use statically compiled regulatory rules database"
	default n
	depends on CFG80211
	---help---
	  This option generates an internal data structure representing
	  the wireless regulatory rules described in net/wireless/db.txt
	  and includes code to query that database.  This is an alternative
	  to using CRDA for defining regulatory rules for the kernel.

	  For details see:

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

	  Most distributions have a CRDA package.  So if unsure, say N.

config CFG80211_WEXT
	bool "cfg80211 wireless extensions compatibility"
	depends on CFG80211
	select WEXT_CORE
	help
	  Enable this option if you need old userspace for wireless
	  extensions with cfg80211-based drivers.

config LIB80211
	tristate
	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.

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.
