tests: Avoid race condition in RRM beacon report tests
At least with UML time-travel, it is possible for the response frame to be received before the TX status of the request is delivered. Such a sequence resulted in run_req_beacon() dropping the response event and the following step failing due to a missing event. Avoid this by caching the received response in run_req_beacon() and returning them to the caller. Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
0aecf9e62c
commit
c3c326d2a1
1 changed files with 261 additions and 100 deletions
|
@ -825,8 +825,16 @@ def run_req_beacon(hapd, addr, request):
|
||||||
if "FAIL" in token:
|
if "FAIL" in token:
|
||||||
raise Exception("REQ_BEACON failed")
|
raise Exception("REQ_BEACON failed")
|
||||||
|
|
||||||
ev = hapd.wait_event(["BEACON-REQ-TX-STATUS"], timeout=5)
|
resp = []
|
||||||
if ev is None:
|
for i in range(10):
|
||||||
|
ev = hapd.wait_event(["BEACON-REQ-TX-STATUS",
|
||||||
|
"BEACON-RESP-RX"], timeout=5)
|
||||||
|
if ev is None:
|
||||||
|
raise Exception("No TX status event for beacon request received")
|
||||||
|
if "BEACON-REQ-TX-STATUS" in ev:
|
||||||
|
break
|
||||||
|
resp.append(ev)
|
||||||
|
else:
|
||||||
raise Exception("No TX status event for beacon request received")
|
raise Exception("No TX status event for beacon request received")
|
||||||
fields = ev.split(' ')
|
fields = ev.split(' ')
|
||||||
if fields[1] != addr:
|
if fields[1] != addr:
|
||||||
|
@ -835,7 +843,7 @@ def run_req_beacon(hapd, addr, request):
|
||||||
raise Exception("Unexpected dialog token in TX status: " + fields[2] + " (expected " + token + ")")
|
raise Exception("Unexpected dialog token in TX status: " + fields[2] + " (expected " + token + ")")
|
||||||
if fields[3] != "ack=1":
|
if fields[3] != "ack=1":
|
||||||
raise Exception("Unexected ACK status in TX status: " + fields[3])
|
raise Exception("Unexected ACK status in TX status: " + fields[3])
|
||||||
return token
|
return token, resp
|
||||||
|
|
||||||
@remote_compatible
|
@remote_compatible
|
||||||
def test_rrm_beacon_req_table(dev, apdev):
|
def test_rrm_beacon_req_table(dev, apdev):
|
||||||
|
@ -862,10 +870,13 @@ def test_rrm_beacon_req_table(dev, apdev):
|
||||||
hapd.wait_sta()
|
hapd.wait_sta()
|
||||||
|
|
||||||
req = build_beacon_request(mode=2)
|
req = build_beacon_request(mode=2)
|
||||||
token = run_req_beacon(hapd, addr, req)
|
token, resp = run_req_beacon(hapd, addr, req)
|
||||||
|
|
||||||
for i in range(1, 3):
|
for i in range(1, 3):
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
||||||
if ev is None:
|
if ev is None:
|
||||||
raise Exception("Beacon report %d response not received" % i)
|
raise Exception("Beacon report %d response not received" % i)
|
||||||
fields = ev.split(' ')
|
fields = ev.split(' ')
|
||||||
|
@ -903,11 +914,14 @@ def test_rrm_beacon_req_frame_body_fragmentation(dev, apdev):
|
||||||
hapd.wait_sta()
|
hapd.wait_sta()
|
||||||
|
|
||||||
req = build_beacon_request(mode=2)
|
req = build_beacon_request(mode=2)
|
||||||
token = run_req_beacon(hapd, addr, req)
|
token, resp = run_req_beacon(hapd, addr, req)
|
||||||
|
|
||||||
# 2 beacon reports elements are expected because of fragmentation
|
# 2 beacon reports elements are expected because of fragmentation
|
||||||
for i in range(0, 2):
|
for i in range(0, 2):
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
||||||
if ev is None:
|
if ev is None:
|
||||||
raise Exception("Beacon report %d response not received" % i)
|
raise Exception("Beacon report %d response not received" % i)
|
||||||
fields = ev.split(' ')
|
fields = ev.split(' ')
|
||||||
|
@ -947,10 +961,13 @@ def test_rrm_beacon_req_last_frame_indication(dev, apdev):
|
||||||
|
|
||||||
# The request contains the last beacon report indication subelement
|
# The request contains the last beacon report indication subelement
|
||||||
req = build_beacon_request(mode=2)
|
req = build_beacon_request(mode=2)
|
||||||
token = run_req_beacon(hapd, addr, req + "a40101")
|
token, resp = run_req_beacon(hapd, addr, req + "a40101")
|
||||||
|
|
||||||
for i in range(1, 3):
|
for i in range(1, 3):
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
||||||
if ev is None:
|
if ev is None:
|
||||||
raise Exception("Beacon report %d response not received" % i)
|
raise Exception("Beacon report %d response not received" % i)
|
||||||
fields = ev.split(' ')
|
fields = ev.split(' ')
|
||||||
|
@ -973,10 +990,13 @@ def test_rrm_beacon_req_last_frame_indication(dev, apdev):
|
||||||
|
|
||||||
# The request does not contain the last beacon report indication subelement
|
# The request does not contain the last beacon report indication subelement
|
||||||
req = build_beacon_request(mode=2)
|
req = build_beacon_request(mode=2)
|
||||||
token = run_req_beacon(hapd, addr, req)
|
token, resp = run_req_beacon(hapd, addr, req)
|
||||||
|
|
||||||
for i in range(1, 3):
|
for i in range(1, 3):
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
||||||
if ev is None:
|
if ev is None:
|
||||||
raise Exception("Beacon report %d response not received" % i)
|
raise Exception("Beacon report %d response not received" % i)
|
||||||
fields = ev.split(' ')
|
fields = ev.split(' ')
|
||||||
|
@ -1005,8 +1025,11 @@ def test_rrm_beacon_req_table_detail(dev, apdev):
|
||||||
|
|
||||||
logger.info("Reporting Detail 0")
|
logger.info("Reporting Detail 0")
|
||||||
req = build_beacon_request(mode=2)
|
req = build_beacon_request(mode=2)
|
||||||
token = run_req_beacon(hapd, addr, req + "020100")
|
token, resp = run_req_beacon(hapd, addr, req + "020100")
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
||||||
if ev is None:
|
if ev is None:
|
||||||
raise Exception("Beacon report response not received")
|
raise Exception("Beacon report response not received")
|
||||||
fields = ev.split(' ')
|
fields = ev.split(' ')
|
||||||
|
@ -1017,8 +1040,11 @@ def test_rrm_beacon_req_table_detail(dev, apdev):
|
||||||
hapd.dump_monitor()
|
hapd.dump_monitor()
|
||||||
|
|
||||||
logger.info("Reporting Detail 1")
|
logger.info("Reporting Detail 1")
|
||||||
token = run_req_beacon(hapd, addr, req + "020101")
|
token, resp = run_req_beacon(hapd, addr, req + "020101")
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
||||||
if ev is None:
|
if ev is None:
|
||||||
raise Exception("Beacon report response not received")
|
raise Exception("Beacon report response not received")
|
||||||
fields = ev.split(' ')
|
fields = ev.split(' ')
|
||||||
|
@ -1031,8 +1057,11 @@ def test_rrm_beacon_req_table_detail(dev, apdev):
|
||||||
hapd.dump_monitor()
|
hapd.dump_monitor()
|
||||||
|
|
||||||
logger.info("Reporting Detail 2")
|
logger.info("Reporting Detail 2")
|
||||||
token = run_req_beacon(hapd, addr, req + "020102")
|
token, resp = run_req_beacon(hapd, addr, req + "020102")
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
||||||
if ev is None:
|
if ev is None:
|
||||||
raise Exception("Beacon report response not received")
|
raise Exception("Beacon report response not received")
|
||||||
fields = ev.split(' ')
|
fields = ev.split(' ')
|
||||||
|
@ -1045,15 +1074,21 @@ def test_rrm_beacon_req_table_detail(dev, apdev):
|
||||||
hapd.dump_monitor()
|
hapd.dump_monitor()
|
||||||
|
|
||||||
logger.info("Reporting Detail 3 (invalid)")
|
logger.info("Reporting Detail 3 (invalid)")
|
||||||
token = run_req_beacon(hapd, addr, req + "020103")
|
token, resp = run_req_beacon(hapd, addr, req + "020103")
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=0.2)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=0.2)
|
||||||
if ev is not None:
|
if ev is not None:
|
||||||
raise Exception("Unexpected beacon report response to invalid reporting detail 3")
|
raise Exception("Unexpected beacon report response to invalid reporting detail 3")
|
||||||
hapd.dump_monitor()
|
hapd.dump_monitor()
|
||||||
|
|
||||||
logger.info("Reporting Detail (too short)")
|
logger.info("Reporting Detail (too short)")
|
||||||
token = run_req_beacon(hapd, addr, req + "0200")
|
token, resp = run_req_beacon(hapd, addr, req + "0200")
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=0.2)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=0.2)
|
||||||
if ev is not None:
|
if ev is not None:
|
||||||
raise Exception("Unexpected beacon report response to invalid reporting detail")
|
raise Exception("Unexpected beacon report response to invalid reporting detail")
|
||||||
hapd.dump_monitor()
|
hapd.dump_monitor()
|
||||||
|
@ -1070,8 +1105,11 @@ def test_rrm_beacon_req_table_request(dev, apdev):
|
||||||
hapd.wait_sta()
|
hapd.wait_sta()
|
||||||
|
|
||||||
req = build_beacon_request(mode=2)
|
req = build_beacon_request(mode=2)
|
||||||
token = run_req_beacon(hapd, addr, req + "020101" + "0a03000106")
|
token, resp = run_req_beacon(hapd, addr, req + "020101" + "0a03000106")
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
||||||
if ev is None:
|
if ev is None:
|
||||||
raise Exception("Beacon report response not received")
|
raise Exception("Beacon report response not received")
|
||||||
fields = ev.split(' ')
|
fields = ev.split(' ')
|
||||||
|
@ -1084,22 +1122,32 @@ def test_rrm_beacon_req_table_request(dev, apdev):
|
||||||
hapd.dump_monitor()
|
hapd.dump_monitor()
|
||||||
|
|
||||||
logger.info("Incorrect reporting detail with request subelement")
|
logger.info("Incorrect reporting detail with request subelement")
|
||||||
token = run_req_beacon(hapd, addr, req + "020102" + "0a03000106")
|
token, resp = run_req_beacon(hapd, addr, req + "020102" + "0a03000106")
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=0.2)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=0.2)
|
||||||
if ev is not None:
|
if ev is not None:
|
||||||
raise Exception("Unexpected beacon report response (invalid reporting detail)")
|
raise Exception("Unexpected beacon report response (invalid reporting detail)")
|
||||||
hapd.dump_monitor()
|
hapd.dump_monitor()
|
||||||
|
|
||||||
logger.info("Invalid request subelement length")
|
logger.info("Invalid request subelement length")
|
||||||
token = run_req_beacon(hapd, addr, req + "020101" + "0a00")
|
token, resp = run_req_beacon(hapd, addr, req + "020101" + "0a00")
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=0.2)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=0.2)
|
||||||
if ev is not None:
|
if ev is not None:
|
||||||
raise Exception("Unexpected beacon report response (invalid request subelement length)")
|
raise Exception("Unexpected beacon report response (invalid request subelement length)")
|
||||||
hapd.dump_monitor()
|
hapd.dump_monitor()
|
||||||
|
|
||||||
logger.info("Multiple request subelements")
|
logger.info("Multiple request subelements")
|
||||||
token = run_req_beacon(hapd, addr, req + "020101" + "0a0100" + "0a0101")
|
token, resp = run_req_beacon(hapd, addr,
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=0.2)
|
req + "020101" + "0a0100" + "0a0101")
|
||||||
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=0.2)
|
||||||
if ev is not None:
|
if ev is not None:
|
||||||
raise Exception("Unexpected beacon report response (multiple request subelements)")
|
raise Exception("Unexpected beacon report response (multiple request subelements)")
|
||||||
hapd.dump_monitor()
|
hapd.dump_monitor()
|
||||||
|
@ -1117,32 +1165,44 @@ def test_rrm_beacon_req_table_request_oom(dev, apdev):
|
||||||
req = build_beacon_request(mode=2)
|
req = build_beacon_request(mode=2)
|
||||||
with alloc_fail(dev[0], 1,
|
with alloc_fail(dev[0], 1,
|
||||||
"bitfield_alloc;wpas_rm_handle_beacon_req_subelem"):
|
"bitfield_alloc;wpas_rm_handle_beacon_req_subelem"):
|
||||||
token = run_req_beacon(hapd, addr, req + "020101" + "0a03000106")
|
token, resp = run_req_beacon(hapd, addr, req + "020101" + "0a03000106")
|
||||||
wait_fail_trigger(dev[0], "GET_ALLOC_FAIL")
|
wait_fail_trigger(dev[0], "GET_ALLOC_FAIL")
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=0.1)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=0.1)
|
||||||
if ev is not None:
|
if ev is not None:
|
||||||
raise Exception("Unexpected beacon report response received (OOM)")
|
raise Exception("Unexpected beacon report response received (OOM)")
|
||||||
|
|
||||||
with alloc_fail(dev[0], 1,
|
with alloc_fail(dev[0], 1,
|
||||||
"wpabuf_alloc;wpas_rrm_send_msr_report_mpdu"):
|
"wpabuf_alloc;wpas_rrm_send_msr_report_mpdu"):
|
||||||
token = run_req_beacon(hapd, addr, req + "020101" + "0a03000106")
|
token, resp = run_req_beacon(hapd, addr, req + "020101" + "0a03000106")
|
||||||
wait_fail_trigger(dev[0], "GET_ALLOC_FAIL")
|
wait_fail_trigger(dev[0], "GET_ALLOC_FAIL")
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=0.1)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=0.1)
|
||||||
if ev is not None:
|
if ev is not None:
|
||||||
raise Exception("Unexpected beacon report response received (OOM)")
|
raise Exception("Unexpected beacon report response received (OOM)")
|
||||||
|
|
||||||
with fail_test(dev[0], 1,
|
with fail_test(dev[0], 1,
|
||||||
"wpa_driver_nl80211_send_action;wpas_rrm_send_msr_report_mpdu"):
|
"wpa_driver_nl80211_send_action;wpas_rrm_send_msr_report_mpdu"):
|
||||||
token = run_req_beacon(hapd, addr, req + "020101" + "0a03000106")
|
token, resp = run_req_beacon(hapd, addr, req + "020101" + "0a03000106")
|
||||||
wait_fail_trigger(dev[0], "GET_FAIL")
|
wait_fail_trigger(dev[0], "GET_FAIL")
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=0.1)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=0.1)
|
||||||
if ev is not None:
|
if ev is not None:
|
||||||
raise Exception("Unexpected beacon report response received (OOM)")
|
raise Exception("Unexpected beacon report response received (OOM)")
|
||||||
|
|
||||||
with alloc_fail(dev[0], 1,
|
with alloc_fail(dev[0], 1,
|
||||||
"wpabuf_resize;wpas_add_beacon_rep"):
|
"wpabuf_resize;wpas_add_beacon_rep"):
|
||||||
token = run_req_beacon(hapd, addr, req + "020101" + "0a03000106")
|
token, resp = run_req_beacon(hapd, addr, req + "020101" + "0a03000106")
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
||||||
if ev is None:
|
if ev is None:
|
||||||
raise Exception("Beacon report response not received (OOM -> empty report)")
|
raise Exception("Beacon report response not received (OOM -> empty report)")
|
||||||
fields = ev.split(' ')
|
fields = ev.split(' ')
|
||||||
|
@ -1162,8 +1222,11 @@ def test_rrm_beacon_req_table_bssid(dev, apdev):
|
||||||
|
|
||||||
bssid2 = hapd2.own_addr()
|
bssid2 = hapd2.own_addr()
|
||||||
req = build_beacon_request(mode=2, bssid=bssid2)
|
req = build_beacon_request(mode=2, bssid=bssid2)
|
||||||
token = run_req_beacon(hapd, addr, req)
|
token, resp = run_req_beacon(hapd, addr, req)
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
||||||
if ev is None:
|
if ev is None:
|
||||||
raise Exception("Beacon report response not received")
|
raise Exception("Beacon report response not received")
|
||||||
fields = ev.split(' ')
|
fields = ev.split(' ')
|
||||||
|
@ -1171,7 +1234,10 @@ def test_rrm_beacon_req_table_bssid(dev, apdev):
|
||||||
logger.info("Received beacon report: " + str(report))
|
logger.info("Received beacon report: " + str(report))
|
||||||
if "bssid=" + bssid2 not in str(report):
|
if "bssid=" + bssid2 not in str(report):
|
||||||
raise Exception("Report for unexpected BSS")
|
raise Exception("Report for unexpected BSS")
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=0.1)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=0.1)
|
||||||
if ev is not None:
|
if ev is not None:
|
||||||
raise Exception("Unexpected beacon report response")
|
raise Exception("Unexpected beacon report response")
|
||||||
|
|
||||||
|
@ -1188,8 +1254,11 @@ def test_rrm_beacon_req_table_ssid(dev, apdev):
|
||||||
|
|
||||||
bssid2 = hapd2.own_addr()
|
bssid2 = hapd2.own_addr()
|
||||||
req = build_beacon_request(mode=2)
|
req = build_beacon_request(mode=2)
|
||||||
token = run_req_beacon(hapd, addr, req + "0007" + binascii.hexlify(b"another").decode())
|
token, resp = run_req_beacon(hapd, addr, req + "0007" + binascii.hexlify(b"another").decode())
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
||||||
if ev is None:
|
if ev is None:
|
||||||
raise Exception("Beacon report response not received")
|
raise Exception("Beacon report response not received")
|
||||||
fields = ev.split(' ')
|
fields = ev.split(' ')
|
||||||
|
@ -1197,15 +1266,21 @@ def test_rrm_beacon_req_table_ssid(dev, apdev):
|
||||||
logger.info("Received beacon report: " + str(report))
|
logger.info("Received beacon report: " + str(report))
|
||||||
if "bssid=" + bssid2 not in str(report):
|
if "bssid=" + bssid2 not in str(report):
|
||||||
raise Exception("Report for unexpected BSS")
|
raise Exception("Report for unexpected BSS")
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=0.1)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=0.1)
|
||||||
if ev is not None:
|
if ev is not None:
|
||||||
raise Exception("Unexpected beacon report response")
|
raise Exception("Unexpected beacon report response")
|
||||||
hapd.dump_monitor()
|
hapd.dump_monitor()
|
||||||
|
|
||||||
logger.info("Wildcard SSID")
|
logger.info("Wildcard SSID")
|
||||||
token = run_req_beacon(hapd, addr, req + "0000")
|
token, resp = run_req_beacon(hapd, addr, req + "0000")
|
||||||
for i in range(2):
|
for i in range(2):
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
||||||
if ev is None:
|
if ev is None:
|
||||||
raise Exception("Beacon report response not received")
|
raise Exception("Beacon report response not received")
|
||||||
fields = ev.split(' ')
|
fields = ev.split(' ')
|
||||||
|
@ -1214,8 +1289,11 @@ def test_rrm_beacon_req_table_ssid(dev, apdev):
|
||||||
hapd.dump_monitor()
|
hapd.dump_monitor()
|
||||||
|
|
||||||
logger.info("Too long SSID")
|
logger.info("Too long SSID")
|
||||||
token = run_req_beacon(hapd, addr, req + "0021" + 33*"00")
|
token, resp = run_req_beacon(hapd, addr, req + "0021" + 33*"00")
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=0.2)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=0.2)
|
||||||
if ev is not None:
|
if ev is not None:
|
||||||
raise Exception("Unexpected beacon report response (invalid SSID subelement in request)")
|
raise Exception("Unexpected beacon report response (invalid SSID subelement in request)")
|
||||||
hapd.dump_monitor()
|
hapd.dump_monitor()
|
||||||
|
@ -1232,8 +1310,11 @@ def test_rrm_beacon_req_table_info(dev, apdev):
|
||||||
|
|
||||||
logger.info("Unsupported reporting information 1")
|
logger.info("Unsupported reporting information 1")
|
||||||
req = build_beacon_request(mode=2)
|
req = build_beacon_request(mode=2)
|
||||||
token = run_req_beacon(hapd, addr, req + "01020100")
|
token, resp = run_req_beacon(hapd, addr, req + "01020100")
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
||||||
if ev is None:
|
if ev is None:
|
||||||
raise Exception("Beacon report response (incapable) is not received")
|
raise Exception("Beacon report response (incapable) is not received")
|
||||||
|
|
||||||
|
@ -1243,8 +1324,11 @@ def test_rrm_beacon_req_table_info(dev, apdev):
|
||||||
hapd.dump_monitor()
|
hapd.dump_monitor()
|
||||||
|
|
||||||
logger.info("Invalid reporting information length")
|
logger.info("Invalid reporting information length")
|
||||||
token = run_req_beacon(hapd, addr, req + "010100")
|
token, resp = run_req_beacon(hapd, addr, req + "010100")
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=0.2)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=0.2)
|
||||||
if ev is not None:
|
if ev is not None:
|
||||||
raise Exception("Unexpected beacon report response (invalid reporting information length)")
|
raise Exception("Unexpected beacon report response (invalid reporting information length)")
|
||||||
hapd.dump_monitor()
|
hapd.dump_monitor()
|
||||||
|
@ -1260,8 +1344,11 @@ def test_rrm_beacon_req_table_unknown_subelem(dev, apdev):
|
||||||
hapd.wait_sta()
|
hapd.wait_sta()
|
||||||
|
|
||||||
req = build_beacon_request(mode=2)
|
req = build_beacon_request(mode=2)
|
||||||
token = run_req_beacon(hapd, addr, req + "330101" + "fe00")
|
token, resp = run_req_beacon(hapd, addr, req + "330101" + "fe00")
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
||||||
if ev is None:
|
if ev is None:
|
||||||
raise Exception("Beacon report response not received")
|
raise Exception("Beacon report response not received")
|
||||||
fields = ev.split(' ')
|
fields = ev.split(' ')
|
||||||
|
@ -1279,8 +1366,11 @@ def test_rrm_beacon_req_table_truncated_subelem(dev, apdev):
|
||||||
hapd.wait_sta()
|
hapd.wait_sta()
|
||||||
|
|
||||||
req = build_beacon_request(mode=2)
|
req = build_beacon_request(mode=2)
|
||||||
token = run_req_beacon(hapd, addr, req + "0001")
|
token, resp = run_req_beacon(hapd, addr, req + "0001")
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=0.2)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=0.2)
|
||||||
if ev is not None:
|
if ev is not None:
|
||||||
raise Exception("Unexpected beacon report response (truncated subelement)")
|
raise Exception("Unexpected beacon report response (truncated subelement)")
|
||||||
hapd.dump_monitor()
|
hapd.dump_monitor()
|
||||||
|
@ -1297,8 +1387,11 @@ def test_rrm_beacon_req_table_rsne(dev, apdev):
|
||||||
hapd.wait_sta()
|
hapd.wait_sta()
|
||||||
|
|
||||||
req = build_beacon_request(mode=2)
|
req = build_beacon_request(mode=2)
|
||||||
token = run_req_beacon(hapd, addr, req + "020101" + "0a0130")
|
token, resp = run_req_beacon(hapd, addr, req + "020101" + "0a0130")
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
||||||
if ev is None:
|
if ev is None:
|
||||||
raise Exception("Beacon report response not received")
|
raise Exception("Beacon report response not received")
|
||||||
fields = ev.split(' ')
|
fields = ev.split(' ')
|
||||||
|
@ -1348,9 +1441,12 @@ def test_rrm_beacon_req_table_vht(dev, apdev):
|
||||||
hapd.wait_sta()
|
hapd.wait_sta()
|
||||||
|
|
||||||
req = build_beacon_request(opclass=240, mode=2)
|
req = build_beacon_request(opclass=240, mode=2)
|
||||||
token = run_req_beacon(hapd, addr, req)
|
token, resp = run_req_beacon(hapd, addr, req)
|
||||||
for i in range(2):
|
for i in range(2):
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
||||||
if ev is None:
|
if ev is None:
|
||||||
raise Exception("Beacon report %d response not received" % i)
|
raise Exception("Beacon report %d response not received" % i)
|
||||||
fields = ev.split(' ')
|
fields = ev.split(' ')
|
||||||
|
@ -1385,10 +1481,13 @@ def test_rrm_beacon_req_active(dev, apdev):
|
||||||
hapd.wait_sta()
|
hapd.wait_sta()
|
||||||
|
|
||||||
req = build_beacon_request(duration=100, mode=1)
|
req = build_beacon_request(duration=100, mode=1)
|
||||||
token = run_req_beacon(hapd, addr, req)
|
token, resp = run_req_beacon(hapd, addr, req)
|
||||||
|
|
||||||
for i in range(1, 3):
|
for i in range(1, 3):
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
||||||
if ev is None:
|
if ev is None:
|
||||||
raise Exception("Beacon report %d response not received" % i)
|
raise Exception("Beacon report %d response not received" % i)
|
||||||
fields = ev.split(' ')
|
fields = ev.split(' ')
|
||||||
|
@ -1416,9 +1515,12 @@ def test_rrm_beacon_req_active_ignore_old_result(dev, apdev):
|
||||||
hapd.wait_sta()
|
hapd.wait_sta()
|
||||||
|
|
||||||
req = build_beacon_request(chan=1, duration=100, mode=1)
|
req = build_beacon_request(chan=1, duration=100, mode=1)
|
||||||
token = run_req_beacon(hapd, addr, req)
|
token, resp = run_req_beacon(hapd, addr, req)
|
||||||
|
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
||||||
if ev is None:
|
if ev is None:
|
||||||
raise Exception("Beacon report response not received")
|
raise Exception("Beacon report response not received")
|
||||||
fields = ev.split(' ')
|
fields = ev.split(' ')
|
||||||
|
@ -1427,7 +1529,10 @@ def test_rrm_beacon_req_active_ignore_old_result(dev, apdev):
|
||||||
if report.bssid_str == apdev[1]['bssid']:
|
if report.bssid_str == apdev[1]['bssid']:
|
||||||
raise Exception("Old BSS reported")
|
raise Exception("Old BSS reported")
|
||||||
|
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=0.2)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=0.2)
|
||||||
if ev is not None:
|
if ev is not None:
|
||||||
raise Exception("Unexpected beacon report response")
|
raise Exception("Unexpected beacon report response")
|
||||||
|
|
||||||
|
@ -1467,10 +1572,13 @@ def test_rrm_beacon_req_active_many(dev, apdev):
|
||||||
ok = False
|
ok = False
|
||||||
for j in range(3):
|
for j in range(3):
|
||||||
req = build_beacon_request(chan=1, duration=100, mode=1)
|
req = build_beacon_request(chan=1, duration=100, mode=1)
|
||||||
token = run_req_beacon(hapd, addr, req)
|
token, resp = run_req_beacon(hapd, addr, req)
|
||||||
|
|
||||||
for i in range(10):
|
for i in range(10):
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
||||||
if ev is None:
|
if ev is None:
|
||||||
raise Exception("Beacon report %d response not received" % i)
|
raise Exception("Beacon report %d response not received" % i)
|
||||||
fields = ev.split(' ')
|
fields = ev.split(' ')
|
||||||
|
@ -1495,10 +1603,14 @@ def test_rrm_beacon_req_active_ap_channels(dev, apdev):
|
||||||
hapd.wait_sta()
|
hapd.wait_sta()
|
||||||
|
|
||||||
req = build_beacon_request(chan=255, duration=100, mode=1)
|
req = build_beacon_request(chan=255, duration=100, mode=1)
|
||||||
token = run_req_beacon(hapd, addr, req + "dd0111" + "330351010b" + "dd0111")
|
token, resp = run_req_beacon(hapd, addr,
|
||||||
|
req + "dd0111" + "330351010b" + "dd0111")
|
||||||
|
|
||||||
for i in range(1, 3):
|
for i in range(1, 3):
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
||||||
if ev is None:
|
if ev is None:
|
||||||
raise Exception("Beacon report %d response not received" % i)
|
raise Exception("Beacon report %d response not received" % i)
|
||||||
fields = ev.split(' ')
|
fields = ev.split(' ')
|
||||||
|
@ -1522,8 +1634,11 @@ def test_rrm_beacon_req_active_no_ir(dev, apdev):
|
||||||
hapd.wait_sta()
|
hapd.wait_sta()
|
||||||
|
|
||||||
req = build_beacon_request(opclass=118, chan=52, duration=100, mode=1)
|
req = build_beacon_request(opclass=118, chan=52, duration=100, mode=1)
|
||||||
token = run_req_beacon(hapd, addr, req)
|
token, resp = run_req_beacon(hapd, addr, req)
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
||||||
if ev is None:
|
if ev is None:
|
||||||
raise Exception("Beacon report response not received")
|
raise Exception("Beacon report response not received")
|
||||||
fields = ev.split(' ')
|
fields = ev.split(' ')
|
||||||
|
@ -1547,10 +1662,14 @@ def test_rrm_beacon_req_passive_ap_channels(dev, apdev):
|
||||||
hapd.wait_sta()
|
hapd.wait_sta()
|
||||||
|
|
||||||
req = build_beacon_request(chan=255, duration=100)
|
req = build_beacon_request(chan=255, duration=100)
|
||||||
token = run_req_beacon(hapd, addr, req + "330351010b" + "3300" + "dd00")
|
token, resp = run_req_beacon(hapd, addr,
|
||||||
|
req + "330351010b" + "3300" + "dd00")
|
||||||
|
|
||||||
for i in range(1, 3):
|
for i in range(1, 3):
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
||||||
if ev is None:
|
if ev is None:
|
||||||
raise Exception("Beacon report %d response not received" % i)
|
raise Exception("Beacon report %d response not received" % i)
|
||||||
fields = ev.split(' ')
|
fields = ev.split(' ')
|
||||||
|
@ -1575,9 +1694,12 @@ def test_rrm_beacon_req_active_single_channel(dev, apdev):
|
||||||
hapd.wait_sta()
|
hapd.wait_sta()
|
||||||
|
|
||||||
req = build_beacon_request(chan=11, duration=100, mode=1)
|
req = build_beacon_request(chan=11, duration=100, mode=1)
|
||||||
token = run_req_beacon(hapd, addr, req)
|
token, resp = run_req_beacon(hapd, addr, req)
|
||||||
|
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
||||||
if ev is None:
|
if ev is None:
|
||||||
raise Exception("Beacon report response not received")
|
raise Exception("Beacon report response not received")
|
||||||
fields = ev.split(' ')
|
fields = ev.split(' ')
|
||||||
|
@ -1596,9 +1718,12 @@ def test_rrm_beacon_req_active_ap_channels_unknown_opclass(dev, apdev):
|
||||||
hapd.wait_sta()
|
hapd.wait_sta()
|
||||||
|
|
||||||
req = build_beacon_request(chan=255, duration=100, mode=1)
|
req = build_beacon_request(chan=255, duration=100, mode=1)
|
||||||
token = run_req_beacon(hapd, addr, req + "3303ff010b")
|
token, resp = run_req_beacon(hapd, addr, req + "3303ff010b")
|
||||||
|
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
||||||
if ev is None:
|
if ev is None:
|
||||||
raise Exception("Beacon report response (refused) not received")
|
raise Exception("Beacon report response (refused) not received")
|
||||||
|
|
||||||
|
@ -1619,9 +1744,12 @@ def test_rrm_beacon_req_active_ap_channel_oom(dev, apdev):
|
||||||
|
|
||||||
with alloc_fail(dev[0], 1, "wpas_add_channels"):
|
with alloc_fail(dev[0], 1, "wpas_add_channels"):
|
||||||
req = build_beacon_request(chan=255, duration=100, mode=1)
|
req = build_beacon_request(chan=255, duration=100, mode=1)
|
||||||
token = run_req_beacon(hapd, addr, req + "330351010b")
|
token, resp = run_req_beacon(hapd, addr, req + "330351010b")
|
||||||
wait_fail_trigger(dev[0], "GET_ALLOC_FAIL")
|
wait_fail_trigger(dev[0], "GET_ALLOC_FAIL")
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
||||||
# allow either not to respond or send refused response
|
# allow either not to respond or send refused response
|
||||||
if ev is not None:
|
if ev is not None:
|
||||||
fields = ev.split(' ')
|
fields = ev.split(' ')
|
||||||
|
@ -1641,9 +1769,12 @@ def test_rrm_beacon_req_active_scan_fail(dev, apdev):
|
||||||
with alloc_fail(dev[0], 1,
|
with alloc_fail(dev[0], 1,
|
||||||
"wpa_scan_clone_params;wpa_supplicant_trigger_scan"):
|
"wpa_scan_clone_params;wpa_supplicant_trigger_scan"):
|
||||||
req = build_beacon_request(chan=255, duration=100, mode=1)
|
req = build_beacon_request(chan=255, duration=100, mode=1)
|
||||||
token = run_req_beacon(hapd, addr, req + "330351010b")
|
token, resp = run_req_beacon(hapd, addr, req + "330351010b")
|
||||||
wait_fail_trigger(dev[0], "GET_ALLOC_FAIL")
|
wait_fail_trigger(dev[0], "GET_ALLOC_FAIL")
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
||||||
if ev is None:
|
if ev is None:
|
||||||
raise Exception("No Beacon report")
|
raise Exception("No Beacon report")
|
||||||
fields = ev.split(' ')
|
fields = ev.split(' ')
|
||||||
|
@ -1662,8 +1793,11 @@ def test_rrm_beacon_req_active_zero_duration(dev, apdev):
|
||||||
hapd.wait_sta()
|
hapd.wait_sta()
|
||||||
|
|
||||||
req = build_beacon_request(mode=1)
|
req = build_beacon_request(mode=1)
|
||||||
token = run_req_beacon(hapd, addr, req)
|
token, resp = run_req_beacon(hapd, addr, req)
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=0.2)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=0.2)
|
||||||
if ev is not None:
|
if ev is not None:
|
||||||
raise Exception("Unexpected Beacon report")
|
raise Exception("Unexpected Beacon report")
|
||||||
|
|
||||||
|
@ -1678,8 +1812,11 @@ def test_rrm_beacon_req_active_fail_random(dev, apdev):
|
||||||
|
|
||||||
with fail_test(dev[0], 1, "os_get_random;wpas_rm_handle_beacon_req"):
|
with fail_test(dev[0], 1, "os_get_random;wpas_rm_handle_beacon_req"):
|
||||||
req = build_beacon_request(duration=100, mode=1)
|
req = build_beacon_request(duration=100, mode=1)
|
||||||
token = run_req_beacon(hapd, addr, req)
|
token, resp = run_req_beacon(hapd, addr, req)
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
||||||
if ev is None:
|
if ev is None:
|
||||||
raise Exception("Beacon report response not received")
|
raise Exception("Beacon report response not received")
|
||||||
fields = ev.split(' ')
|
fields = ev.split(' ')
|
||||||
|
@ -1698,10 +1835,13 @@ def test_rrm_beacon_req_passive(dev, apdev):
|
||||||
hapd.wait_sta()
|
hapd.wait_sta()
|
||||||
|
|
||||||
req = build_beacon_request(duration=100)
|
req = build_beacon_request(duration=100)
|
||||||
token = run_req_beacon(hapd, addr, req)
|
token, resp = run_req_beacon(hapd, addr, req)
|
||||||
|
|
||||||
for i in range(1, 3):
|
for i in range(1, 3):
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
||||||
if ev is None:
|
if ev is None:
|
||||||
raise Exception("Beacon report %d response not received" % i)
|
raise Exception("Beacon report %d response not received" % i)
|
||||||
fields = ev.split(' ')
|
fields = ev.split(' ')
|
||||||
|
@ -1725,8 +1865,11 @@ def test_rrm_beacon_req_passive_no_match(dev, apdev):
|
||||||
hapd.wait_sta()
|
hapd.wait_sta()
|
||||||
|
|
||||||
req = build_beacon_request(chan=1, duration=100, bssid="02:11:22:33:44:55")
|
req = build_beacon_request(chan=1, duration=100, bssid="02:11:22:33:44:55")
|
||||||
token = run_req_beacon(hapd, addr, req)
|
token, resp = run_req_beacon(hapd, addr, req)
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
||||||
if ev is None:
|
if ev is None:
|
||||||
raise Exception("Beacon report %d response not received" % i)
|
raise Exception("Beacon report %d response not received" % i)
|
||||||
fields = ev.split(' ')
|
fields = ev.split(' ')
|
||||||
|
@ -1745,15 +1888,21 @@ def test_rrm_beacon_req_passive_no_match_oom(dev, apdev):
|
||||||
|
|
||||||
req = build_beacon_request(chan=1, duration=100, bssid="02:11:22:33:44:55")
|
req = build_beacon_request(chan=1, duration=100, bssid="02:11:22:33:44:55")
|
||||||
with alloc_fail(dev[0], 1, "wpabuf_resize;wpas_beacon_rep_scan_process"):
|
with alloc_fail(dev[0], 1, "wpabuf_resize;wpas_beacon_rep_scan_process"):
|
||||||
token = run_req_beacon(hapd, addr, req)
|
token, resp = run_req_beacon(hapd, addr, req)
|
||||||
wait_fail_trigger(dev[0], "GET_ALLOC_FAIL")
|
wait_fail_trigger(dev[0], "GET_ALLOC_FAIL")
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=0.2)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=0.2)
|
||||||
if ev is not None:
|
if ev is not None:
|
||||||
raise Exception("Unexpected Beacon report response during OOM")
|
raise Exception("Unexpected Beacon report response during OOM")
|
||||||
|
|
||||||
# verify reporting is still functional
|
# verify reporting is still functional
|
||||||
token = run_req_beacon(hapd, addr, req)
|
token, resp = run_req_beacon(hapd, addr, req)
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
||||||
if ev is None:
|
if ev is None:
|
||||||
raise Exception("Beacon report %d response not received" % i)
|
raise Exception("Beacon report %d response not received" % i)
|
||||||
fields = ev.split(' ')
|
fields = ev.split(' ')
|
||||||
|
@ -1771,8 +1920,11 @@ def test_rrm_beacon_req_active_duration_mandatory(dev, apdev):
|
||||||
hapd.wait_sta()
|
hapd.wait_sta()
|
||||||
|
|
||||||
req = build_beacon_request(duration=100, mode=1)
|
req = build_beacon_request(duration=100, mode=1)
|
||||||
token = run_req_beacon(hapd, addr, "req_mode=10 " + req)
|
token, resp = run_req_beacon(hapd, addr, "req_mode=10 " + req)
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
||||||
if ev is None:
|
if ev is None:
|
||||||
raise Exception("No Beacon report response")
|
raise Exception("No Beacon report response")
|
||||||
fields = ev.split(' ')
|
fields = ev.split(' ')
|
||||||
|
@ -1814,8 +1966,11 @@ def test_rrm_beacon_req_passive_scan_vht(dev, apdev):
|
||||||
hapd.wait_sta()
|
hapd.wait_sta()
|
||||||
|
|
||||||
req = build_beacon_request(opclass=128, duration=100)
|
req = build_beacon_request(opclass=128, duration=100)
|
||||||
token = run_req_beacon(hapd, addr, req)
|
token, resp = run_req_beacon(hapd, addr, req)
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
||||||
if ev is None:
|
if ev is None:
|
||||||
raise Exception("Beacon report response not received")
|
raise Exception("Beacon report response not received")
|
||||||
fields = ev.split(' ')
|
fields = ev.split(' ')
|
||||||
|
@ -1825,8 +1980,11 @@ def test_rrm_beacon_req_passive_scan_vht(dev, apdev):
|
||||||
raise Exception("Incorrect opclass/channel for AP")
|
raise Exception("Incorrect opclass/channel for AP")
|
||||||
|
|
||||||
req = build_beacon_request(opclass=130, duration=100)
|
req = build_beacon_request(opclass=130, duration=100)
|
||||||
token = run_req_beacon(hapd, addr, req)
|
token, resp = run_req_beacon(hapd, addr, req)
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
||||||
if ev is None:
|
if ev is None:
|
||||||
raise Exception("Beacon report response not received")
|
raise Exception("Beacon report response not received")
|
||||||
fields = ev.split(' ')
|
fields = ev.split(' ')
|
||||||
|
@ -1871,8 +2029,11 @@ def test_rrm_beacon_req_passive_scan_vht160(dev, apdev):
|
||||||
hapd.wait_sta()
|
hapd.wait_sta()
|
||||||
|
|
||||||
req = build_beacon_request(opclass=129, duration=100)
|
req = build_beacon_request(opclass=129, duration=100)
|
||||||
token = run_req_beacon(hapd, addr, req)
|
token, resp = run_req_beacon(hapd, addr, req)
|
||||||
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
if resp:
|
||||||
|
ev = resp.pop(0)
|
||||||
|
else:
|
||||||
|
ev = hapd.wait_event(["BEACON-RESP-RX"], timeout=10)
|
||||||
if ev is None:
|
if ev is None:
|
||||||
raise Exception("Beacon report response not received")
|
raise Exception("Beacon report response not received")
|
||||||
fields = ev.split(' ')
|
fields = ev.split(' ')
|
||||||
|
|
Loading…
Reference in a new issue