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