diff options
Diffstat (limited to 'package/network/services/hostapd/patches/002-mesh-fix-channel-init-order-disable-pri-sec-channel-.patch')
-rw-r--r-- | package/network/services/hostapd/patches/002-mesh-fix-channel-init-order-disable-pri-sec-channel-.patch | 126 |
1 files changed, 0 insertions, 126 deletions
diff --git a/package/network/services/hostapd/patches/002-mesh-fix-channel-init-order-disable-pri-sec-channel-.patch b/package/network/services/hostapd/patches/002-mesh-fix-channel-init-order-disable-pri-sec-channel-.patch deleted file mode 100644 index c7101b1dbc..0000000000 --- a/package/network/services/hostapd/patches/002-mesh-fix-channel-init-order-disable-pri-sec-channel-.patch +++ /dev/null @@ -1,126 +0,0 @@ -From d869c753b79a1423c2bd9b0afdfa0d89d55a930c Mon Sep 17 00:00:00 2001 -From: Markus Theil <markus.theil@tu-ilmenau.de> -Date: Tue, 30 Jun 2020 13:53:18 +0200 -Subject: [PATCH 02/19] mesh: fix channel init order, disable pri/sec channel - switch - -wpa_supplicant_conf_ap_ht has to happen before hostapd_setup_interface -in order for its configuration settings to have effect on interface -configuration. - -Disable primary and secondary channel switch because of missing tie -breaking rule/frames in mesh networks. A rather long comment about -this issue is placed in mesh.c in the corresponding place. - -In consequence, remove mesh coex test, which contradicts this change. - -I was not able to reproduce the memory corruption during -mesh_secure_ocv_mix_legacy, which lead to a revert of a similar patch -in the past. - -Signed-off-by: Markus Theil <markus.theil@tu-ilmenau.de> ---- - tests/hwsim/test_wpas_mesh.py | 50 ----------------------------------- - wpa_supplicant/mesh.c | 25 ++++++++++++++++-- - 2 files changed, 23 insertions(+), 52 deletions(-) - ---- a/tests/hwsim/test_wpas_mesh.py -+++ b/tests/hwsim/test_wpas_mesh.py -@@ -933,56 +933,6 @@ def _test_wpas_mesh_open_5ghz(dev, apdev - dev[0].dump_monitor() - dev[1].dump_monitor() - --def test_wpas_mesh_open_5ghz_coex(dev, apdev): -- """Mesh network on 5 GHz band and 20/40 coex change""" -- try: -- _test_wpas_mesh_open_5ghz_coex(dev, apdev) -- finally: -- dev[0].request("MESH_GROUP_REMOVE " + dev[0].ifname) -- dev[1].request("MESH_GROUP_REMOVE " + dev[1].ifname) -- set_world_reg(apdev0=apdev[0], dev0=dev[0]) -- dev[0].flush_scan_cache() -- dev[1].flush_scan_cache() -- --def _test_wpas_mesh_open_5ghz_coex(dev, apdev): -- check_mesh_support(dev[0]) -- subprocess.call(['iw', 'reg', 'set', 'US']) -- -- # Start a 20 MHz BSS on channel 40 that would be the secondary channel of -- # HT40+ mesh on channel 36. -- params = {"ssid": "test-ht40", -- "hw_mode": "a", -- "channel": "40", -- "country_code": "US"} -- hapd = hostapd.add_ap(apdev[0], params) -- bssid = hapd.own_addr() -- -- for i in range(2): -- for j in range(5): -- ev = dev[i].wait_event(["CTRL-EVENT-REGDOM-CHANGE"], timeout=5) -- if ev is None: -- raise Exception("No regdom change event") -- if "alpha2=US" in ev: -- break -- dev[i].scan_for_bss(bssid, freq=5200) -- add_open_mesh_network(dev[i], freq="5180") -- -- check_mesh_joined_connected(dev) -- -- freq = dev[0].get_status_field("freq") -- if freq != "5200": -- raise Exception("Unexpected STATUS freq=" + freq) -- sig = dev[0].request("SIGNAL_POLL").splitlines() -- if "FREQUENCY=5200" not in sig: -- raise Exception("Unexpected SIGNAL_POLL output: " + str(sig)) -- -- hapd.disable() -- dev[0].mesh_group_remove() -- dev[1].mesh_group_remove() -- check_mesh_group_removed(dev[0]) -- check_mesh_group_removed(dev[1]) -- dev[0].dump_monitor() -- dev[1].dump_monitor() - - def test_wpas_mesh_open_ht40(dev, apdev): - """Mesh and HT40 support difference""" ---- a/wpa_supplicant/mesh.c -+++ b/wpa_supplicant/mesh.c -@@ -363,6 +363,29 @@ static int wpa_supplicant_mesh_init(stru - conf->basic_rates[rate_len] = -1; - } - -+ /* While it can enhance performance to switch the primary channel, which -+ * is also the secondary channel of another network at the same time), -+ * to the other primary channel, problems exist with this in mesh networks. -+ * -+ * Example with problems: -+ * - 3 mesh nodes M1-M3, freq (5200, 5180) -+ * - other node O1, e.g. AP mode, freq (5180, 5200), -+ * Locations: O1 M1 M2 M3 -+ * -+ * M3 can only send frames to M1 over M2, no direct connection is possible -+ * Start O1, M1 and M3 first, M1 or O1 will switch channels to align with -+ * each other. M3 does not swap, because M1 or O1 cannot be reached. -+ * M2 is started afterwards and can either connect to M3 or M1 because of -+ * this primary secondary channel switch. -+ * -+ * Solutions: (1) central coordination -> not always possible -+ * (2) disable pri/sec channel switch in mesh networks -+ * -+ * In AP mode, when all nodes can work independently, this poses of course -+ * no problem, therefore disable it only in mesh mode.`*/ -+ conf->no_pri_sec_switch = 1; -+ wpa_supplicant_conf_ap_ht(wpa_s, ssid, conf); -+ - if (wpa_drv_init_mesh(wpa_s)) { - wpa_msg(wpa_s, MSG_ERROR, "Failed to init mesh in driver"); - return -1; -@@ -374,8 +397,6 @@ static int wpa_supplicant_mesh_init(stru - return -1; - } - -- wpa_supplicant_conf_ap_ht(wpa_s, ssid, conf); -- - return 0; - out_free: - wpa_supplicant_mesh_deinit(wpa_s); |