ev = dev[0].wait_event(["CTRL-EVENT-SCAN-STARTED"], timeout=0.2)
if ev is not None:
raise Exception("Unexpected scan started")
+
+def test_scan_setband(dev, apdev):
+ """Band selection for scan operations"""
+ try:
+ hapd = None
+ hapd2 = None
+ params = { "ssid": "test-setband",
+ "hw_mode": "a",
+ "channel": "36",
+ "country_code": "US" }
+ hapd = hostapd.add_ap(apdev[0]['ifname'], params)
+ bssid = apdev[0]['bssid']
+
+ params = { "ssid": "test-setband",
+ "hw_mode": "g",
+ "channel": "1" }
+ hapd2 = hostapd.add_ap(apdev[1]['ifname'], params)
+ bssid2 = apdev[1]['bssid']
+
+ if "FAIL" not in dev[0].request("SET setband FOO"):
+ raise Exception("Invalid set setband accepted")
+ if "OK" not in dev[0].request("SET setband AUTO"):
+ raise Exception("Failed to set setband")
+ if "OK" not in dev[1].request("SET setband 5G"):
+ raise Exception("Failed to set setband")
+ if "OK" not in dev[2].request("SET setband 2G"):
+ raise Exception("Failed to set setband")
+
+ for i in range(3):
+ dev[i].request("SCAN only_new=1")
+
+ for i in range(3):
+ ev = dev[i].wait_event(["CTRL-EVENT-SCAN-RESULTS"], 15)
+ if ev is None:
+ raise Exception("Scan timed out")
+
+ res = dev[0].request("SCAN_RESULTS")
+ if bssid not in res or bssid2 not in res:
+ raise Exception("Missing scan result(0)")
+
+ res = dev[1].request("SCAN_RESULTS")
+ if bssid not in res:
+ raise Exception("Missing scan result(1)")
+ if bssid2 in res:
+ raise Exception("Unexpected scan result(1)")
+
+ res = dev[2].request("SCAN_RESULTS")
+ if bssid2 not in res:
+ raise Exception("Missing scan result(2)")
+ if bssid in res:
+ raise Exception("Unexpected scan result(2)")
+ finally:
+ if hapd:
+ hapd.request("DISABLE")
+ if hapd2:
+ hapd2.request("DISABLE")
+ subprocess.call(['iw', 'reg', 'set', '00'])
+ for i in range(3):
+ dev[i].request("SET setband AUTO")
+ dev[i].flush_scan_cache()