From 50c3825c6d55f58ce76c21613f4f9bd2d9b0fa8e Mon Sep 17 00:00:00 2001 From: Jouni Malinen Date: Thu, 5 Mar 2015 16:23:33 +0200 Subject: [PATCH] tests: DFS with wpa_supplicant AP mode Signed-off-by: Jouni Malinen --- tests/hwsim/test_wpas_ap.py | 41 +++++++++++++++++++++++++++++++++++ tests/hwsim/vm/parallel-vm.py | 1 + 2 files changed, 42 insertions(+) diff --git a/tests/hwsim/test_wpas_ap.py b/tests/hwsim/test_wpas_ap.py index c9ee8b83e..5af07b178 100644 --- a/tests/hwsim/test_wpas_ap.py +++ b/tests/hwsim/test_wpas_ap.py @@ -9,6 +9,8 @@ import logging logger = logging.getLogger() import hwsim_utils +from utils import HwsimSkip +from test_p2p_channel import set_country def wait_ap_ready(dev): ev = dev.wait_event(["CTRL-EVENT-CONNECTED"]) @@ -274,3 +276,42 @@ def test_wpas_ap_wps_pbc_overlap(dev): dev[0].request("WPS_CANCEL") dev[1].request("WPS_CANCEL") dev[2].request("WPS_CANCEL") + +def test_wpas_ap_dfs(dev): + """wpa_supplicant AP mode - DFS""" + try: + _test_wpas_ap_dfs(dev) + finally: + set_country("00") + dev[0].request("SET country 00") + dev[1].flush_scan_cache() + +def _test_wpas_ap_dfs(dev): + set_country("US") + dev[0].request("SET country US") + id = dev[0].add_network() + dev[0].set_network(id, "mode", "2") + dev[0].set_network_quoted(id, "ssid", "wpas-ap-dfs") + dev[0].set_network(id, "key_mgmt", "NONE") + dev[0].set_network(id, "frequency", "5260") + dev[0].set_network(id, "scan_freq", "5260") + dev[0].select_network(id) + + ev = dev[0].wait_event(["DFS-CAC-START"]) + if ev is None: + # For now, assume DFS is not supported by all kernel builds. + raise HwsimSkip("CAC did not start - assume not supported") + + ev = dev[0].wait_event(["DFS-CAC-COMPLETED"], timeout=70) + if ev is None: + raise Exception("CAC did not complete") + if "success=1" not in ev: + raise Exception("CAC failed") + if "freq=5260" not in ev: + raise Exception("Unexpected DFS freq result") + + ev = dev[0].wait_event(["CTRL-EVENT-CONNECTED"]) + if ev is None: + raise Exception("AP failed to start") + + dev[1].connect("wpas-ap-dfs", key_mgmt="NONE") diff --git a/tests/hwsim/vm/parallel-vm.py b/tests/hwsim/vm/parallel-vm.py index 13205fe8a..202ba85ec 100755 --- a/tests/hwsim/vm/parallel-vm.py +++ b/tests/hwsim/vm/parallel-vm.py @@ -350,6 +350,7 @@ def main(): "dfs", "grpform_cred_ready_timeout", "hostapd_oom_wpa2_eap_connect", + "wpas_ap_dfs", "ap_wps_pbc_timeout" ] for l in long: if l in tests: