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_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=y || LEDS_CLASS=MAC80211
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.
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 CRC32
9 select AVERAGE
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_PID
23 bool "PID controller based rate control algorithm" if EXPERT
24 select MAC80211_HAS_RC
25 ---help---
26 This option enables a TX rate control algorithm for
27 mac80211 that uses a PID controller to select the TX
28 rate.
29
30config MAC80211_RC_MINSTREL
31 bool "Minstrel" if EXPERT
32 select MAC80211_HAS_RC
33 default y
34 ---help---
35 This option enables the 'minstrel' TX rate control algorithm
36
37config MAC80211_RC_MINSTREL_HT
38 bool "Minstrel 802.11n support" if EXPERT
39 depends on MAC80211_RC_MINSTREL
40 default y
41 ---help---
42 This option enables 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_PID
55 bool "PID controller based rate control algorithm"
56 depends on MAC80211_RC_PID
57 ---help---
58 Select the PID controller based rate control as the
59 default rate control algorithm. You should choose
60 this unless you know what you are doing.
61
62config MAC80211_RC_DEFAULT_MINSTREL
63 bool "Minstrel"
64 depends on MAC80211_RC_MINSTREL
65 ---help---
66 Select Minstrel as the default rate control algorithm.
67
68
69endchoice
70
71config MAC80211_RC_DEFAULT
72 string
73 default "minstrel_ht" if MAC80211_RC_DEFAULT_MINSTREL && MAC80211_RC_MINSTREL_HT
74 default "minstrel" if MAC80211_RC_DEFAULT_MINSTREL
75 default "pid" if MAC80211_RC_DEFAULT_PID
76 default ""
77
78endif
79
80comment "Some wireless drivers require a rate control algorithm"
81 depends on MAC80211 && MAC80211_HAS_RC=n
82
83config MAC80211_MESH
84 bool "Enable mac80211 mesh networking (pre-802.11s) support"
85 depends on MAC80211
86 ---help---
87 This options enables support of Draft 802.11s mesh networking.
88 The implementation is based on Draft 2.08 of the Mesh Networking
89 amendment. However, no compliance with that draft is claimed or even
90 possible, as drafts leave a number of identifiers to be defined after
91 ratification. For more information visit http://o11s.org/.
92
93config MAC80211_LEDS
94 bool "Enable LED triggers"
95 depends on MAC80211
96 depends on LEDS_CLASS
97 select LEDS_TRIGGERS
98 ---help---
99 This option enables a few LED triggers for different
100 packet receive/transmit events.
101
102config MAC80211_DEBUGFS
103 bool "Export mac80211 internals in DebugFS"
104 depends on MAC80211 && DEBUG_FS
105 ---help---
106 Select this to see extensive information about
107 the internal state of mac80211 in debugfs.
108
109 Say N unless you know you need this.
110
111config MAC80211_MESSAGE_TRACING
112 bool "Trace all mac80211 debug messages"
113 depends on MAC80211
114 ---help---
115 Select this option to have mac80211 register the
116 mac80211_msg trace subsystem with tracepoints to
117 collect all debugging messages, independent of
118 printing them into the kernel log.
119
120 The overhead in this option is that all the messages
121 need to be present in the binary and formatted at
122 runtime for tracing.
123
124menuconfig MAC80211_DEBUG_MENU
125 bool "Select mac80211 debugging features"
126 depends on MAC80211
127 ---help---
128 This option collects various mac80211 debug settings.
129
130config MAC80211_NOINLINE
131 bool "Do not inline TX/RX handlers"
132 depends on MAC80211_DEBUG_MENU
133 ---help---
134 This option affects code generation in mac80211, when
135 selected some functions are marked "noinline" to allow
136 easier debugging of problems in the transmit and receive
137 paths.
138
139 This option increases code size a bit and inserts a lot
140 of function calls in the code, but is otherwise safe to
141 enable.
142
143 If unsure, say N unless you expect to be finding problems
144 in mac80211.
145
146config MAC80211_VERBOSE_DEBUG
147 bool "Verbose debugging output"
148 depends on MAC80211_DEBUG_MENU
149 ---help---
150 Selecting this option causes mac80211 to print out
151 many debugging messages. It should not be selected
152 on production systems as some of the messages are
153 remotely triggerable.
154
155 Do not select this option.
156
157config MAC80211_MLME_DEBUG
158 bool "Verbose managed MLME output"
159 depends on MAC80211_DEBUG_MENU
160 ---help---
161 Selecting this option causes mac80211 to print out
162 debugging messages for the managed-mode MLME. It
163 should not be selected on production systems as some
164 of the messages are remotely triggerable.
165
166 Do not select this option.
167
168config MAC80211_STA_DEBUG
169 bool "Verbose station debugging"
170 depends on MAC80211_DEBUG_MENU
171 ---help---
172 Selecting this option causes mac80211 to print out
173 debugging messages for station addition/removal.
174
175 Do not select this option.
176
177config MAC80211_HT_DEBUG
178 bool "Verbose HT debugging"
179 depends on MAC80211_DEBUG_MENU
180 ---help---
181 This option enables 802.11n High Throughput features
182 debug tracing output.
183
184 It should not be selected on production systems as some
185 of the messages are remotely triggerable.
186
187 Do not select this option.
188
189config MAC80211_IBSS_DEBUG
190 bool "Verbose IBSS debugging"
191 depends on MAC80211_DEBUG_MENU
192 ---help---
193 Selecting this option causes mac80211 to print out
194 very verbose IBSS debugging messages. It should not
195 be selected on production systems as those messages
196 are remotely triggerable.
197
198 Do not select this option.
199
200config MAC80211_PS_DEBUG
201 bool "Verbose powersave mode debugging"
202 depends on MAC80211_DEBUG_MENU
203 ---help---
204 Selecting this option causes mac80211 to print out very
205 verbose power save mode debugging messages (when mac80211
206 is an AP and has power saving stations.)
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_MPL_DEBUG
213 bool "Verbose mesh peer link 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 peer link 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_MPATH_DEBUG
226 bool "Verbose mesh path 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 path selection 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_MHWMP_DEBUG
239 bool "Verbose mesh HWMP routing debugging"
240 depends on MAC80211_DEBUG_MENU
241 depends on MAC80211_MESH
242 ---help---
243 Selecting this option causes mac80211 to print out very
244 verbose mesh routing (HWMP) debugging messages (when mac80211
245 is taking part in a mesh network).
246 It should not be selected on production systems as those
247 messages are remotely triggerable.
248
249 Do not select this option.
250
251config MAC80211_MESH_SYNC_DEBUG
252 bool "Verbose mesh synchronization debugging"
253 depends on MAC80211_DEBUG_MENU
254 depends on MAC80211_MESH
255 ---help---
256 Selecting this option causes mac80211 to print out very verbose mesh
257 synchronization debugging messages (when mac80211 is taking part in a
258 mesh network).
259
260 Do not select this option.
261
262config MAC80211_MESH_CSA_DEBUG
263 bool "Verbose mesh channel switch debugging"
264 depends on MAC80211_DEBUG_MENU
265 depends on MAC80211_MESH
266 ---help---
267 Selecting this option causes mac80211 to print out very verbose mesh
268 channel switch debugging messages (when mac80211 is taking part in a
269 mesh network).
270
271 Do not select this option.
272
273config MAC80211_MESH_PS_DEBUG
274 bool "Verbose mesh powersave debugging"
275 depends on MAC80211_DEBUG_MENU
276 depends on MAC80211_MESH
277 ---help---
278 Selecting this option causes mac80211 to print out very verbose mesh
279 powersave debugging messages (when mac80211 is taking part in a
280 mesh network).
281
282 Do not select this option.
283
284config MAC80211_TDLS_DEBUG
285 bool "Verbose TDLS debugging"
286 depends on MAC80211_DEBUG_MENU
287 ---help---
288 Selecting this option causes mac80211 to print out very
289 verbose TDLS selection debugging messages (when mac80211
290 is a TDLS STA).
291 It should not be selected on production systems as those
292 messages are remotely triggerable.
293
294 Do not select this option.
295
296config MAC80211_DEBUG_COUNTERS
297 bool "Extra statistics for TX/RX debugging"
298 depends on MAC80211_DEBUG_MENU
299 depends on MAC80211_DEBUGFS
300 ---help---
301 Selecting this option causes mac80211 to keep additional
302 and very verbose statistics about TX and RX handler use
303 and show them in debugfs.
304
305 If unsure, say N.