diff --git a/tests/hwsim/test_scan.py b/tests/hwsim/test_scan.py index 1ca4bd0dd..56f10f832 100644 --- a/tests/hwsim/test_scan.py +++ b/tests/hwsim/test_scan.py @@ -790,6 +790,29 @@ def _test_scan_random_mac(dev, apdev, params): if not found: raise Exception("Fixed OUI random address not seen") +def test_scan_random_mac_connected(dev, apdev, params): + """Random MAC address in scans while connected""" + try: + _test_scan_random_mac_connected(dev, apdev, params) + finally: + dev[0].request("MAC_RAND_SCAN all enable=0") + +def _test_scan_random_mac_connected(dev, apdev, params): + hostapd.add_ap(apdev[0], { "ssid": "test-scan" }) + bssid = apdev[0]['bssid'] + if dev[0].get_driver_status_field('capa.mac_addr_rand_scan_supported') != '1': + raise HwsimSkip("Driver does not support random MAC address for scanning") + + dev[0].connect("test-scan", key_mgmt="NONE", scan_freq="2412") + + hostapd.add_ap(apdev[1], { "ssid": "test-scan-2", "channel": "11" }) + bssid1 = apdev[1]['bssid'] + + # Verify that scanning can be completed while connected even if that means + # disabling use of random MAC address. + dev[0].request("MAC_RAND_SCAN all enable=1") + dev[0].scan_for_bss(bssid1, freq=2462, force_scan=True) + @remote_compatible def test_scan_trigger_failure(dev, apdev): """Scan trigger to the driver failing""" diff --git a/tests/hwsim/wpasupplicant.py b/tests/hwsim/wpasupplicant.py index ba2552c94..23cb395da 100644 --- a/tests/hwsim/wpasupplicant.py +++ b/tests/hwsim/wpasupplicant.py @@ -1053,9 +1053,12 @@ class WpaSupplicant: raise Exception("Failed to trigger scan") if no_wait: return - ev = self.wait_event(["CTRL-EVENT-SCAN-RESULTS"], 15) + ev = self.wait_event(["CTRL-EVENT-SCAN-RESULTS", + "CTRL-EVENT-SCAN-FAILED"], 15) if ev is None: raise Exception("Scan timed out") + if "CTRL-EVENT-SCAN-FAILED" in ev: + raise Exception("Scan failed: " + ev) def scan_for_bss(self, bssid, freq=None, force_scan=False, only_new=False): if not force_scan and self.get_bss(bssid) is not None: