1# SPDX-License-Identifier: GPL-2.0-only
2config MAC80211
3	tristate "Generic IEEE 802.11 Networking Stack (mac80211)"
4	depends on CFG80211
5	select CRYPTO
6	select CRYPTO_LIB_ARC4
7	select CRYPTO_AES
8	select CRYPTO_CCM
9	select CRYPTO_GCM
10	select CRYPTO_CMAC
11	select CRC32
12	---help---
13	  This option enables the hardware independent IEEE 802.11
14	  networking stack.
15
16comment "CFG80211 needs to be enabled for MAC80211"
17	depends on CFG80211=n
18
19if MAC80211 != n
20
21config MAC80211_HAS_RC
22	bool
23
24config MAC80211_RC_MINSTREL
25	bool "Minstrel" if EXPERT
26	select MAC80211_HAS_RC
27	default y
28	---help---
29	  This option enables the 'minstrel' TX rate control algorithm
30
31choice
32	prompt "Default rate control algorithm"
33	depends on MAC80211_HAS_RC
34	default MAC80211_RC_DEFAULT_MINSTREL
35	---help---
36	  This option selects the default rate control algorithm
37	  mac80211 will use. Note that this default can still be
38	  overridden through the ieee80211_default_rc_algo module
39	  parameter if different algorithms are available.
40
41config MAC80211_RC_DEFAULT_MINSTREL
42	bool "Minstrel"
43	depends on MAC80211_RC_MINSTREL
44	---help---
45	  Select Minstrel as the default rate control algorithm.
46
47
48endchoice
49
50config MAC80211_RC_DEFAULT
51	string
52	default "minstrel_ht" if MAC80211_RC_DEFAULT_MINSTREL
53	default ""
54
55endif
56
57comment "Some wireless drivers require a rate control algorithm"
58	depends on MAC80211 && MAC80211_HAS_RC=n
59
60config MAC80211_MESH
61	bool "Enable mac80211 mesh networking support"
62	depends on MAC80211
63	---help---
64	  Select this option to enable 802.11 mesh operation in mac80211
65	  drivers that support it.  802.11 mesh connects multiple stations
66	  over (possibly multi-hop) wireless links to form a single logical
67	  LAN.
68
69config MAC80211_LEDS
70	bool "Enable LED triggers"
71	depends on MAC80211
72	depends on LEDS_CLASS
73	select LEDS_TRIGGERS
74	---help---
75	  This option enables a few LED triggers for different
76	  packet receive/transmit events.
77
78config MAC80211_DEBUGFS
79	bool "Export mac80211 internals in DebugFS"
80	depends on MAC80211 && DEBUG_FS
81	---help---
82	  Select this to see extensive information about
83	  the internal state of mac80211 in debugfs.
84
85	  Say N unless you know you need this.
86
87config MAC80211_MESSAGE_TRACING
88	bool "Trace all mac80211 debug messages"
89	depends on MAC80211
90	---help---
91	  Select this option to have mac80211 register the
92	  mac80211_msg trace subsystem with tracepoints to
93	  collect all debugging messages, independent of
94	  printing them into the kernel log.
95
96	  The overhead in this option is that all the messages
97	  need to be present in the binary and formatted at
98	  runtime for tracing.
99
100menuconfig MAC80211_DEBUG_MENU
101	bool "Select mac80211 debugging features"
102	depends on MAC80211
103	---help---
104	  This option collects various mac80211 debug settings.
105
106config MAC80211_NOINLINE
107	bool "Do not inline TX/RX handlers"
108	depends on MAC80211_DEBUG_MENU
109	---help---
110	  This option affects code generation in mac80211, when
111	  selected some functions are marked "noinline" to allow
112	  easier debugging of problems in the transmit and receive
113	  paths.
114
115	  This option increases code size a bit and inserts a lot
116	  of function calls in the code, but is otherwise safe to
117	  enable.
118
119	  If unsure, say N unless you expect to be finding problems
120	  in mac80211.
121
122config MAC80211_VERBOSE_DEBUG
123	bool "Verbose debugging output"
124	depends on MAC80211_DEBUG_MENU
125	---help---
126	  Selecting this option causes mac80211 to print out
127	  many debugging messages. It should not be selected
128	  on production systems as some of the messages are
129	  remotely triggerable.
130
131	  Do not select this option.
132
133config MAC80211_MLME_DEBUG
134	bool "Verbose managed MLME output"
135	depends on MAC80211_DEBUG_MENU
136	---help---
137	  Selecting this option causes mac80211 to print out
138	  debugging messages for the managed-mode MLME. It
139	  should not be selected on production systems as some
140	  of the messages are remotely triggerable.
141
142	  Do not select this option.
143
144config MAC80211_STA_DEBUG
145	bool "Verbose station debugging"
146	depends on MAC80211_DEBUG_MENU
147	---help---
148	  Selecting this option causes mac80211 to print out
149	  debugging messages for station addition/removal.
150
151	  Do not select this option.
152
153config MAC80211_HT_DEBUG
154	bool "Verbose HT debugging"
155	depends on MAC80211_DEBUG_MENU
156	---help---
157	  This option enables 802.11n High Throughput features
158	  debug tracing output.
159
160	  It should not be selected on production systems as some
161	  of the messages are remotely triggerable.
162
163	  Do not select this option.
164
165config MAC80211_OCB_DEBUG
166	bool "Verbose OCB debugging"
167	depends on MAC80211_DEBUG_MENU
168	---help---
169	  Selecting this option causes mac80211 to print out
170	  very verbose OCB debugging messages. It should not
171	  be selected on production systems as those messages
172	  are remotely triggerable.
173
174	  Do not select this option.
175
176config MAC80211_IBSS_DEBUG
177	bool "Verbose IBSS debugging"
178	depends on MAC80211_DEBUG_MENU
179	---help---
180	  Selecting this option causes mac80211 to print out
181	  very verbose IBSS debugging messages. It should not
182	  be selected on production systems as those messages
183	  are remotely triggerable.
184
185	  Do not select this option.
186
187config MAC80211_PS_DEBUG
188	bool "Verbose powersave mode debugging"
189	depends on MAC80211_DEBUG_MENU
190	---help---
191	  Selecting this option causes mac80211 to print out very
192	  verbose power save mode debugging messages (when mac80211
193	  is an AP and has power saving stations.)
194	  It should not be selected on production systems as those
195	  messages are remotely triggerable.
196
197	  Do not select this option.
198
199config MAC80211_MPL_DEBUG
200	bool "Verbose mesh peer link debugging"
201	depends on MAC80211_DEBUG_MENU
202	depends on MAC80211_MESH
203	---help---
204	  Selecting this option causes mac80211 to print out very
205	  verbose mesh peer link debugging messages (when mac80211
206	  is taking part in a mesh network).
207	  It should not be selected on production systems as those
208	  messages are remotely triggerable.
209
210	  Do not select this option.
211
212config MAC80211_MPATH_DEBUG
213	bool "Verbose mesh path debugging"
214	depends on MAC80211_DEBUG_MENU
215	depends on MAC80211_MESH
216	---help---
217	  Selecting this option causes mac80211 to print out very
218	  verbose mesh path selection debugging messages (when mac80211
219	  is taking part in a mesh network).
220	  It should not be selected on production systems as those
221	  messages are remotely triggerable.
222
223	  Do not select this option.
224
225config MAC80211_MHWMP_DEBUG
226	bool "Verbose mesh HWMP routing debugging"
227	depends on MAC80211_DEBUG_MENU
228	depends on MAC80211_MESH
229	---help---
230	  Selecting this option causes mac80211 to print out very
231	  verbose mesh routing (HWMP) debugging messages (when mac80211
232	  is taking part in a mesh network).
233	  It should not be selected on production systems as those
234	  messages are remotely triggerable.
235
236	  Do not select this option.
237
238config MAC80211_MESH_SYNC_DEBUG
239	bool "Verbose mesh synchronization debugging"
240	depends on MAC80211_DEBUG_MENU
241	depends on MAC80211_MESH
242	---help---
243	  Selecting this option causes mac80211 to print out very verbose mesh
244	  synchronization debugging messages (when mac80211 is taking part in a
245	  mesh network).
246
247	  Do not select this option.
248
249config MAC80211_MESH_CSA_DEBUG
250	bool "Verbose mesh channel switch debugging"
251	depends on MAC80211_DEBUG_MENU
252	depends on MAC80211_MESH
253	---help---
254	  Selecting this option causes mac80211 to print out very verbose mesh
255	  channel switch debugging messages (when mac80211 is taking part in a
256	  mesh network).
257
258	  Do not select this option.
259
260config MAC80211_MESH_PS_DEBUG
261	bool "Verbose mesh powersave debugging"
262	depends on MAC80211_DEBUG_MENU
263	depends on MAC80211_MESH
264	---help---
265	  Selecting this option causes mac80211 to print out very verbose mesh
266	  powersave debugging messages (when mac80211 is taking part in a
267	  mesh network).
268
269	  Do not select this option.
270
271config MAC80211_TDLS_DEBUG
272	bool "Verbose TDLS debugging"
273	depends on MAC80211_DEBUG_MENU
274	---help---
275	  Selecting this option causes mac80211 to print out very
276	  verbose TDLS selection debugging messages (when mac80211
277	  is a TDLS STA).
278	  It should not be selected on production systems as those
279	  messages are remotely triggerable.
280
281	  Do not select this option.
282
283config MAC80211_DEBUG_COUNTERS
284	bool "Extra statistics for TX/RX debugging"
285	depends on MAC80211_DEBUG_MENU
286	depends on MAC80211_DEBUGFS
287	---help---
288	  Selecting this option causes mac80211 to keep additional
289	  and very verbose statistics about TX and RX handler use
290	  as well as a few selected dot11 counters. These will be
291	  exposed in debugfs.
292
293	  Note that some of the counters are not concurrency safe
294	  and may thus not always be accurate.
295
296	  If unsure, say N.
297
298config MAC80211_STA_HASH_MAX_SIZE
299	int "Station hash table maximum size" if MAC80211_DEBUG_MENU
300	default 0
301	---help---
302	  Setting this option to a low value (e.g. 4) allows testing the
303	  hash table with collisions relatively deterministically (just
304	  connect more stations than the number selected here.)
305
306	  If unsure, leave the default of 0.
307