mac80211: set hostapd op_class for 6 GHz
[openwrt/staging/ynezz.git] / package / network / services / hostapd / patches / 016-tests-DFS-test-for-wpa_supplicant-mesh.patch
1 From 6ee4e70d469b8ce05013ed524eea32ea303e6563 Mon Sep 17 00:00:00 2001
2 From: Markus Theil <markus.theil@tu-ilmenau.de>
3 Date: Tue, 30 Jun 2020 14:19:04 +0200
4 Subject: [PATCH 16/19] tests: DFS test for wpa_supplicant mesh
5
6 Add a test with uses a DFS channel, waits for CAC
7 afterwards successfull mesh join and then triggers
8 a radar event and check if the mesh comes up again
9 on the same device.
10
11 Signed-off-by: Markus Theil <markus.theil@tu-ilmenau.de>
12 ---
13 tests/hwsim/test_wpas_mesh.py | 56 +++++++++++++++++++++++++++++++++--
14 1 file changed, 54 insertions(+), 2 deletions(-)
15
16 --- a/tests/hwsim/test_wpas_mesh.py
17 +++ b/tests/hwsim/test_wpas_mesh.py
18 @@ -80,8 +80,23 @@ def check_mesh_scan(dev, params, other_s
19 if '[MESH]' not in bss['flags']:
20 raise Exception("BSS output did not include MESH flag")
21
22 -def check_mesh_group_added(dev):
23 - ev = dev.wait_event(["MESH-GROUP-STARTED"])
24 +def check_dfs_started(dev, timeout=10):
25 + ev = dev.wait_event(["DFS-CAC-START"], timeout=timeout)
26 + if ev is None:
27 + raise Exception("Test exception: CAC did not start")
28 +
29 +def check_dfs_finished(dev, timeout=70):
30 + ev = dev.wait_event(["DFS-CAC-COMPLETED"], timeout=timeout)
31 + if ev is None:
32 + raise Exception("Test exception: CAC did not finish")
33 +
34 +def check_mesh_radar_handling_finished(dev, timeout=75):
35 + ev = dev.wait_event(["CTRL-EVENT-CHANNEL-SWITCH", "MESH-GROUP-STARTED"], timeout=timeout)
36 + if ev is None:
37 + raise Exception("Test exception: Couldn't join mesh")
38 +
39 +def check_mesh_group_added(dev, timeout=10):
40 + ev = dev.wait_event(["MESH-GROUP-STARTED"], timeout=timeout)
41 if ev is None:
42 raise Exception("Test exception: Couldn't join mesh")
43
44 @@ -91,6 +106,10 @@ def check_mesh_group_removed(dev):
45 if ev is None:
46 raise Exception("Test exception: Couldn't leave mesh")
47
48 +def check_regdom_change(dev, timeout=10):
49 + ev = dev.wait_event(["CTRL-EVENT-REGDOM-CHANGE"], timeout=timeout)
50 + if ev is None:
51 + raise Exception("Test exception: No regdom change happened.")
52
53 def check_mesh_peer_connected(dev, timeout=10):
54 ev = dev.wait_event(["MESH-PEER-CONNECTED"], timeout=timeout)
55 @@ -167,6 +186,39 @@ def test_wpas_mesh_group_remove(dev):
56 check_mesh_group_removed(dev[0])
57 dev[0].mesh_group_remove()
58
59 +def dfs_simulate_radar(dev):
60 + logger.info("Trigger a simulated radar event")
61 + phyname = dev.get_driver_status_field("phyname")
62 + radar_file = '/sys/kernel/debug/ieee80211/' + phyname + '/hwsim/dfs_simulate_radar'
63 + with open(radar_file, 'w') as f:
64 + f.write('1')
65 +
66 +@long_duration_test
67 +def test_wpas_mesh_peer_connected_dfs(dev):
68 + """wpa_supplicant MESH peer connected"""
69 + dev[0].set("country", "DE")
70 + dev[1].set("country", "DE")
71 +
72 + check_regdom_change(dev[0])
73 + check_regdom_change(dev[1])
74 +
75 + check_mesh_support(dev[0])
76 + add_open_mesh_network(dev[0], freq="5500", beacon_int=160)
77 + add_open_mesh_network(dev[1], freq="5500", beacon_int=160)
78 + check_dfs_started(dev[0])
79 + check_dfs_finished(dev[0])
80 + check_mesh_joined_connected(dev, timeout0=10)
81 +
82 + dfs_simulate_radar(dev[0])
83 +
84 + check_mesh_radar_handling_finished(dev[0], timeout=75)
85 +
86 + dev[0].set("country", "00")
87 + dev[1].set("country", "00")
88 +
89 + check_regdom_change(dev[0])
90 + check_regdom_change(dev[1])
91 +
92 def test_wpas_mesh_peer_connected(dev):
93 """wpa_supplicant MESH peer connected"""
94 check_mesh_support(dev[0])