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