![Javier Cardona](/assets/img/avatar_default.png)
This patch adds MBSS extensible synchronization framework (Sec. 13.13.2 of IEEE Std. 802.11-2012). The framework is implemented via an ops table which defines the following functions: rx_bcn_presp() - this is called every time a mesh beacon is received. adjust_tbtt() - this is called immediately before a beacon is about to be transmitted. The default neighbor offset synchronization defined in the standard is implemented. We also provide template functions for vendor specific methods. When neighbor offset synchronization is active (which is the default) mesh neighbors in the same MBSS will track timing offsets to each other and compensate clock drift. In our tests we observed that this mesh synchronization implementation successfully corrected drifts between stations of ~2PPM while introducing a jitter of ~20us. It is also possible to test this framework on mac80211_hwsim simulated phys to see how it behaves under different topologies, over poor links, etc. Signed-off-by: Marco Porsch <marco.porsch@s2005.tu-chemnitz.de> Signed-off-by: Pavel Zubarev <pavel.zubarev@gmail.com> Signed-off-by: Javier Cardona <javier@cozybit.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
261 lines
7.6 KiB
Plaintext
261 lines
7.6 KiB
Plaintext
config MAC80211
|
|
tristate "Generic IEEE 802.11 Networking Stack (mac80211)"
|
|
depends on CFG80211
|
|
select CRYPTO
|
|
select CRYPTO_ARC4
|
|
select CRYPTO_AES
|
|
select CRC32
|
|
select AVERAGE
|
|
---help---
|
|
This option enables the hardware independent IEEE 802.11
|
|
networking stack.
|
|
|
|
comment "CFG80211 needs to be enabled for MAC80211"
|
|
depends on CFG80211=n
|
|
|
|
if MAC80211 != n
|
|
|
|
config MAC80211_HAS_RC
|
|
bool
|
|
|
|
config MAC80211_RC_PID
|
|
bool "PID controller based rate control algorithm" if EXPERT
|
|
select MAC80211_HAS_RC
|
|
---help---
|
|
This option enables a TX rate control algorithm for
|
|
mac80211 that uses a PID controller to select the TX
|
|
rate.
|
|
|
|
config MAC80211_RC_MINSTREL
|
|
bool "Minstrel" if EXPERT
|
|
select MAC80211_HAS_RC
|
|
default y
|
|
---help---
|
|
This option enables the 'minstrel' TX rate control algorithm
|
|
|
|
config MAC80211_RC_MINSTREL_HT
|
|
bool "Minstrel 802.11n support" if EXPERT
|
|
depends on MAC80211_RC_MINSTREL
|
|
default y
|
|
---help---
|
|
This option enables the 'minstrel_ht' TX rate control algorithm
|
|
|
|
choice
|
|
prompt "Default rate control algorithm"
|
|
depends on MAC80211_HAS_RC
|
|
default MAC80211_RC_DEFAULT_MINSTREL
|
|
---help---
|
|
This option selects the default rate control algorithm
|
|
mac80211 will use. Note that this default can still be
|
|
overridden through the ieee80211_default_rc_algo module
|
|
parameter if different algorithms are available.
|
|
|
|
config MAC80211_RC_DEFAULT_PID
|
|
bool "PID controller based rate control algorithm"
|
|
depends on MAC80211_RC_PID
|
|
---help---
|
|
Select the PID controller based rate control as the
|
|
default rate control algorithm. You should choose
|
|
this unless you know what you are doing.
|
|
|
|
config MAC80211_RC_DEFAULT_MINSTREL
|
|
bool "Minstrel"
|
|
depends on MAC80211_RC_MINSTREL
|
|
---help---
|
|
Select Minstrel as the default rate control algorithm.
|
|
|
|
|
|
endchoice
|
|
|
|
config MAC80211_RC_DEFAULT
|
|
string
|
|
default "minstrel_ht" if MAC80211_RC_DEFAULT_MINSTREL && MAC80211_RC_MINSTREL_HT
|
|
default "minstrel" if MAC80211_RC_DEFAULT_MINSTREL
|
|
default "pid" if MAC80211_RC_DEFAULT_PID
|
|
default ""
|
|
|
|
endif
|
|
|
|
comment "Some wireless drivers require a rate control algorithm"
|
|
depends on MAC80211 && MAC80211_HAS_RC=n
|
|
|
|
config MAC80211_MESH
|
|
bool "Enable mac80211 mesh networking (pre-802.11s) support"
|
|
depends on MAC80211 && EXPERIMENTAL
|
|
---help---
|
|
This options enables support of Draft 802.11s mesh networking.
|
|
The implementation is based on Draft 2.08 of the Mesh Networking
|
|
amendment. However, no compliance with that draft is claimed or even
|
|
possible, as drafts leave a number of identifiers to be defined after
|
|
ratification. For more information visit http://o11s.org/.
|
|
|
|
config MAC80211_LEDS
|
|
bool "Enable LED triggers"
|
|
depends on MAC80211
|
|
depends on LEDS_CLASS
|
|
select LEDS_TRIGGERS
|
|
---help---
|
|
This option enables a few LED triggers for different
|
|
packet receive/transmit events.
|
|
|
|
config MAC80211_DEBUGFS
|
|
bool "Export mac80211 internals in DebugFS"
|
|
depends on MAC80211 && DEBUG_FS
|
|
---help---
|
|
Select this to see extensive information about
|
|
the internal state of mac80211 in debugfs.
|
|
|
|
Say N unless you know you need this.
|
|
|
|
menuconfig MAC80211_DEBUG_MENU
|
|
bool "Select mac80211 debugging features"
|
|
depends on MAC80211
|
|
---help---
|
|
This option collects various mac80211 debug settings.
|
|
|
|
config MAC80211_NOINLINE
|
|
bool "Do not inline TX/RX handlers"
|
|
depends on MAC80211_DEBUG_MENU
|
|
---help---
|
|
This option affects code generation in mac80211, when
|
|
selected some functions are marked "noinline" to allow
|
|
easier debugging of problems in the transmit and receive
|
|
paths.
|
|
|
|
This option increases code size a bit and inserts a lot
|
|
of function calls in the code, but is otherwise safe to
|
|
enable.
|
|
|
|
If unsure, say N unless you expect to be finding problems
|
|
in mac80211.
|
|
|
|
config MAC80211_VERBOSE_DEBUG
|
|
bool "Verbose debugging output"
|
|
depends on MAC80211_DEBUG_MENU
|
|
---help---
|
|
Selecting this option causes mac80211 to print out
|
|
many debugging messages. It should not be selected
|
|
on production systems as some of the messages are
|
|
remotely triggerable.
|
|
|
|
Do not select this option.
|
|
|
|
config MAC80211_HT_DEBUG
|
|
bool "Verbose HT debugging"
|
|
depends on MAC80211_DEBUG_MENU
|
|
---help---
|
|
This option enables 802.11n High Throughput features
|
|
debug tracing output.
|
|
|
|
It should not be selected on production systems as some
|
|
of the messages are remotely triggerable.
|
|
|
|
Do not select this option.
|
|
|
|
config MAC80211_TKIP_DEBUG
|
|
bool "Verbose TKIP debugging"
|
|
depends on MAC80211_DEBUG_MENU
|
|
---help---
|
|
Selecting this option causes mac80211 to print out
|
|
very verbose TKIP debugging messages. It should not
|
|
be selected on production systems as those messages
|
|
are remotely triggerable.
|
|
|
|
Do not select this option.
|
|
|
|
config MAC80211_IBSS_DEBUG
|
|
bool "Verbose IBSS debugging"
|
|
depends on MAC80211_DEBUG_MENU
|
|
---help---
|
|
Selecting this option causes mac80211 to print out
|
|
very verbose IBSS debugging messages. It should not
|
|
be selected on production systems as those messages
|
|
are remotely triggerable.
|
|
|
|
Do not select this option.
|
|
|
|
config MAC80211_VERBOSE_PS_DEBUG
|
|
bool "Verbose powersave mode debugging"
|
|
depends on MAC80211_DEBUG_MENU
|
|
---help---
|
|
Selecting this option causes mac80211 to print out very
|
|
verbose power save mode debugging messages (when mac80211
|
|
is an AP and has power saving stations.)
|
|
It should not be selected on production systems as those
|
|
messages are remotely triggerable.
|
|
|
|
Do not select this option.
|
|
|
|
config MAC80211_VERBOSE_MPL_DEBUG
|
|
bool "Verbose mesh peer link debugging"
|
|
depends on MAC80211_DEBUG_MENU
|
|
depends on MAC80211_MESH
|
|
---help---
|
|
Selecting this option causes mac80211 to print out very
|
|
verbose mesh peer link debugging messages (when mac80211
|
|
is taking part in a mesh network).
|
|
It should not be selected on production systems as those
|
|
messages are remotely triggerable.
|
|
|
|
Do not select this option.
|
|
|
|
config MAC80211_VERBOSE_MPATH_DEBUG
|
|
bool "Verbose mesh path debugging"
|
|
depends on MAC80211_DEBUG_MENU
|
|
depends on MAC80211_MESH
|
|
---help---
|
|
Selecting this option causes mac80211 to print out very
|
|
verbose mesh path selection debugging messages (when mac80211
|
|
is taking part in a mesh network).
|
|
It should not be selected on production systems as those
|
|
messages are remotely triggerable.
|
|
|
|
Do not select this option.
|
|
|
|
config MAC80211_VERBOSE_MHWMP_DEBUG
|
|
bool "Verbose mesh HWMP routing debugging"
|
|
depends on MAC80211_DEBUG_MENU
|
|
depends on MAC80211_MESH
|
|
---help---
|
|
Selecting this option causes mac80211 to print out very
|
|
verbose mesh routing (HWMP) debugging messages (when mac80211
|
|
is taking part in a mesh network).
|
|
It should not be selected on production systems as those
|
|
messages are remotely triggerable.
|
|
|
|
Do not select this option.
|
|
|
|
config MAC80211_VERBOSE_MESH_SYNC_DEBUG
|
|
bool "Verbose mesh mesh synchronization debugging"
|
|
depends on MAC80211_DEBUG_MENU
|
|
depends on MAC80211_MESH
|
|
---help---
|
|
Selecting this option causes mac80211 to print out very verbose mesh
|
|
synchronization debugging messages (when mac80211 is taking part in a
|
|
mesh network).
|
|
|
|
Do not select this option.
|
|
|
|
config MAC80211_VERBOSE_TDLS_DEBUG
|
|
bool "Verbose TDLS debugging"
|
|
depends on MAC80211_DEBUG_MENU
|
|
---help---
|
|
Selecting this option causes mac80211 to print out very
|
|
verbose TDLS selection debugging messages (when mac80211
|
|
is a TDLS STA).
|
|
It should not be selected on production systems as those
|
|
messages are remotely triggerable.
|
|
|
|
Do not select this option.
|
|
|
|
config MAC80211_DEBUG_COUNTERS
|
|
bool "Extra statistics for TX/RX debugging"
|
|
depends on MAC80211_DEBUG_MENU
|
|
depends on MAC80211_DEBUGFS
|
|
---help---
|
|
Selecting this option causes mac80211 to keep additional
|
|
and very verbose statistics about TX and RX handler use
|
|
and show them in debugfs.
|
|
|
|
If unsure, say N.
|