162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ciconfig MAC80211
362306a36Sopenharmony_ci	tristate "Generic IEEE 802.11 Networking Stack (mac80211)"
462306a36Sopenharmony_ci	depends on CFG80211
562306a36Sopenharmony_ci	select CRYPTO
662306a36Sopenharmony_ci	select CRYPTO_LIB_ARC4
762306a36Sopenharmony_ci	select CRYPTO_AES
862306a36Sopenharmony_ci	select CRYPTO_CCM
962306a36Sopenharmony_ci	select CRYPTO_GCM
1062306a36Sopenharmony_ci	select CRYPTO_CMAC
1162306a36Sopenharmony_ci	select CRC32
1262306a36Sopenharmony_ci	help
1362306a36Sopenharmony_ci	  This option enables the hardware independent IEEE 802.11
1462306a36Sopenharmony_ci	  networking stack.
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_cicomment "CFG80211 needs to be enabled for MAC80211"
1762306a36Sopenharmony_ci	depends on CFG80211=n
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ciif MAC80211 != n
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ciconfig MAC80211_HAS_RC
2262306a36Sopenharmony_ci	bool
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ciconfig MAC80211_RC_MINSTREL
2562306a36Sopenharmony_ci	bool "Minstrel" if EXPERT
2662306a36Sopenharmony_ci	select MAC80211_HAS_RC
2762306a36Sopenharmony_ci	default y
2862306a36Sopenharmony_ci	help
2962306a36Sopenharmony_ci	  This option enables the 'minstrel' TX rate control algorithm
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_cichoice
3262306a36Sopenharmony_ci	prompt "Default rate control algorithm"
3362306a36Sopenharmony_ci	depends on MAC80211_HAS_RC
3462306a36Sopenharmony_ci	default MAC80211_RC_DEFAULT_MINSTREL
3562306a36Sopenharmony_ci	help
3662306a36Sopenharmony_ci	  This option selects the default rate control algorithm
3762306a36Sopenharmony_ci	  mac80211 will use. Note that this default can still be
3862306a36Sopenharmony_ci	  overridden through the ieee80211_default_rc_algo module
3962306a36Sopenharmony_ci	  parameter if different algorithms are available.
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ciconfig MAC80211_RC_DEFAULT_MINSTREL
4262306a36Sopenharmony_ci	bool "Minstrel"
4362306a36Sopenharmony_ci	depends on MAC80211_RC_MINSTREL
4462306a36Sopenharmony_ci	help
4562306a36Sopenharmony_ci	  Select Minstrel as the default rate control algorithm.
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ciendchoice
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ciconfig MAC80211_RC_DEFAULT
5162306a36Sopenharmony_ci	string
5262306a36Sopenharmony_ci	default "minstrel_ht" if MAC80211_RC_DEFAULT_MINSTREL
5362306a36Sopenharmony_ci	default ""
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ciendif
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_cicomment "Some wireless drivers require a rate control algorithm"
5862306a36Sopenharmony_ci	depends on MAC80211 && MAC80211_HAS_RC=n
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ciconfig MAC80211_MESH
6162306a36Sopenharmony_ci	bool "Enable mac80211 mesh networking support"
6262306a36Sopenharmony_ci	depends on MAC80211
6362306a36Sopenharmony_ci	help
6462306a36Sopenharmony_ci	  Select this option to enable 802.11 mesh operation in mac80211
6562306a36Sopenharmony_ci	  drivers that support it.  802.11 mesh connects multiple stations
6662306a36Sopenharmony_ci	  over (possibly multi-hop) wireless links to form a single logical
6762306a36Sopenharmony_ci	  LAN.
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ciconfig MAC80211_LEDS
7062306a36Sopenharmony_ci	bool "Enable LED triggers"
7162306a36Sopenharmony_ci	depends on MAC80211
7262306a36Sopenharmony_ci	depends on LEDS_CLASS=y || LEDS_CLASS=MAC80211
7362306a36Sopenharmony_ci	select LEDS_TRIGGERS
7462306a36Sopenharmony_ci	help
7562306a36Sopenharmony_ci	  This option enables a few LED triggers for different
7662306a36Sopenharmony_ci	  packet receive/transmit events.
7762306a36Sopenharmony_ci
7862306a36Sopenharmony_ciconfig MAC80211_DEBUGFS
7962306a36Sopenharmony_ci	bool "Export mac80211 internals in DebugFS"
8062306a36Sopenharmony_ci	depends on MAC80211 && DEBUG_FS
8162306a36Sopenharmony_ci	help
8262306a36Sopenharmony_ci	  Select this to see extensive information about
8362306a36Sopenharmony_ci	  the internal state of mac80211 in debugfs.
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_ci	  Say N unless you know you need this.
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_ciconfig MAC80211_MESSAGE_TRACING
8862306a36Sopenharmony_ci	bool "Trace all mac80211 debug messages"
8962306a36Sopenharmony_ci	depends on MAC80211
9062306a36Sopenharmony_ci	help
9162306a36Sopenharmony_ci	  Select this option to have mac80211 register the
9262306a36Sopenharmony_ci	  mac80211_msg trace subsystem with tracepoints to
9362306a36Sopenharmony_ci	  collect all debugging messages, independent of
9462306a36Sopenharmony_ci	  printing them into the kernel log.
9562306a36Sopenharmony_ci
9662306a36Sopenharmony_ci	  The overhead in this option is that all the messages
9762306a36Sopenharmony_ci	  need to be present in the binary and formatted at
9862306a36Sopenharmony_ci	  runtime for tracing.
9962306a36Sopenharmony_ci
10062306a36Sopenharmony_cimenuconfig MAC80211_DEBUG_MENU
10162306a36Sopenharmony_ci	bool "Select mac80211 debugging features"
10262306a36Sopenharmony_ci	depends on MAC80211
10362306a36Sopenharmony_ci	help
10462306a36Sopenharmony_ci	  This option collects various mac80211 debug settings.
10562306a36Sopenharmony_ci
10662306a36Sopenharmony_ciconfig MAC80211_NOINLINE
10762306a36Sopenharmony_ci	bool "Do not inline TX/RX handlers"
10862306a36Sopenharmony_ci	depends on MAC80211_DEBUG_MENU
10962306a36Sopenharmony_ci	help
11062306a36Sopenharmony_ci	  This option affects code generation in mac80211, when
11162306a36Sopenharmony_ci	  selected some functions are marked "noinline" to allow
11262306a36Sopenharmony_ci	  easier debugging of problems in the transmit and receive
11362306a36Sopenharmony_ci	  paths.
11462306a36Sopenharmony_ci
11562306a36Sopenharmony_ci	  This option increases code size a bit and inserts a lot
11662306a36Sopenharmony_ci	  of function calls in the code, but is otherwise safe to
11762306a36Sopenharmony_ci	  enable.
11862306a36Sopenharmony_ci
11962306a36Sopenharmony_ci	  If unsure, say N unless you expect to be finding problems
12062306a36Sopenharmony_ci	  in mac80211.
12162306a36Sopenharmony_ci
12262306a36Sopenharmony_ciconfig MAC80211_VERBOSE_DEBUG
12362306a36Sopenharmony_ci	bool "Verbose debugging output"
12462306a36Sopenharmony_ci	depends on MAC80211_DEBUG_MENU
12562306a36Sopenharmony_ci	help
12662306a36Sopenharmony_ci	  Selecting this option causes mac80211 to print out
12762306a36Sopenharmony_ci	  many debugging messages. It should not be selected
12862306a36Sopenharmony_ci	  on production systems as some of the messages are
12962306a36Sopenharmony_ci	  remotely triggerable.
13062306a36Sopenharmony_ci
13162306a36Sopenharmony_ci	  Do not select this option.
13262306a36Sopenharmony_ci
13362306a36Sopenharmony_ciconfig MAC80211_MLME_DEBUG
13462306a36Sopenharmony_ci	bool "Verbose managed MLME output"
13562306a36Sopenharmony_ci	depends on MAC80211_DEBUG_MENU
13662306a36Sopenharmony_ci	help
13762306a36Sopenharmony_ci	  Selecting this option causes mac80211 to print out
13862306a36Sopenharmony_ci	  debugging messages for the managed-mode MLME. It
13962306a36Sopenharmony_ci	  should not be selected on production systems as some
14062306a36Sopenharmony_ci	  of the messages are remotely triggerable.
14162306a36Sopenharmony_ci
14262306a36Sopenharmony_ci	  Do not select this option.
14362306a36Sopenharmony_ci
14462306a36Sopenharmony_ciconfig MAC80211_STA_DEBUG
14562306a36Sopenharmony_ci	bool "Verbose station debugging"
14662306a36Sopenharmony_ci	depends on MAC80211_DEBUG_MENU
14762306a36Sopenharmony_ci	help
14862306a36Sopenharmony_ci	  Selecting this option causes mac80211 to print out
14962306a36Sopenharmony_ci	  debugging messages for station addition/removal.
15062306a36Sopenharmony_ci
15162306a36Sopenharmony_ci	  Do not select this option.
15262306a36Sopenharmony_ci
15362306a36Sopenharmony_ciconfig MAC80211_HT_DEBUG
15462306a36Sopenharmony_ci	bool "Verbose HT debugging"
15562306a36Sopenharmony_ci	depends on MAC80211_DEBUG_MENU
15662306a36Sopenharmony_ci	help
15762306a36Sopenharmony_ci	  This option enables 802.11n High Throughput features
15862306a36Sopenharmony_ci	  debug tracing output.
15962306a36Sopenharmony_ci
16062306a36Sopenharmony_ci	  It should not be selected on production systems as some
16162306a36Sopenharmony_ci	  of the messages are remotely triggerable.
16262306a36Sopenharmony_ci
16362306a36Sopenharmony_ci	  Do not select this option.
16462306a36Sopenharmony_ci
16562306a36Sopenharmony_ciconfig MAC80211_OCB_DEBUG
16662306a36Sopenharmony_ci	bool "Verbose OCB debugging"
16762306a36Sopenharmony_ci	depends on MAC80211_DEBUG_MENU
16862306a36Sopenharmony_ci	help
16962306a36Sopenharmony_ci	  Selecting this option causes mac80211 to print out
17062306a36Sopenharmony_ci	  very verbose OCB debugging messages. It should not
17162306a36Sopenharmony_ci	  be selected on production systems as those messages
17262306a36Sopenharmony_ci	  are remotely triggerable.
17362306a36Sopenharmony_ci
17462306a36Sopenharmony_ci	  Do not select this option.
17562306a36Sopenharmony_ci
17662306a36Sopenharmony_ciconfig MAC80211_IBSS_DEBUG
17762306a36Sopenharmony_ci	bool "Verbose IBSS debugging"
17862306a36Sopenharmony_ci	depends on MAC80211_DEBUG_MENU
17962306a36Sopenharmony_ci	help
18062306a36Sopenharmony_ci	  Selecting this option causes mac80211 to print out
18162306a36Sopenharmony_ci	  very verbose IBSS debugging messages. It should not
18262306a36Sopenharmony_ci	  be selected on production systems as those messages
18362306a36Sopenharmony_ci	  are remotely triggerable.
18462306a36Sopenharmony_ci
18562306a36Sopenharmony_ci	  Do not select this option.
18662306a36Sopenharmony_ci
18762306a36Sopenharmony_ciconfig MAC80211_PS_DEBUG
18862306a36Sopenharmony_ci	bool "Verbose powersave mode debugging"
18962306a36Sopenharmony_ci	depends on MAC80211_DEBUG_MENU
19062306a36Sopenharmony_ci	help
19162306a36Sopenharmony_ci	  Selecting this option causes mac80211 to print out very
19262306a36Sopenharmony_ci	  verbose power save mode debugging messages (when mac80211
19362306a36Sopenharmony_ci	  is an AP and has power saving stations.)
19462306a36Sopenharmony_ci	  It should not be selected on production systems as those
19562306a36Sopenharmony_ci	  messages are remotely triggerable.
19662306a36Sopenharmony_ci
19762306a36Sopenharmony_ci	  Do not select this option.
19862306a36Sopenharmony_ci
19962306a36Sopenharmony_ciconfig MAC80211_MPL_DEBUG
20062306a36Sopenharmony_ci	bool "Verbose mesh peer link debugging"
20162306a36Sopenharmony_ci	depends on MAC80211_DEBUG_MENU
20262306a36Sopenharmony_ci	depends on MAC80211_MESH
20362306a36Sopenharmony_ci	help
20462306a36Sopenharmony_ci	  Selecting this option causes mac80211 to print out very
20562306a36Sopenharmony_ci	  verbose mesh peer link debugging messages (when mac80211
20662306a36Sopenharmony_ci	  is taking part in a mesh network).
20762306a36Sopenharmony_ci	  It should not be selected on production systems as those
20862306a36Sopenharmony_ci	  messages are remotely triggerable.
20962306a36Sopenharmony_ci
21062306a36Sopenharmony_ci	  Do not select this option.
21162306a36Sopenharmony_ci
21262306a36Sopenharmony_ciconfig MAC80211_MPATH_DEBUG
21362306a36Sopenharmony_ci	bool "Verbose mesh path debugging"
21462306a36Sopenharmony_ci	depends on MAC80211_DEBUG_MENU
21562306a36Sopenharmony_ci	depends on MAC80211_MESH
21662306a36Sopenharmony_ci	help
21762306a36Sopenharmony_ci	  Selecting this option causes mac80211 to print out very
21862306a36Sopenharmony_ci	  verbose mesh path selection debugging messages (when mac80211
21962306a36Sopenharmony_ci	  is taking part in a mesh network).
22062306a36Sopenharmony_ci	  It should not be selected on production systems as those
22162306a36Sopenharmony_ci	  messages are remotely triggerable.
22262306a36Sopenharmony_ci
22362306a36Sopenharmony_ci	  Do not select this option.
22462306a36Sopenharmony_ci
22562306a36Sopenharmony_ciconfig MAC80211_MHWMP_DEBUG
22662306a36Sopenharmony_ci	bool "Verbose mesh HWMP routing debugging"
22762306a36Sopenharmony_ci	depends on MAC80211_DEBUG_MENU
22862306a36Sopenharmony_ci	depends on MAC80211_MESH
22962306a36Sopenharmony_ci	help
23062306a36Sopenharmony_ci	  Selecting this option causes mac80211 to print out very
23162306a36Sopenharmony_ci	  verbose mesh routing (HWMP) debugging messages (when mac80211
23262306a36Sopenharmony_ci	  is taking part in a mesh network).
23362306a36Sopenharmony_ci	  It should not be selected on production systems as those
23462306a36Sopenharmony_ci	  messages are remotely triggerable.
23562306a36Sopenharmony_ci
23662306a36Sopenharmony_ci	  Do not select this option.
23762306a36Sopenharmony_ci
23862306a36Sopenharmony_ciconfig MAC80211_MESH_SYNC_DEBUG
23962306a36Sopenharmony_ci	bool "Verbose mesh synchronization debugging"
24062306a36Sopenharmony_ci	depends on MAC80211_DEBUG_MENU
24162306a36Sopenharmony_ci	depends on MAC80211_MESH
24262306a36Sopenharmony_ci	help
24362306a36Sopenharmony_ci	  Selecting this option causes mac80211 to print out very verbose mesh
24462306a36Sopenharmony_ci	  synchronization debugging messages (when mac80211 is taking part in a
24562306a36Sopenharmony_ci	  mesh network).
24662306a36Sopenharmony_ci
24762306a36Sopenharmony_ci	  Do not select this option.
24862306a36Sopenharmony_ci
24962306a36Sopenharmony_ciconfig MAC80211_MESH_CSA_DEBUG
25062306a36Sopenharmony_ci	bool "Verbose mesh channel switch debugging"
25162306a36Sopenharmony_ci	depends on MAC80211_DEBUG_MENU
25262306a36Sopenharmony_ci	depends on MAC80211_MESH
25362306a36Sopenharmony_ci	help
25462306a36Sopenharmony_ci	  Selecting this option causes mac80211 to print out very verbose mesh
25562306a36Sopenharmony_ci	  channel switch debugging messages (when mac80211 is taking part in a
25662306a36Sopenharmony_ci	  mesh network).
25762306a36Sopenharmony_ci
25862306a36Sopenharmony_ci	  Do not select this option.
25962306a36Sopenharmony_ci
26062306a36Sopenharmony_ciconfig MAC80211_MESH_PS_DEBUG
26162306a36Sopenharmony_ci	bool "Verbose mesh powersave debugging"
26262306a36Sopenharmony_ci	depends on MAC80211_DEBUG_MENU
26362306a36Sopenharmony_ci	depends on MAC80211_MESH
26462306a36Sopenharmony_ci	help
26562306a36Sopenharmony_ci	  Selecting this option causes mac80211 to print out very verbose mesh
26662306a36Sopenharmony_ci	  powersave debugging messages (when mac80211 is taking part in a
26762306a36Sopenharmony_ci	  mesh network).
26862306a36Sopenharmony_ci
26962306a36Sopenharmony_ci	  Do not select this option.
27062306a36Sopenharmony_ci
27162306a36Sopenharmony_ciconfig MAC80211_TDLS_DEBUG
27262306a36Sopenharmony_ci	bool "Verbose TDLS debugging"
27362306a36Sopenharmony_ci	depends on MAC80211_DEBUG_MENU
27462306a36Sopenharmony_ci	help
27562306a36Sopenharmony_ci	  Selecting this option causes mac80211 to print out very
27662306a36Sopenharmony_ci	  verbose TDLS selection debugging messages (when mac80211
27762306a36Sopenharmony_ci	  is a TDLS STA).
27862306a36Sopenharmony_ci	  It should not be selected on production systems as those
27962306a36Sopenharmony_ci	  messages are remotely triggerable.
28062306a36Sopenharmony_ci
28162306a36Sopenharmony_ci	  Do not select this option.
28262306a36Sopenharmony_ci
28362306a36Sopenharmony_ciconfig MAC80211_DEBUG_COUNTERS
28462306a36Sopenharmony_ci	bool "Extra statistics for TX/RX debugging"
28562306a36Sopenharmony_ci	depends on MAC80211_DEBUG_MENU
28662306a36Sopenharmony_ci	depends on MAC80211_DEBUGFS
28762306a36Sopenharmony_ci	help
28862306a36Sopenharmony_ci	  Selecting this option causes mac80211 to keep additional
28962306a36Sopenharmony_ci	  and very verbose statistics about TX and RX handler use
29062306a36Sopenharmony_ci	  as well as a few selected dot11 counters. These will be
29162306a36Sopenharmony_ci	  exposed in debugfs.
29262306a36Sopenharmony_ci
29362306a36Sopenharmony_ci	  Note that some of the counters are not concurrency safe
29462306a36Sopenharmony_ci	  and may thus not always be accurate.
29562306a36Sopenharmony_ci
29662306a36Sopenharmony_ci	  If unsure, say N.
29762306a36Sopenharmony_ci
29862306a36Sopenharmony_ciconfig MAC80211_STA_HASH_MAX_SIZE
29962306a36Sopenharmony_ci	int "Station hash table maximum size" if MAC80211_DEBUG_MENU
30062306a36Sopenharmony_ci	default 0
30162306a36Sopenharmony_ci	help
30262306a36Sopenharmony_ci	  Setting this option to a low value (e.g. 4) allows testing the
30362306a36Sopenharmony_ci	  hash table with collisions relatively deterministically (just
30462306a36Sopenharmony_ci	  connect more stations than the number selected here.)
30562306a36Sopenharmony_ci
30662306a36Sopenharmony_ci	  If unsure, leave the default of 0.
307