0001 # SPDX-License-Identifier: GPL-2.0-only
0002 config MAC80211
0003 tristate "Generic IEEE 802.11 Networking Stack (mac80211)"
0004 depends on CFG80211
0005 select CRYPTO
0006 select CRYPTO_LIB_ARC4
0007 select CRYPTO_AES
0008 select CRYPTO_CCM
0009 select CRYPTO_GCM
0010 select CRYPTO_CMAC
0011 select CRC32
0012 help
0013 This option enables the hardware independent IEEE 802.11
0014 networking stack.
0015
0016 comment "CFG80211 needs to be enabled for MAC80211"
0017 depends on CFG80211=n
0018
0019 if MAC80211 != n
0020
0021 config MAC80211_HAS_RC
0022 bool
0023
0024 config MAC80211_RC_MINSTREL
0025 bool "Minstrel" if EXPERT
0026 select MAC80211_HAS_RC
0027 default y
0028 help
0029 This option enables the 'minstrel' TX rate control algorithm
0030
0031 choice
0032 prompt "Default rate control algorithm"
0033 depends on MAC80211_HAS_RC
0034 default MAC80211_RC_DEFAULT_MINSTREL
0035 help
0036 This option selects the default rate control algorithm
0037 mac80211 will use. Note that this default can still be
0038 overridden through the ieee80211_default_rc_algo module
0039 parameter if different algorithms are available.
0040
0041 config MAC80211_RC_DEFAULT_MINSTREL
0042 bool "Minstrel"
0043 depends on MAC80211_RC_MINSTREL
0044 help
0045 Select Minstrel as the default rate control algorithm.
0046
0047
0048 endchoice
0049
0050 config MAC80211_RC_DEFAULT
0051 string
0052 default "minstrel_ht" if MAC80211_RC_DEFAULT_MINSTREL
0053 default ""
0054
0055 endif
0056
0057 comment "Some wireless drivers require a rate control algorithm"
0058 depends on MAC80211 && MAC80211_HAS_RC=n
0059
0060 config MAC80211_MESH
0061 bool "Enable mac80211 mesh networking support"
0062 depends on MAC80211
0063 help
0064 Select this option to enable 802.11 mesh operation in mac80211
0065 drivers that support it. 802.11 mesh connects multiple stations
0066 over (possibly multi-hop) wireless links to form a single logical
0067 LAN.
0068
0069 config MAC80211_LEDS
0070 bool "Enable LED triggers"
0071 depends on MAC80211
0072 depends on LEDS_CLASS=y || LEDS_CLASS=MAC80211
0073 select LEDS_TRIGGERS
0074 help
0075 This option enables a few LED triggers for different
0076 packet receive/transmit events.
0077
0078 config MAC80211_DEBUGFS
0079 bool "Export mac80211 internals in DebugFS"
0080 depends on MAC80211 && DEBUG_FS
0081 help
0082 Select this to see extensive information about
0083 the internal state of mac80211 in debugfs.
0084
0085 Say N unless you know you need this.
0086
0087 config MAC80211_MESSAGE_TRACING
0088 bool "Trace all mac80211 debug messages"
0089 depends on MAC80211
0090 help
0091 Select this option to have mac80211 register the
0092 mac80211_msg trace subsystem with tracepoints to
0093 collect all debugging messages, independent of
0094 printing them into the kernel log.
0095
0096 The overhead in this option is that all the messages
0097 need to be present in the binary and formatted at
0098 runtime for tracing.
0099
0100 menuconfig MAC80211_DEBUG_MENU
0101 bool "Select mac80211 debugging features"
0102 depends on MAC80211
0103 help
0104 This option collects various mac80211 debug settings.
0105
0106 config MAC80211_NOINLINE
0107 bool "Do not inline TX/RX handlers"
0108 depends on MAC80211_DEBUG_MENU
0109 help
0110 This option affects code generation in mac80211, when
0111 selected some functions are marked "noinline" to allow
0112 easier debugging of problems in the transmit and receive
0113 paths.
0114
0115 This option increases code size a bit and inserts a lot
0116 of function calls in the code, but is otherwise safe to
0117 enable.
0118
0119 If unsure, say N unless you expect to be finding problems
0120 in mac80211.
0121
0122 config MAC80211_VERBOSE_DEBUG
0123 bool "Verbose debugging output"
0124 depends on MAC80211_DEBUG_MENU
0125 help
0126 Selecting this option causes mac80211 to print out
0127 many debugging messages. It should not be selected
0128 on production systems as some of the messages are
0129 remotely triggerable.
0130
0131 Do not select this option.
0132
0133 config MAC80211_MLME_DEBUG
0134 bool "Verbose managed MLME output"
0135 depends on MAC80211_DEBUG_MENU
0136 help
0137 Selecting this option causes mac80211 to print out
0138 debugging messages for the managed-mode MLME. It
0139 should not be selected on production systems as some
0140 of the messages are remotely triggerable.
0141
0142 Do not select this option.
0143
0144 config MAC80211_STA_DEBUG
0145 bool "Verbose station debugging"
0146 depends on MAC80211_DEBUG_MENU
0147 help
0148 Selecting this option causes mac80211 to print out
0149 debugging messages for station addition/removal.
0150
0151 Do not select this option.
0152
0153 config MAC80211_HT_DEBUG
0154 bool "Verbose HT debugging"
0155 depends on MAC80211_DEBUG_MENU
0156 help
0157 This option enables 802.11n High Throughput features
0158 debug tracing output.
0159
0160 It should not be selected on production systems as some
0161 of the messages are remotely triggerable.
0162
0163 Do not select this option.
0164
0165 config MAC80211_OCB_DEBUG
0166 bool "Verbose OCB debugging"
0167 depends on MAC80211_DEBUG_MENU
0168 help
0169 Selecting this option causes mac80211 to print out
0170 very verbose OCB debugging messages. It should not
0171 be selected on production systems as those messages
0172 are remotely triggerable.
0173
0174 Do not select this option.
0175
0176 config MAC80211_IBSS_DEBUG
0177 bool "Verbose IBSS debugging"
0178 depends on MAC80211_DEBUG_MENU
0179 help
0180 Selecting this option causes mac80211 to print out
0181 very verbose IBSS debugging messages. It should not
0182 be selected on production systems as those messages
0183 are remotely triggerable.
0184
0185 Do not select this option.
0186
0187 config MAC80211_PS_DEBUG
0188 bool "Verbose powersave mode debugging"
0189 depends on MAC80211_DEBUG_MENU
0190 help
0191 Selecting this option causes mac80211 to print out very
0192 verbose power save mode debugging messages (when mac80211
0193 is an AP and has power saving stations.)
0194 It should not be selected on production systems as those
0195 messages are remotely triggerable.
0196
0197 Do not select this option.
0198
0199 config MAC80211_MPL_DEBUG
0200 bool "Verbose mesh peer link debugging"
0201 depends on MAC80211_DEBUG_MENU
0202 depends on MAC80211_MESH
0203 help
0204 Selecting this option causes mac80211 to print out very
0205 verbose mesh peer link debugging messages (when mac80211
0206 is taking part in a mesh network).
0207 It should not be selected on production systems as those
0208 messages are remotely triggerable.
0209
0210 Do not select this option.
0211
0212 config MAC80211_MPATH_DEBUG
0213 bool "Verbose mesh path debugging"
0214 depends on MAC80211_DEBUG_MENU
0215 depends on MAC80211_MESH
0216 help
0217 Selecting this option causes mac80211 to print out very
0218 verbose mesh path selection debugging messages (when mac80211
0219 is taking part in a mesh network).
0220 It should not be selected on production systems as those
0221 messages are remotely triggerable.
0222
0223 Do not select this option.
0224
0225 config MAC80211_MHWMP_DEBUG
0226 bool "Verbose mesh HWMP routing debugging"
0227 depends on MAC80211_DEBUG_MENU
0228 depends on MAC80211_MESH
0229 help
0230 Selecting this option causes mac80211 to print out very
0231 verbose mesh routing (HWMP) debugging messages (when mac80211
0232 is taking part in a mesh network).
0233 It should not be selected on production systems as those
0234 messages are remotely triggerable.
0235
0236 Do not select this option.
0237
0238 config MAC80211_MESH_SYNC_DEBUG
0239 bool "Verbose mesh synchronization debugging"
0240 depends on MAC80211_DEBUG_MENU
0241 depends on MAC80211_MESH
0242 help
0243 Selecting this option causes mac80211 to print out very verbose mesh
0244 synchronization debugging messages (when mac80211 is taking part in a
0245 mesh network).
0246
0247 Do not select this option.
0248
0249 config MAC80211_MESH_CSA_DEBUG
0250 bool "Verbose mesh channel switch debugging"
0251 depends on MAC80211_DEBUG_MENU
0252 depends on MAC80211_MESH
0253 help
0254 Selecting this option causes mac80211 to print out very verbose mesh
0255 channel switch debugging messages (when mac80211 is taking part in a
0256 mesh network).
0257
0258 Do not select this option.
0259
0260 config MAC80211_MESH_PS_DEBUG
0261 bool "Verbose mesh powersave debugging"
0262 depends on MAC80211_DEBUG_MENU
0263 depends on MAC80211_MESH
0264 help
0265 Selecting this option causes mac80211 to print out very verbose mesh
0266 powersave debugging messages (when mac80211 is taking part in a
0267 mesh network).
0268
0269 Do not select this option.
0270
0271 config MAC80211_TDLS_DEBUG
0272 bool "Verbose TDLS debugging"
0273 depends on MAC80211_DEBUG_MENU
0274 help
0275 Selecting this option causes mac80211 to print out very
0276 verbose TDLS selection debugging messages (when mac80211
0277 is a TDLS STA).
0278 It should not be selected on production systems as those
0279 messages are remotely triggerable.
0280
0281 Do not select this option.
0282
0283 config MAC80211_DEBUG_COUNTERS
0284 bool "Extra statistics for TX/RX debugging"
0285 depends on MAC80211_DEBUG_MENU
0286 depends on MAC80211_DEBUGFS
0287 help
0288 Selecting this option causes mac80211 to keep additional
0289 and very verbose statistics about TX and RX handler use
0290 as well as a few selected dot11 counters. These will be
0291 exposed in debugfs.
0292
0293 Note that some of the counters are not concurrency safe
0294 and may thus not always be accurate.
0295
0296 If unsure, say N.
0297
0298 config MAC80211_STA_HASH_MAX_SIZE
0299 int "Station hash table maximum size" if MAC80211_DEBUG_MENU
0300 default 0
0301 help
0302 Setting this option to a low value (e.g. 4) allows testing the
0303 hash table with collisions relatively deterministically (just
0304 connect more stations than the number selected here.)
0305
0306 If unsure, leave the default of 0.