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