config MAC80211
	tristate "Generic IEEE 802.11 Networking Stack (mac80211)"
	select CRYPTO
	select CRYPTO_ECB
	select CRYPTO_ARC4
	select CRYPTO_AES
	select CRC32
	select WIRELESS_EXT
	select CFG80211
	select NET_SCH_FIFO
	---help---
	  This option enables the hardware independent IEEE 802.11
	  networking stack.

menu "Rate control algorithm selection"
	depends on MAC80211 != n

choice
	prompt "Default rate control algorithm"
	default MAC80211_RC_DEFAULT_PID
	---help---
	  This option selects the default rate control algorithm
	  mac80211 will use. Note that this default can still be
	  overriden through the ieee80211_default_rc_algo module
	  parameter if different algorithms are available.

config MAC80211_RC_DEFAULT_PID
	bool "PID controller based rate control algorithm"
	select MAC80211_RC_PID
	---help---
	  Select the PID controller based rate control as the
	  default rate control algorithm. You should choose
	  this unless you know what you are doing.

config MAC80211_RC_DEFAULT_NONE
	bool "No default algorithm"
	depends on EMBEDDED
	help
	  Selecting this option will select no default algorithm
	  and allow you to not build any. Do not choose this
	  option unless you know your driver comes with another
	  suitable algorithm.
endchoice

comment "Selecting 'y' for an algorithm will"
comment "build the algorithm into mac80211."

config MAC80211_RC_DEFAULT
	string
	default "pid" if MAC80211_RC_DEFAULT_PID
	default ""

config MAC80211_RC_PID
	tristate "PID controller based rate control algorithm"
	---help---
	  This option enables a TX rate control algorithm for
	  mac80211 that uses a PID controller to select the TX
	  rate.

	  Say Y or M unless you're sure you want to use a
	  different rate control algorithm.

endmenu

config MAC80211_MESH
	bool "Enable mac80211 mesh networking (pre-802.11s) support"
	depends on MAC80211 && EXPERIMENTAL
	---help---
	 This options enables support of Draft 802.11s mesh networking.
	 The implementation is based on Draft 1.08 of the Mesh Networking
	 amendment. For more information visit http://o11s.org/.


config MAC80211_LEDS
	bool "Enable LED triggers"
	depends on MAC80211 && LEDS_TRIGGERS
	---help---
	  This option enables a few LED triggers for different
	  packet receive/transmit events.

config MAC80211_DEBUGFS
	bool "Export mac80211 internals in DebugFS"
	depends on MAC80211 && DEBUG_FS
	---help---
	  Select this to see extensive information about
	  the internal state of mac80211 in debugfs.

	  Say N unless you know you need this.

config MAC80211_DEBUG_PACKET_ALIGNMENT
	bool "Enable packet alignment debugging"
	depends on MAC80211
	help
	  This option is recommended for driver authors and strongly
	  discouraged for everybody else, it will trigger a warning
	  when a driver hands mac80211 a buffer that is aligned in
	  a way that will cause problems with the IP stack on some
	  architectures.

	  Say N unless you're writing a mac80211 based driver.

config MAC80211_DEBUG
	bool "Enable debugging output"
	depends on MAC80211
	---help---
	  This option will enable debug tracing output for the
	  ieee80211 network stack.

	  If you are not trying to debug or develop the ieee80211
	  subsystem, you most likely want to say N here.

config MAC80211_HT_DEBUG
	bool "Enable HT debugging output"
	depends on MAC80211_DEBUG
	---help---
	  This option enables 802.11n High Throughput features
	  debug tracing output.

	  If you are not trying to debug of develop the ieee80211
	  subsystem, you most likely want to say N here.

config MAC80211_VERBOSE_DEBUG
	bool "Verbose debugging output"
	depends on MAC80211_DEBUG

config MAC80211_LOWTX_FRAME_DUMP
	bool "Debug frame dumping"
	depends on MAC80211_DEBUG
	---help---
	  Selecting this option will cause the stack to
	  print a message for each frame that is handed
	  to the lowlevel driver for transmission. This
	  message includes all MAC addresses and the
	  frame control field.

	  If unsure, say N and insert the debugging code
	  you require into the driver you are debugging.

config TKIP_DEBUG
	bool "TKIP debugging"
	depends on MAC80211_DEBUG

config MAC80211_DEBUG_COUNTERS
	bool "Extra statistics for TX/RX debugging"
	depends on MAC80211_DEBUG

config MAC80211_IBSS_DEBUG
	bool "Support for IBSS testing"
	depends on MAC80211_DEBUG
	---help---
	  Say Y here if you intend to debug the IBSS code.

config MAC80211_VERBOSE_PS_DEBUG
	bool "Verbose powersave mode debugging"
	depends on MAC80211_DEBUG
	---help---
	  Say Y here to print out verbose powersave
	  mode debug messages.

config MAC80211_VERBOSE_MPL_DEBUG
	bool "Verbose mesh peer link debugging"
	depends on MAC80211_DEBUG && MAC80211_MESH
	---help---
	  Say Y here to print out verbose mesh peer link
	  debug messages.
