1 # wpa_supplicant AP mode tests
2 # Copyright (c) 2014, Qualcomm Atheros, Inc.
4 # This software may be distributed under the terms of the BSD license.
5 # See README for more details.
9 logger = logging.getLogger()
12 from utils import HwsimSkip, alloc_fail
13 from wpasupplicant import WpaSupplicant
14 from test_p2p_channel import set_country
16 def wait_ap_ready(dev):
17 ev = dev.wait_event(["CTRL-EVENT-CONNECTED"])
19 raise Exception("AP failed to start")
21 def test_wpas_ap_open(dev):
22 """wpa_supplicant AP mode - open network"""
23 if "FAIL" not in dev[0].request("DEAUTHENTICATE 00:11:22:33:44:55"):
24 raise Exception("Unexpected DEAUTHENTICATE accepted")
25 if "FAIL" not in dev[0].request("DISASSOCIATE 00:11:22:33:44:55"):
26 raise Exception("Unexpected DISASSOCIATE accepted")
27 if "FAIL" not in dev[0].request("CHAN_SWITCH 0 2432"):
28 raise Exception("Unexpected CHAN_SWITCH accepted")
30 id = dev[0].add_network()
31 dev[0].set_network(id, "mode", "2")
32 dev[0].set_network_quoted(id, "ssid", "wpas-ap-open")
33 dev[0].set_network(id, "key_mgmt", "NONE")
34 dev[0].set_network(id, "frequency", "2412")
35 dev[0].set_network(id, "scan_freq", "2412")
36 dev[0].select_network(id)
39 if "FAIL" not in dev[0].request("DEAUTHENTICATE foo"):
40 raise Exception("Invalid DEAUTHENTICATE accepted")
41 if "FAIL" not in dev[0].request("DISASSOCIATE foo"):
42 raise Exception("Invalid DISASSOCIATE accepted")
44 dev[1].connect("wpas-ap-open", key_mgmt="NONE", scan_freq="2412")
45 dev[2].connect("wpas-ap-open", key_mgmt="NONE", scan_freq="2412")
46 hwsim_utils.test_connectivity(dev[0], dev[1])
47 hwsim_utils.test_connectivity(dev[1], dev[2])
49 addr1 = dev[1].p2p_interface_addr()
50 addr2 = dev[2].p2p_interface_addr()
51 addrs = [ addr1, addr2 ]
52 sta = dev[0].get_sta(None)
53 if sta['addr'] not in addrs:
54 raise Exception("Unexpected STA address")
55 sta1 = dev[0].get_sta(sta['addr'])
56 if sta1['addr'] not in addrs:
57 raise Exception("Unexpected STA address")
58 sta2 = dev[0].get_sta(sta['addr'], next=True)
59 if sta2['addr'] not in addrs:
60 raise Exception("Unexpected STA2 address")
61 sta3 = dev[0].get_sta(sta2['addr'], next=True)
63 raise Exception("Unexpected STA iteration result (did not stop)")
65 status = dev[0].get_status()
66 if status['mode'] != "AP":
67 raise Exception("Unexpected status mode")
71 dev[0].request("DEAUTHENTICATE " + addr1)
72 dev[0].request("DISASSOCIATE " + addr2)
73 dev[1].wait_disconnected(timeout=10)
74 dev[2].wait_disconnected(timeout=10)
75 dev[1].wait_connected(timeout=10, error="Reconnection timed out")
76 dev[2].wait_connected(timeout=10, error="Reconnection timed out")
77 dev[1].request("DISCONNECT")
78 dev[2].request("DISCONNECT")
80 def test_wpas_ap_wep(dev):
81 """wpa_supplicant AP mode - WEP"""
82 id = dev[0].add_network()
83 dev[0].set_network(id, "mode", "2")
84 dev[0].set_network_quoted(id, "ssid", "wpas-ap-wep")
85 dev[0].set_network(id, "key_mgmt", "NONE")
86 dev[0].set_network(id, "frequency", "2412")
87 dev[0].set_network(id, "scan_freq", "2412")
88 dev[0].set_network_quoted(id, "wep_key0", "hello")
89 dev[0].select_network(id)
92 dev[1].connect("wpas-ap-wep", key_mgmt="NONE", wep_key0='"hello"',
94 hwsim_utils.test_connectivity(dev[0], dev[1])
95 dev[1].request("DISCONNECT")
97 def test_wpas_ap_no_ssid(dev):
98 """wpa_supplicant AP mode - invalid network configuration"""
99 id = dev[0].add_network()
100 dev[0].set_network(id, "mode", "2")
101 dev[0].set_network(id, "key_mgmt", "NONE")
102 dev[0].set_network(id, "frequency", "2412")
103 dev[0].set_network(id, "scan_freq", "2412")
104 dev[0].select_network(id)
105 ev = dev[0].wait_event(["CTRL-EVENT-CONNECTED"], timeout=1)
107 raise Exception("Unexpected AP start")
109 def test_wpas_ap_default_frequency(dev):
110 """wpa_supplicant AP mode - default frequency"""
111 id = dev[0].add_network()
112 dev[0].set_network(id, "mode", "2")
113 dev[0].set_network_quoted(id, "ssid", "wpas-ap-open")
114 dev[0].set_network(id, "key_mgmt", "NONE")
115 dev[0].set_network(id, "scan_freq", "2412")
116 dev[0].select_network(id)
117 wait_ap_ready(dev[0])
118 dev[1].connect("wpas-ap-open", key_mgmt="NONE", scan_freq="2462")
119 dev[1].request("DISCONNECT")
121 def test_wpas_ap_invalid_frequency(dev):
122 """wpa_supplicant AP mode - invalid frequency configuration"""
123 id = dev[0].add_network()
124 dev[0].set_network(id, "mode", "2")
125 dev[0].set_network_quoted(id, "ssid", "wpas-ap-open")
126 dev[0].set_network(id, "key_mgmt", "NONE")
127 dev[0].set_network(id, "frequency", "2413")
128 dev[0].set_network(id, "scan_freq", "2412")
129 dev[0].select_network(id)
130 ev = dev[0].wait_event(["CTRL-EVENT-CONNECTED"], timeout=1)
132 raise Exception("Unexpected AP start")
134 def test_wpas_ap_wps(dev):
135 """wpa_supplicant AP mode - WPS operations"""
136 id = dev[0].add_network()
137 dev[0].set_network(id, "mode", "2")
138 dev[0].set_network_quoted(id, "ssid", "wpas-ap-wps")
139 dev[0].set_network_quoted(id, "psk", "1234567890")
140 dev[0].set_network(id, "frequency", "2412")
141 dev[0].set_network(id, "scan_freq", "2412")
142 dev[0].select_network(id)
143 wait_ap_ready(dev[0])
144 bssid = dev[0].p2p_interface_addr()
146 logger.info("Test PBC mode start/stop")
147 if "FAIL" not in dev[0].request("WPS_CANCEL"):
148 raise Exception("Unexpected WPS_CANCEL success")
149 dev[0].request("WPS_PBC")
150 ev = dev[0].wait_event(["WPS-PBC-ACTIVE"])
152 raise Exception("PBC mode start timeout")
153 if "OK" not in dev[0].request("WPS_CANCEL"):
154 raise Exception("Unexpected WPS_CANCEL failure")
155 ev = dev[0].wait_event(["WPS-TIMEOUT"])
157 raise Exception("PBC mode disabling timeout")
159 logger.info("Test PBC protocol run")
160 dev[0].request("WPS_PBC")
161 ev = dev[0].wait_event(["WPS-PBC-ACTIVE"])
163 raise Exception("PBC mode start timeout")
164 dev[1].request("WPS_PBC")
165 dev[1].wait_connected(timeout=30, error="WPS PBC operation timed out")
166 hwsim_utils.test_connectivity(dev[0], dev[1])
168 logger.info("Test AP PIN to learn configuration")
169 pin = dev[0].request("WPS_AP_PIN random")
171 raise Exception("Could not generate random AP PIN")
172 if pin not in dev[0].request("WPS_AP_PIN get"):
173 raise Exception("Could not fetch current AP PIN")
174 dev[2].wps_reg(bssid, pin)
175 hwsim_utils.test_connectivity(dev[1], dev[2])
177 dev[1].request("REMOVE_NETWORK all")
178 dev[2].request("REMOVE_NETWORK all")
180 logger.info("Test AP PIN operations")
181 dev[0].request("WPS_AP_PIN disable")
182 dev[0].request("WPS_AP_PIN set " + pin + " 1")
184 if "FAIL" not in dev[0].request("WPS_AP_PIN get"):
185 raise Exception("AP PIN unexpectedly still enabled")
187 pin = dev[1].wps_read_pin()
188 dev[0].request("WPS_PIN any " + pin)
189 dev[1].request("WPS_PIN any " + pin)
190 dev[1].wait_connected(timeout=30)
191 dev[1].request("REMOVE_NETWORK all")
192 dev[1].dump_monitor()
194 dev[0].request("WPS_PIN any " + pin + " 100")
195 dev[1].request("WPS_PIN any " + pin)
196 dev[1].wait_connected(timeout=30)
197 dev[1].request("REMOVE_NETWORK all")
198 dev[1].dump_monitor()
200 dev[0].request("WPS_AP_PIN set 12345670")
201 dev[0].dump_monitor()
203 runs = ("88887777", "12340000", "00000000", "12345670")
205 logger.info("Try AP PIN " + pin)
206 dev[2].dump_monitor()
207 dev[2].request("WPS_REG " + bssid + " " + pin)
208 ev = dev[2].wait_event(["WPS-SUCCESS", "WPS-FAIL msg"], timeout=15)
210 raise Exception("WPS operation timed out")
211 if "WPS-SUCCESS" in ev:
212 raise Exception("WPS operation succeeded unexpectedly")
213 dev[2].wait_disconnected(timeout=10)
214 dev[2].request("WPS_CANCEL")
215 dev[2].request("REMOVE_NETWORK all")
216 ev = dev[0].wait_event(["WPS-AP-SETUP-LOCKED"])
218 raise Exception("WPS AP PIN not locked")
220 dev[0].dump_monitor()
221 logger.info("Test random AP PIN timeout")
222 pin = dev[0].request("WPS_AP_PIN random 1")
224 raise Exception("Could not generate random AP PIN")
225 res = dev[0].request("WPS_AP_PIN get")
227 raise Exception("Could not fetch current AP PIN")
230 res = dev[0].request("WPS_AP_PIN get")
233 if "FAIL" not in res:
234 raise Exception("WPS_AP_PIN random timeout did not work")
236 if "FAIL" not in dev[0].request("WPS_AP_PIN foo"):
237 raise Exception("Invalid WPS_AP_PIN command not rejected")
238 if "FAIL" not in dev[0].request("WPS_AP_PIN set"):
239 raise Exception("Invalid WPS_AP_PIN command not rejected")
241 def test_wpas_ap_wps_frag(dev):
242 """wpa_supplicant AP mode - WPS operations with fragmentation"""
243 id = dev[0].add_network()
244 dev[0].set_network(id, "mode", "2")
245 dev[0].set_network_quoted(id, "ssid", "wpas-ap-wps")
246 dev[0].set_network_quoted(id, "psk", "1234567890")
247 dev[0].set_network(id, "frequency", "2412")
248 dev[0].set_network(id, "scan_freq", "2412")
249 dev[0].set_network(id, "fragment_size", "300")
250 dev[0].select_network(id)
251 wait_ap_ready(dev[0])
252 bssid = dev[0].own_addr()
254 pin = dev[1].wps_read_pin()
255 dev[0].request("WPS_PIN any " + pin)
256 dev[1].scan_for_bss(bssid, freq="2412")
257 dev[1].request("WPS_PIN " + bssid + " " + pin)
258 dev[1].wait_connected(timeout=30)
260 def test_wpas_ap_wps_pbc_overlap(dev):
261 """wpa_supplicant AP mode - WPS operations with PBC overlap"""
262 id = dev[0].add_network()
263 dev[0].set_network(id, "mode", "2")
264 dev[0].set_network_quoted(id, "ssid", "wpas-ap-wps")
265 dev[0].set_network_quoted(id, "psk", "1234567890")
266 dev[0].set_network(id, "frequency", "2412")
267 dev[0].set_network(id, "scan_freq", "2412")
268 dev[0].select_network(id)
269 wait_ap_ready(dev[0])
270 bssid = dev[0].p2p_interface_addr()
272 dev[1].scan_for_bss(bssid, freq="2412")
273 dev[1].dump_monitor()
274 dev[2].scan_for_bss(bssid, freq="2412")
275 dev[2].dump_monitor()
276 dev[0].request("WPS_PBC")
277 dev[1].request("WPS_PBC " + bssid)
278 dev[2].request("WPS_PBC " + bssid)
280 ev = dev[1].wait_event(["WPS-M2D"], timeout=15)
282 raise Exception("PBC session overlap not detected (dev1)")
283 if "config_error=12" not in ev:
284 raise Exception("PBC session overlap not correctly reported (dev1)")
286 ev = dev[2].wait_event(["WPS-M2D"], timeout=15)
288 raise Exception("PBC session overlap not detected (dev2)")
289 if "config_error=12" not in ev:
290 raise Exception("PBC session overlap not correctly reported (dev2)")
292 if "FAIL-PBC-OVERLAP" not in dev[0].request("WPS_PBC"):
293 raise Exception("WPS_PBC(AP) accepted during overlap")
294 if "FAIL-PBC-OVERLAP" not in dev[0].request("WPS_PBC any"):
295 raise Exception("WPS_PBC(AP) accepted during overlap")
296 dev[0].request("WPS_CANCEL")
297 dev[1].request("WPS_CANCEL")
298 dev[2].request("WPS_CANCEL")
300 def test_wpas_ap_wps_disabled(dev):
301 """wpa_supplicant AP mode - WPS disabled"""
302 id = dev[0].add_network()
303 dev[0].set_network(id, "mode", "2")
304 dev[0].set_network_quoted(id, "ssid", "wpas-ap-no-wps")
305 dev[0].set_network_quoted(id, "psk", "12345678")
306 dev[0].set_network(id, "frequency", "2412")
307 dev[0].set_network(id, "scan_freq", "2412")
308 dev[0].set_network(id, "wps_disabled", "1")
309 dev[0].select_network(id)
310 wait_ap_ready(dev[0])
312 dev[1].connect("wpas-ap-no-wps", psk="12345678", scan_freq="2412")
313 dev[1].request("DISCONNECT")
314 dev[1].wait_disconnected()
316 def test_wpas_ap_dfs(dev):
317 """wpa_supplicant AP mode - DFS"""
319 _test_wpas_ap_dfs(dev)
322 dev[0].request("SET country 00")
323 dev[1].flush_scan_cache()
325 def _test_wpas_ap_dfs(dev):
327 dev[0].request("SET country US")
328 id = dev[0].add_network()
329 dev[0].set_network(id, "mode", "2")
330 dev[0].set_network_quoted(id, "ssid", "wpas-ap-dfs")
331 dev[0].set_network(id, "key_mgmt", "NONE")
332 dev[0].set_network(id, "frequency", "5260")
333 dev[0].set_network(id, "scan_freq", "5260")
334 dev[0].select_network(id)
336 ev = dev[0].wait_event(["DFS-CAC-START"])
338 # For now, assume DFS is not supported by all kernel builds.
339 raise HwsimSkip("CAC did not start - assume not supported")
341 ev = dev[0].wait_event(["DFS-CAC-COMPLETED"], timeout=70)
343 raise Exception("CAC did not complete")
344 if "success=1" not in ev:
345 raise Exception("CAC failed")
346 if "freq=5260" not in ev:
347 raise Exception("Unexpected DFS freq result")
349 ev = dev[0].wait_event(["CTRL-EVENT-CONNECTED"])
351 raise Exception("AP failed to start")
353 dev[1].connect("wpas-ap-dfs", key_mgmt="NONE")
355 def test_wpas_ap_disable(dev):
356 """wpa_supplicant AP mode - DISABLE_NETWORK"""
357 id = dev[0].add_network()
358 dev[0].set_network(id, "mode", "2")
359 dev[0].set_network_quoted(id, "ssid", "wpas-ap-open")
360 dev[0].set_network(id, "key_mgmt", "NONE")
361 dev[0].set_network(id, "scan_freq", "2412")
362 dev[0].select_network(id)
364 ev = dev[0].wait_event(["AP-ENABLED"])
366 raise Exception("AP-ENABLED event not seen")
367 wait_ap_ready(dev[0])
368 dev[0].request("DISABLE_NETWORK %d" % id)
369 ev = dev[0].wait_event(["AP-DISABLED"])
371 raise Exception("AP-DISABLED event not seen")
372 dev[0].wait_disconnected()
374 def test_wpas_ap_acs(dev):
375 """wpa_supplicant AP mode - ACS"""
376 res = dev[0].get_capability("acs")
377 if res is None or "ACS" not in res:
378 raise HwsimSkip("ACS not supported")
380 id = dev[0].add_network()
381 dev[0].set_network(id, "mode", "2")
382 dev[0].set_network_quoted(id, "ssid", "wpas-ap-open")
383 dev[0].set_network(id, "key_mgmt", "NONE")
384 dev[0].set_network(id, "frequency", "2417")
385 dev[0].set_network(id, "scan_freq", "2417")
386 dev[0].set_network(id, "acs", "1")
387 dev[0].select_network(id)
388 wait_ap_ready(dev[0])
390 # ACS prefers channels 1, 6, 11
391 freq = dev[0].get_status_field('freq')
393 raise Exception("Unexpected operating channel selected")
395 dev[1].connect("wpas-ap-open", key_mgmt="NONE", scan_freq=freq)
397 def test_wpas_ap_and_assoc_req_p2p_ie(dev):
398 """wpa_supplicant AP mode - unexpected P2P IE in Association Request"""
400 _test_wpas_ap_and_assoc_req_p2p_ie(dev)
402 dev[1].request("VENDOR_ELEM_REMOVE 13 *")
403 dev[0].request("P2P_SET disabled 0")
405 def _test_wpas_ap_and_assoc_req_p2p_ie(dev):
406 dev[0].request("P2P_SET disabled 1")
407 id = dev[0].add_network()
408 dev[0].set_network(id, "mode", "2")
409 dev[0].set_network_quoted(id, "ssid", "wpas-ap-open")
410 dev[0].set_network(id, "key_mgmt", "NONE")
411 dev[0].set_network(id, "frequency", "2412")
412 dev[0].set_network(id, "scan_freq", "2412")
413 dev[0].select_network(id)
414 wait_ap_ready(dev[0])
416 dev[1].request("VENDOR_ELEM_ADD 13 dd04506f9a09")
417 dev[1].connect("wpas-ap-open", key_mgmt="NONE", scan_freq="2412")
418 dev[1].request("DISCONNECT")
419 dev[1].wait_disconnected()
421 dev[0].request("DISCONNECT")
422 dev[0].wait_disconnected()
424 def test_wpas_ap_open_ht_disabled(dev):
425 """wpa_supplicant AP mode - open network and HT disabled"""
426 id = dev[0].add_network()
427 dev[0].set_network(id, "mode", "2")
428 dev[0].set_network_quoted(id, "ssid", "wpas-ap-open")
429 dev[0].set_network(id, "key_mgmt", "NONE")
430 dev[0].set_network(id, "frequency", "2412")
431 dev[0].set_network(id, "scan_freq", "2412")
432 dev[0].set_network(id, "disable_ht", "1")
433 dev[0].select_network(id)
434 wait_ap_ready(dev[0])
436 dev[1].connect("wpas-ap-open", key_mgmt="NONE", scan_freq="2412")
437 hwsim_utils.test_connectivity(dev[0], dev[1])
439 def test_wpas_ap_failures(dev):
440 """wpa_supplicant AP mode - failures"""
441 # No SSID configured for AP mode
442 id = dev[0].add_network()
443 dev[0].set_network(id, "mode", "2")
444 dev[0].set_network(id, "key_mgmt", "NONE")
445 dev[0].set_network(id, "frequency", "2412")
446 dev[0].set_network(id, "scan_freq", "2412")
447 dev[0].select_network(id)
448 ev = dev[0].wait_event([ "CTRL-EVENT-CONNECTED" ], timeout=0.1)
450 raise Exception("Unexpected connection event")
451 dev[0].request("REMOVE_NETWORK all")
453 # Invalid pbss value(2) for AP mode
454 dev[0].dump_monitor()
455 id = dev[0].add_network()
456 dev[0].set_network(id, "mode", "2")
457 dev[0].set_network_quoted(id, "ssid", "wpas-ap-open")
458 dev[0].set_network(id, "key_mgmt", "NONE")
459 dev[0].set_network(id, "frequency", "2412")
460 dev[0].set_network(id, "scan_freq", "2412")
461 dev[0].set_network(id, "pbss", "2")
462 dev[0].select_network(id)
463 ev = dev[0].wait_event([ "CTRL-EVENT-CONNECTED",
464 "CTRL-EVENT-DISCONNECTED" ], timeout=0.1)
465 if ev is not None and "CTRL-EVENT-CONNECTED" in ev:
466 raise Exception("Unexpected connection event(2)")
467 dev[0].request("REMOVE_NETWORK all")
469 def test_wpas_ap_oom(dev):
470 """wpa_supplicant AP mode - OOM"""
471 id = dev[0].add_network()
472 dev[0].set_network(id, "mode", "2")
473 dev[0].set_network_quoted(id, "ssid", "wpas-ap")
474 dev[0].set_network_quoted(id, "psk", "1234567890")
475 dev[0].set_network(id, "frequency", "2412")
476 dev[0].set_network(id, "scan_freq", "2412")
477 with alloc_fail(dev[0], 1, "=wpa_supplicant_conf_ap"):
478 dev[0].select_network(id)
479 dev[0].wait_disconnected()
480 dev[0].request("REMOVE_NETWORK all")
482 id = dev[0].add_network()
483 dev[0].set_network(id, "mode", "2")
484 dev[0].set_network_quoted(id, "ssid", "wpas-ap")
485 dev[0].set_network(id, "psk", "1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef")
486 dev[0].set_network(id, "frequency", "2412")
487 dev[0].set_network(id, "scan_freq", "2412")
488 with alloc_fail(dev[0], 1, "=wpa_supplicant_conf_ap"):
489 dev[0].select_network(id)
490 dev[0].wait_disconnected()
491 dev[0].request("REMOVE_NETWORK all")
493 id = dev[0].add_network()
494 dev[0].set_network(id, "mode", "2")
495 dev[0].set_network_quoted(id, "ssid", "wpas-ap")
496 dev[0].set_network(id, "key_mgmt", "NONE")
497 dev[0].set_network_quoted(id, "wep_key0", "hello")
498 dev[0].set_network(id, "frequency", "2412")
499 dev[0].set_network(id, "scan_freq", "2412")
500 with alloc_fail(dev[0], 1, "=wpa_supplicant_conf_ap"):
501 dev[0].select_network(id)
502 dev[0].wait_disconnected()
503 dev[0].request("REMOVE_NETWORK all")
505 wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
506 wpas.interface_add("wlan5")
507 wpas.request("SET manufacturer test")
508 wpas.request("SET model_name test")
509 wpas.request("SET model_number test")
510 wpas.request("SET serial_number test")
511 wpas.request("SET serial_number test")
512 wpas.request("SET serial_number test")
513 wpas.request("SET ap_vendor_elements dd0411223301")
514 id = wpas.add_network()
515 wpas.set_network(id, "mode", "2")
516 wpas.set_network_quoted(id, "ssid", "wpas-ap")
517 wpas.set_network(id, "key_mgmt", "NONE")
518 wpas.set_network(id, "frequency", "2412")
519 wpas.set_network(id, "scan_freq", "2412")
522 with alloc_fail(wpas, i, "=wpa_supplicant_conf_ap"):
523 wpas.select_network(id)
524 ev = dev[0].wait_event([ "CTRL-EVENT-CONNECTED",
525 "CTRL-EVENT-DISCONNECTED" ], timeout=1)
526 wpas.request("DISCONNECT")
527 wpas.wait_disconnected()
529 def test_wpas_ap_params(dev):
530 """wpa_supplicant AP mode - parameters"""
531 wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
532 wpas.interface_add("wlan5")
533 wpas.request("SET manufacturer test")
534 wpas.request("SET model_name test")
535 wpas.request("SET model_number test")
536 wpas.request("SET serial_number test")
537 wpas.request("SET serial_number test")
538 wpas.request("SET serial_number test")
539 wpas.request("SET ap_vendor_elements dd0411223301")
540 id = wpas.add_network()
541 wpas.set_network(id, "mode", "2")
542 wpas.set_network_quoted(id, "ssid", "wpas-ap")
543 wpas.set_network(id, "key_mgmt", "NONE")
544 wpas.set_network(id, "frequency", "2412")
545 wpas.set_network(id, "scan_freq", "2412")
546 wpas.select_network(id)
547 wpas.wait_connected()
548 wpas.request("DISCONNECT")
549 wpas.wait_disconnected()
551 wpas.request("SET beacon_int 200 3")
552 wpas.request("SET dtim_period 3")
553 wpas.select_network(id)
554 wpas.wait_connected()
555 wpas.request("DISCONNECT")
556 wpas.wait_disconnected()
558 wpas.set_network(id, "beacon_int", "300")
559 wpas.set_network(id, "dtim_period", "2")
560 wpas.select_network(id)
561 wpas.wait_connected()
562 if "---- AP ----" not in wpas.request("PMKSA"):
563 raise Exception("AP section missing from PMKSA output")
564 if "OK" not in wpas.request("PMKSA_FLUSH"):
565 raise Exception("PMKSA_FLUSH failed")
566 wpas.request("DISCONNECT")
567 wpas.wait_disconnected()