From 3691db26f7d131d5fe9a6e851332d49ef5d5acc5 Mon Sep 17 00:00:00 2001 From: Johannes Berg Date: Sat, 2 Feb 2019 23:16:03 +0100 Subject: [PATCH] tests: Add test reconnecting on assoc failure Add a test that drops the authentication frame, so that hostapd thinks the station is unknown, and then sends one by itself, so the station thinks it's associated. This tests mostly the kernel's capability to recover from this scenario. Signed-off-by: Johannes Berg --- tests/hwsim/test_ap_open.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/tests/hwsim/test_ap_open.py b/tests/hwsim/test_ap_open.py index 390792535..c60b325cc 100644 --- a/tests/hwsim/test_ap_open.py +++ b/tests/hwsim/test_ap_open.py @@ -129,6 +129,36 @@ def test_ap_open_assoc_timeout(dev, apdev): hapd.set("ext_mgmt_frame_handling", "0") dev[0].wait_connected(timeout=15) +def test_ap_open_auth_drop_sta(dev, apdev): + """AP dropping station after successful authentication""" + hapd = hostapd.add_ap(apdev[0]['ifname'], { "ssid": "open" }) + dev[0].scan(freq="2412") + hapd.set("ext_mgmt_frame_handling", "1") + dev[0].connect("open", key_mgmt="NONE", scan_freq="2412", + wait_connect=False) + for i in range(0, 10): + req = hapd.mgmt_rx() + if req is None: + raise Exception("MGMT RX wait timed out") + if req['subtype'] == 11: + break + req = None + if not req: + raise Exception("Authentication frame not received") + + # turn off before sending successful response + hapd.set("ext_mgmt_frame_handling", "0") + + resp = {} + resp['fc'] = req['fc'] + resp['da'] = req['sa'] + resp['sa'] = req['da'] + resp['bssid'] = req['bssid'] + resp['payload'] = struct.pack('