[PATCH v2 00/12] mesh: support for DFS
Markus Theil
markus.theil at tu-ilmenau.de
Tue Jun 30 08:18:55 EDT 2020
This series is based on the remaining patches from Peter Oh's previous series
and is build on top of my previous series
"v4: Fix and unify wpa_supplicant AP/mesh frequency setup".
Masashi Honma previously reported memory leaks when running the
esh_secure_ocv_mix_legacy test. I was not able to reproduce this, with my
patch series.
My additional patches contain the following changes:
(1) Issue:
MESH_GROUP_STARTED gets send before DFS-CAC finishes
Suggested fix:
Send MESH_GROUP_STARTED in mesh join completion callback, which happens
after CAC, if CAC is necessary. Additional, this patch implements a TODO,
which always leaves the mesh on deinit. In order for this to work, some
additional cleanup bool flags are added.
(2) Issue:
Unsuccessfull channel switch -> hostapd calls deinit and init without
wpa_supplicant taking notice
Suggested fix:
add init/deinit callbacks and use them in wpa_supplicant mesh code
(3) Add simple DFS test for wpa_supplicant
(4) Issue:
mesh_oom test fails at allocation failure after 11 allocations
TESTING: fail allocation at wpa_supplicant_mesh_init
backtrace[0] = testing_fail_alloc
backtrace[1] = os_malloc
backtrace[2] = os_realloc
backtrace[3] = phy_info_band
backtrace[4] = phy_info_handler
backtrace[5] = send_and_recv
backtrace[6] = send_and_recv_msgs
backtrace[7] = nl80211_get_hw_feature_data
backtrace[8] = hostapd_get_hw_feature_data
backtrace[9] = hostapd_get_hw_features
backtrace[10] = setup_interface2
backtrace[11] = setup_interface
backtrace[12] = hostapd_setup_interface
backtrace[13] = wpa_supplicant_mesh_init
backtrace[14] = wpa_supplicant_join_mesh
backtrace[15] = wpa_supplicant_associate
If hostapd_get_hw_features fails, ifmsh->freq is not set (0), which leads
to a call to hostapd_set_freq_params with this zero frequency.
Afterwards, mesh join fails, because freq 0 should be joined.
Suggested fix:
Only change the freq params, if we know the old frequency.
(5) factor out mesh frequency setup
(6) Issue:
After mesh DFS channel switch with the target channel only usable but not
available, no CSA is send, an some devices will end on different randomly
choosen channels. Therefore the mesh network became unconnected.
Suggested fix:
Use a deterministic channel calculated from the sha256 hash of the mesh id
in order to get a connected network in most of the cases.
A better solution would need coordination mechanisms in the mesh network.
Markus Theil (6):
mesh: fixes for mesh init/deinit
mesh: fix DFS deinit/init
tests: DFS test for wpa_supplicant mesh
mesh: fix mesh_oom test
mesh: move mesh freq setting to own function
mesh: use deterministic channel on channel switch
Peter Oh (6):
mesh: use setup completion callback to complete mesh join
mesh: update ssid->frequency as pri/sec channel switch
mesh: Allow DFS channels to be selected if dfs is enabled
mesh: do not set offchanok on DFS channels in non-ETSI
mesh: fix channel switch error during CAC
mesh: inform kernel driver DFS handler in userspace
src/ap/dfs.c | 22 +++-
src/ap/hostapd.c | 28 +++++-
src/ap/hostapd.h | 6 ++
src/drivers/driver.h | 1 +
src/drivers/driver_nl80211.c | 26 +++++
tests/hwsim/test_wpas_mesh.py | 56 ++++++++++-
wpa_supplicant/mesh.c | 173 ++++++++++++++++++++++++++++----
wpa_supplicant/mesh.h | 6 +-
wpa_supplicant/wpa_supplicant.c | 33 +++---
9 files changed, 309 insertions(+), 42 deletions(-)
--
2.27.0
More information about the Hostap
mailing list