tests: Fix bgscan_learn_beacon_loss with REPORTS_TX_ACK_STATUS

Stopping the AP from beaconing will also stop it from acknowledging
frames and that resulted in bgscan_learn_beacon_loss failing when
mac80211_hwsim is registering REPORTS_TX_ACK_STATUS. Work around this by
moving to using PMF so that the station ignores the unprotected
deauthentiation frames from the AP and also disabling SA Query. This
allows the AP to be stopped and restarted with large enough Beacon
interval to allow the station to detect beacon loss.

This is identical to the earlier design change for
bgscan_simple_beacon_loss (somehow this bgscan_learn_beacon_loss test
case managed to pass at that time).

Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
Jouni Malinen 2020-03-22 19:52:38 +02:00
parent b967b5e859
commit 9efac01020
1 changed files with 11 additions and 3 deletions

View File

@ -246,13 +246,21 @@ def test_bgscan_learn(dev, apdev):
def test_bgscan_learn_beacon_loss(dev, apdev):
"""bgscan_simple and beacon loss"""
hapd = hostapd.add_ap(apdev[0], {"ssid": "bgscan"})
params = hostapd.wpa2_params(ssid="bgscan", passphrase="12345678")
params["wpa_key_mgmt"] = "WPA-PSK-SHA256"
params["ieee80211w"] = "2"
hapd = hostapd.add_ap(apdev[0], params)
dev[0].connect("bgscan", key_mgmt="NONE", scan_freq="2412",
bgscan="learn:1:-20:2")
dev[0].set("disable_sa_query", "1")
dev[0].connect("bgscan", ieee80211w="2", key_mgmt="WPA-PSK-SHA256",
psk="12345678", scan_freq="2412", bgscan="learn:1:-20:2")
hapd.set("ext_mgmt_frame_handling", "1")
if "OK" not in hapd.request("STOP_AP"):
raise Exception("Failed to stop AP")
hapd.disable()
hapd.set("ssid", "foo")
hapd.set("beacon_int", "10000")
hapd.enable()
ev = dev[0].wait_event(["CTRL-EVENT-BEACON-LOSS"], timeout=10)
if ev is None:
raise Exception("Beacon loss not reported")