tests: WNM BSS Transition Management and scan behavior
Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
parent
0645492e7c
commit
13a17a77a4
1 changed files with 116 additions and 0 deletions
|
@ -556,6 +556,122 @@ def test_wnm_bss_tm(dev, apdev):
|
|||
subprocess.call(['iw', 'reg', 'set', '00'])
|
||||
dev[0].flush_scan_cache()
|
||||
|
||||
def test_wnm_bss_tm_scan_not_needed(dev, apdev):
|
||||
"""WNM BSS Transition Management and scan not needed"""
|
||||
try:
|
||||
hapd = None
|
||||
hapd2 = None
|
||||
params = { "ssid": "test-wnm",
|
||||
"country_code": "FI",
|
||||
"ieee80211d": "1",
|
||||
"hw_mode": "g",
|
||||
"channel": "1",
|
||||
"bss_transition": "1" }
|
||||
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
|
||||
|
||||
params = { "ssid": "test-wnm",
|
||||
"country_code": "FI",
|
||||
"ieee80211d": "1",
|
||||
"hw_mode": "a",
|
||||
"channel": "36",
|
||||
"bss_transition": "1" }
|
||||
hapd2 = hostapd.add_ap(apdev[1]['ifname'], params)
|
||||
|
||||
dev[0].scan_for_bss(apdev[1]['bssid'], 5180)
|
||||
|
||||
id = dev[0].connect("test-wnm", key_mgmt="NONE",
|
||||
bssid=apdev[0]['bssid'], scan_freq="2412")
|
||||
dev[0].set_network(id, "scan_freq", "")
|
||||
dev[0].set_network(id, "bssid", "")
|
||||
|
||||
addr = dev[0].own_addr()
|
||||
dev[0].dump_monitor()
|
||||
|
||||
logger.info("Preferred Candidate List (matching neighbor for another BSS) without Disassociation Imminent")
|
||||
if "OK" not in hapd.request("BSS_TM_REQ " + addr + " pref=1 abridged=1 valid_int=255 neighbor=" + apdev[1]['bssid'] + ",0x0000,115,36,7,0301ff"):
|
||||
raise Exception("BSS_TM_REQ command failed")
|
||||
ev = hapd.wait_event(['BSS-TM-RESP'], timeout=10)
|
||||
if ev is None:
|
||||
raise Exception("No BSS Transition Management Response")
|
||||
if "status_code=0" not in ev:
|
||||
raise Exception("BSS transition request was not accepted: " + ev)
|
||||
if "target_bssid=" + apdev[1]['bssid'] not in ev:
|
||||
raise Exception("Unexpected target BSS: " + ev)
|
||||
dev[0].wait_connected(timeout=15, error="No reassociation seen")
|
||||
if apdev[1]['bssid'] not in ev:
|
||||
raise Exception("Unexpected reassociation target: " + ev)
|
||||
ev = dev[0].wait_event(["CTRL-EVENT-SCAN-STARTED"], timeout=0.1)
|
||||
if ev is not None:
|
||||
raise Exception("Unexpected scan started")
|
||||
dev[0].dump_monitor()
|
||||
finally:
|
||||
dev[0].request("DISCONNECT")
|
||||
if hapd:
|
||||
hapd.request("DISABLE")
|
||||
if hapd2:
|
||||
hapd2.request("DISABLE")
|
||||
subprocess.call(['iw', 'reg', 'set', '00'])
|
||||
dev[0].flush_scan_cache()
|
||||
|
||||
def test_wnm_bss_tm_scan_needed(dev, apdev):
|
||||
"""WNM BSS Transition Management and scan needed"""
|
||||
try:
|
||||
hapd = None
|
||||
hapd2 = None
|
||||
params = { "ssid": "test-wnm",
|
||||
"country_code": "FI",
|
||||
"ieee80211d": "1",
|
||||
"hw_mode": "g",
|
||||
"channel": "1",
|
||||
"bss_transition": "1" }
|
||||
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
|
||||
|
||||
params = { "ssid": "test-wnm",
|
||||
"country_code": "FI",
|
||||
"ieee80211d": "1",
|
||||
"hw_mode": "a",
|
||||
"channel": "36",
|
||||
"bss_transition": "1" }
|
||||
hapd2 = hostapd.add_ap(apdev[1]['ifname'], params)
|
||||
|
||||
dev[0].scan_for_bss(apdev[1]['bssid'], 5180)
|
||||
|
||||
id = dev[0].connect("test-wnm", key_mgmt="NONE",
|
||||
bssid=apdev[0]['bssid'], scan_freq="2412")
|
||||
dev[0].set_network(id, "scan_freq", "")
|
||||
dev[0].set_network(id, "bssid", "")
|
||||
|
||||
addr = dev[0].own_addr()
|
||||
dev[0].dump_monitor()
|
||||
|
||||
logger.info("Wait 11 seconds for the last scan result to be too old, but still present in BSS table")
|
||||
time.sleep(11)
|
||||
logger.info("Preferred Candidate List (matching neighbor for another BSS) without Disassociation Imminent")
|
||||
if "OK" not in hapd.request("BSS_TM_REQ " + addr + " pref=1 abridged=1 valid_int=255 neighbor=" + apdev[1]['bssid'] + ",0x0000,115,36,7,0301ff"):
|
||||
raise Exception("BSS_TM_REQ command failed")
|
||||
ev = hapd.wait_event(['BSS-TM-RESP'], timeout=10)
|
||||
if ev is None:
|
||||
raise Exception("No BSS Transition Management Response")
|
||||
if "status_code=0" not in ev:
|
||||
raise Exception("BSS transition request was not accepted: " + ev)
|
||||
if "target_bssid=" + apdev[1]['bssid'] not in ev:
|
||||
raise Exception("Unexpected target BSS: " + ev)
|
||||
dev[0].wait_connected(timeout=15, error="No reassociation seen")
|
||||
if apdev[1]['bssid'] not in ev:
|
||||
raise Exception("Unexpected reassociation target: " + ev)
|
||||
ev = dev[0].wait_event(["CTRL-EVENT-SCAN-STARTED"], timeout=0.1)
|
||||
if ev is not None:
|
||||
raise Exception("Unexpected scan started")
|
||||
dev[0].dump_monitor()
|
||||
finally:
|
||||
dev[0].request("DISCONNECT")
|
||||
if hapd:
|
||||
hapd.request("DISABLE")
|
||||
if hapd2:
|
||||
hapd2.request("DISABLE")
|
||||
subprocess.call(['iw', 'reg', 'set', '00'])
|
||||
dev[0].flush_scan_cache()
|
||||
|
||||
def start_wnm_tm(ap, country, dev):
|
||||
params = { "ssid": "test-wnm",
|
||||
"country_code": country,
|
||||
|
|
Loading…
Reference in a new issue