Browse Source

tests: Pass wpas/hapd instance to test_connectivity()

This makes it easier to replace data connectivity testing to use
something else than local hwsim_test binary on the controller device.

Signed-off-by: Jouni Malinen <j@w1.fi>
Jouni Malinen 10 years ago
parent
commit
a8375c94c0

+ 12 - 4
tests/hwsim/hwsim_utils.py

@@ -10,7 +10,7 @@ import time
 import logging
 logger = logging.getLogger()
 
-def test_connectivity(ifname1, ifname2, dscp=None, tos=None, max_tries=1):
+def test_connectivity_run(ifname1, ifname2, dscp=None, tos=None, max_tries=1):
     if os.path.isfile("../../mac80211_hwsim/tools/hwsim_test"):
         hwsim_test = "../../mac80211_hwsim/tools/hwsim_test"
     else:
@@ -40,17 +40,25 @@ def test_connectivity(ifname1, ifname2, dscp=None, tos=None, max_tries=1):
     if not success:
         raise Exception("hwsim_test failed")
 
+def test_connectivity(dev1, dev2, dscp=None, tos=None, max_tries=1):
+    test_connectivity_run(dev1.ifname, dev2.ifname, dscp=dscp, tos=tos,
+                          max_tries=max_tries)
+
+def test_connectivity_iface(dev1, ifname, dscp=None, tos=None, max_tries=1):
+    test_connectivity_run(dev1.ifname, ifname, dscp=dscp, tos=tos,
+                          max_tries=max_tries)
+
 def test_connectivity_p2p(dev1, dev2, dscp=None, tos=None):
     ifname1 = dev1.group_ifname if dev1.group_ifname else dev1.ifname
     ifname2 = dev2.group_ifname if dev2.group_ifname else dev2.ifname
-    test_connectivity(ifname1, ifname2, dscp, tos)
+    test_connectivity_run(ifname1, ifname2, dscp, tos)
 
 def test_connectivity_p2p_sta(dev1, dev2, dscp=None, tos=None):
     ifname1 = dev1.group_ifname if dev1.group_ifname else dev1.ifname
     ifname2 = dev2.ifname
-    test_connectivity(ifname1, ifname2, dscp, tos)
+    test_connectivity_run(ifname1, ifname2, dscp, tos)
 
 def test_connectivity_sta(dev1, dev2, dscp=None, tos=None):
     ifname1 = dev1.ifname
     ifname2 = dev2.ifname
-    test_connectivity(ifname1, ifname2, dscp, tos)
+    test_connectivity_run(ifname1, ifname2, dscp, tos)

+ 6 - 6
tests/hwsim/test_ap_ciphers.py

@@ -21,10 +21,10 @@ def check_cipher(dev, ap, cipher):
                "wpa": "2",
                "wpa_key_mgmt": "WPA-PSK",
                "rsn_pairwise": cipher }
-    hostapd.add_ap(ap['ifname'], params)
+    hapd = hostapd.add_ap(ap['ifname'], params)
     dev.connect("test-wpa2-psk", psk="12345678",
                 pairwise=cipher, group=cipher, scan_freq="2412")
-    hwsim_utils.test_connectivity(dev.ifname, ap['ifname'])
+    hwsim_utils.test_connectivity(dev, hapd)
 
 def test_ap_cipher_tkip(dev, apdev):
     """WPA2-PSK/TKIP connection"""
@@ -140,7 +140,7 @@ def test_ap_cipher_mixed_wpa_wpa2(dev, apdev):
                "wpa_key_mgmt": "WPA-PSK",
                "rsn_pairwise": "CCMP",
                "wpa_pairwise": "TKIP" }
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
     dev[0].connect(ssid, psk=passphrase, proto="WPA2",
                    pairwise="CCMP", group="TKIP", scan_freq="2412")
     status = dev[0].get_status()
@@ -157,7 +157,7 @@ def test_ap_cipher_mixed_wpa_wpa2(dev, apdev):
         raise Exception("Missing BSS flag WPA-PSK-TKIP")
     if "[WPA2-PSK-CCMP]" not in bss['flags']:
         raise Exception("Missing BSS flag WPA2-PSK-CCMP")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
 
     dev[1].connect(ssid, psk=passphrase, proto="WPA",
                    pairwise="TKIP", group="TKIP", scan_freq="2412")
@@ -168,5 +168,5 @@ def test_ap_cipher_mixed_wpa_wpa2(dev, apdev):
         raise Exception("Incorrect pairwise_cipher reported")
     if status['group_cipher'] != 'TKIP':
         raise Exception("Incorrect group_cipher reported")
-    hwsim_utils.test_connectivity(dev[1].ifname, apdev[0]['ifname'])
-    hwsim_utils.test_connectivity(dev[0].ifname, dev[1].ifname)
+    hwsim_utils.test_connectivity(dev[1], hapd)
+    hwsim_utils.test_connectivity(dev[0], dev[1])

+ 11 - 11
tests/hwsim/test_ap_csa.py

@@ -39,9 +39,9 @@ def test_ap_csa_1_switch(dev, apdev):
         return "skip"
     ap = connect(dev[0], apdev)
 
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], ap)
     switch_channel(ap, 10, 2462)
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], ap)
 
 def test_ap_csa_2_switches(dev, apdev):
     """AP Channel Switch, two switches"""
@@ -49,11 +49,11 @@ def test_ap_csa_2_switches(dev, apdev):
         return "skip"
     ap = connect(dev[0], apdev)
 
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], ap)
     switch_channel(ap, 10, 2462)
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], ap)
     switch_channel(ap, 10, 2412)
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], ap)
 
 def test_ap_csa_1_switch_count_0(dev, apdev):
     """AP Channel Switch, one switch with count 0"""
@@ -61,7 +61,7 @@ def test_ap_csa_1_switch_count_0(dev, apdev):
         return "skip"
     ap = connect(dev[0], apdev)
 
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], ap)
     switch_channel(ap, 0, 2462)
     # this does not result in CSA currently, so do not bother checking
     # connectivity
@@ -72,7 +72,7 @@ def test_ap_csa_2_switches_count_0(dev, apdev):
         return "skip"
     ap = connect(dev[0], apdev)
 
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], ap)
     switch_channel(ap, 0, 2462)
     # this does not result in CSA currently, so do not bother checking
     # connectivity
@@ -86,7 +86,7 @@ def test_ap_csa_1_switch_count_1(dev, apdev):
         return "skip"
     ap = connect(dev[0], apdev)
 
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], ap)
     switch_channel(ap, 1, 2462)
     # this does not result in CSA currently, so do not bother checking
     # connectivity
@@ -97,7 +97,7 @@ def test_ap_csa_2_switches_count_1(dev, apdev):
         return "skip"
     ap = connect(dev[0], apdev)
 
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], ap)
     switch_channel(ap, 1, 2462)
     # this does not result in CSA currently, so do not bother checking
     # connectivity
@@ -111,6 +111,6 @@ def test_ap_csa_1_switch_count_2(dev, apdev):
         return "skip"
     ap = connect(dev[0], apdev)
 
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], ap)
     switch_channel(ap, 2, 2462)
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], ap)

+ 28 - 28
tests/hwsim/test_ap_eap.py

@@ -107,10 +107,10 @@ def test_ap_wpa2_eap_sim(dev, apdev):
         logger.info("No hlr_auc_gw available");
         return "skip"
     params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
     eap_connect(dev[0], apdev[0], "SIM", "1232010000000000",
                 password="90dca4eda45b53cf0f12d7c9c3bc6a89:cb9cccc4b9258e6dca4760379fb82581")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
     eap_reauth(dev[0], "SIM")
 
     eap_connect(dev[1], apdev[0], "SIM", "1232010000000001",
@@ -378,10 +378,10 @@ def test_ap_wpa2_eap_aka(dev, apdev):
         logger.info("No hlr_auc_gw available");
         return "skip"
     params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
     eap_connect(dev[0], apdev[0], "AKA", "0232010000000000",
                 password="90dca4eda45b53cf0f12d7c9c3bc6a89:cb9cccc4b9258e6dca4760379fb82581:000000000123")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
     eap_reauth(dev[0], "AKA")
 
     logger.info("Negative test with incorrect key")
@@ -672,10 +672,10 @@ def test_ap_wpa2_eap_aka_prime(dev, apdev):
         logger.info("No hlr_auc_gw available");
         return "skip"
     params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
     eap_connect(dev[0], apdev[0], "AKA'", "6555444333222111",
                 password="5122250214c33e723a5dd523fc145fc0:981d464c7c52eb6e5036234984ad0bcf:000000000123")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
     eap_reauth(dev[0], "AKA'")
 
     logger.info("EAP-AKA' bidding protection when EAP-AKA enabled as well")
@@ -765,7 +765,7 @@ def test_ap_wpa2_eap_ttls_pap(dev, apdev):
                 ca_cert="auth_serv/ca.pem", phase2="auth=PAP",
                 subject_match="/C=FI/O=w1.fi/CN=server.w1.fi",
                 altsubject_match="EMAIL:noone@example.com;DNS:server.w1.fi;URI:http://example.com/")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
     eap_reauth(dev[0], "TTLS")
     check_mib(dev[0], [ ("dot11RSNAAuthenticationSuiteRequested", "00-0f-ac-1"),
                         ("dot11RSNAAuthenticationSuiteSelected", "00-0f-ac-1") ])
@@ -786,12 +786,12 @@ def test_ap_wpa2_eap_ttls_pap_incorrect_password(dev, apdev):
 def test_ap_wpa2_eap_ttls_chap(dev, apdev):
     """WPA2-Enterprise connection using EAP-TTLS/CHAP"""
     params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
     eap_connect(dev[0], apdev[0], "TTLS", "chap user",
                 anonymous_identity="ttls", password="password",
                 ca_cert="auth_serv/ca.der", phase2="auth=CHAP",
                 altsubject_match="EMAIL:noone@example.com;URI:http://example.com/;DNS:server.w1.fi")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
     eap_reauth(dev[0], "TTLS")
 
 def test_ap_wpa2_eap_ttls_chap_incorrect_password(dev, apdev):
@@ -810,12 +810,12 @@ def test_ap_wpa2_eap_ttls_chap_incorrect_password(dev, apdev):
 def test_ap_wpa2_eap_ttls_mschap(dev, apdev):
     """WPA2-Enterprise connection using EAP-TTLS/MSCHAP"""
     params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
     eap_connect(dev[0], apdev[0], "TTLS", "mschap user",
                 anonymous_identity="ttls", password="password",
                 ca_cert="auth_serv/ca.pem", phase2="auth=MSCHAP",
                 domain_suffix_match="server.w1.fi")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
     eap_reauth(dev[0], "TTLS")
     dev[0].request("REMOVE_NETWORK all")
     eap_connect(dev[0], apdev[0], "TTLS", "mschap user",
@@ -849,7 +849,7 @@ def test_ap_wpa2_eap_ttls_mschapv2(dev, apdev):
                 anonymous_identity="ttls", password="password",
                 ca_cert="auth_serv/ca.pem", phase2="auth=MSCHAPV2",
                 domain_suffix_match="w1.fi")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
     sta1 = hapd.get_sta(dev[0].p2p_interface_addr())
     eapol1 = hapd.get_sta(dev[0].p2p_interface_addr(), info="eapol")
     eap_reauth(dev[0], "TTLS")
@@ -898,31 +898,31 @@ def test_ap_wpa2_eap_ttls_mschapv2_utf8(dev, apdev):
 def test_ap_wpa2_eap_ttls_eap_gtc(dev, apdev):
     """WPA2-Enterprise connection using EAP-TTLS/EAP-GTC"""
     params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
     eap_connect(dev[0], apdev[0], "TTLS", "user",
                 anonymous_identity="ttls", password="password",
                 ca_cert="auth_serv/ca.pem", phase2="autheap=GTC")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
     eap_reauth(dev[0], "TTLS")
 
 def test_ap_wpa2_eap_ttls_eap_md5(dev, apdev):
     """WPA2-Enterprise connection using EAP-TTLS/EAP-MD5"""
     params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
     eap_connect(dev[0], apdev[0], "TTLS", "user",
                 anonymous_identity="ttls", password="password",
                 ca_cert="auth_serv/ca.pem", phase2="autheap=MD5")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
     eap_reauth(dev[0], "TTLS")
 
 def test_ap_wpa2_eap_ttls_eap_mschapv2(dev, apdev):
     """WPA2-Enterprise connection using EAP-TTLS/EAP-MSCHAPv2"""
     params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
     eap_connect(dev[0], apdev[0], "TTLS", "user",
                 anonymous_identity="ttls", password="password",
                 ca_cert="auth_serv/ca.pem", phase2="autheap=MSCHAPV2")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
     eap_reauth(dev[0], "TTLS")
 
     logger.info("Negative test with incorrect password")
@@ -964,11 +964,11 @@ def test_ap_wpa2_eap_fast_eap_aka(dev, apdev):
 def test_ap_wpa2_eap_peap_eap_mschapv2(dev, apdev):
     """WPA2-Enterprise connection using EAP-PEAP/EAP-MSCHAPv2"""
     params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
     eap_connect(dev[0], apdev[0], "PEAP", "user",
                 anonymous_identity="peap", password="password",
                 ca_cert="auth_serv/ca.pem", phase2="auth=MSCHAPV2")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
     eap_reauth(dev[0], "PEAP")
     dev[0].request("REMOVE_NETWORK all")
     eap_connect(dev[0], apdev[0], "PEAP", "user",
@@ -993,12 +993,12 @@ def test_ap_wpa2_eap_peap_eap_mschapv2(dev, apdev):
 def test_ap_wpa2_eap_peap_crypto_binding(dev, apdev):
     """WPA2-Enterprise connection using EAP-PEAPv0/EAP-MSCHAPv2 and crypto binding"""
     params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
     eap_connect(dev[0], apdev[0], "PEAP", "user", password="password",
                 ca_cert="auth_serv/ca.pem",
                 phase1="peapver=0 crypto_binding=2",
                 phase2="auth=MSCHAPV2")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
     eap_reauth(dev[0], "PEAP")
 
     eap_connect(dev[1], apdev[0], "PEAP", "user", password="password",
@@ -1692,13 +1692,13 @@ def test_ap_wpa2_eap_psk(dev, apdev):
 def test_ap_wpa_eap_peap_eap_mschapv2(dev, apdev):
     """WPA-Enterprise connection using EAP-PEAP/EAP-MSCHAPv2"""
     params = hostapd.wpa_eap_params(ssid="test-wpa-eap")
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
     dev[0].connect("test-wpa-eap", key_mgmt="WPA-EAP", eap="PEAP",
                    identity="user", password="password", phase2="auth=MSCHAPV2",
                    ca_cert="auth_serv/ca.pem", wait_connect=False,
                    scan_freq="2412")
     eap_check_auth(dev[0], "PEAP", True, rsn=False)
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
     eap_reauth(dev[0], "PEAP", rsn=False)
     check_mib(dev[0], [ ("dot11RSNAAuthenticationSuiteRequested", "00-50-f2-1"),
                         ("dot11RSNAAuthenticationSuiteSelected", "00-50-f2-1") ])
@@ -1756,12 +1756,12 @@ def test_ap_wpa2_eap_vendor_test(dev, apdev):
 def test_ap_wpa2_eap_fast_mschapv2_unauth_prov(dev, apdev):
     """WPA2-Enterprise connection using EAP-FAST/MSCHAPv2 and unauthenticated provisioning"""
     params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
     eap_connect(dev[0], apdev[0], "FAST", "user",
                 anonymous_identity="FAST", password="password",
                 ca_cert="auth_serv/ca.pem", phase2="auth=MSCHAPV2",
                 phase1="fast_provisioning=1", pac_file="blob://fast_pac")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
     eap_reauth(dev[0], "FAST")
 
 def test_ap_wpa2_eap_fast_pac_file(dev, apdev, params):
@@ -1842,12 +1842,12 @@ def test_ap_wpa2_eap_fast_missing_pac_config(dev, apdev):
 def test_ap_wpa2_eap_fast_gtc_auth_prov(dev, apdev):
     """WPA2-Enterprise connection using EAP-FAST/GTC and authenticated provisioning"""
     params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
     eap_connect(dev[0], apdev[0], "FAST", "user",
                 anonymous_identity="FAST", password="password",
                 ca_cert="auth_serv/ca.pem", phase2="auth=GTC",
                 phase1="fast_provisioning=2", pac_file="blob://fast_pac_auth")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
     eap_reauth(dev[0], "FAST")
 
 def test_ap_wpa2_eap_tls_ocsp(dev, apdev):

+ 63 - 53
tests/hwsim/test_ap_ft.py

@@ -88,7 +88,7 @@ def ft_params2_r0kh_mismatch(rsn=True, ssid=None, passphrase=None):
     params['r1kh'] = "12:00:00:00:03:00 10:01:02:03:04:05 300102030405060708090a0b0c0d0e0f"
     return params
 
-def run_roams(dev, apdev, ssid, passphrase, over_ds=False, sae=False, eap=False, fail_test=False, roams=1):
+def run_roams(dev, apdev, hapd0, hapd1, ssid, passphrase, over_ds=False, sae=False, eap=False, fail_test=False, roams=1):
     logger.info("Connect to first AP")
     if eap:
         dev.connect(ssid, key_mgmt="FT-EAP", proto="WPA2", ieee80211w="1",
@@ -103,10 +103,14 @@ def run_roams(dev, apdev, ssid, passphrase, over_ds=False, sae=False, eap=False,
     if dev.get_status_field('bssid') == apdev[0]['bssid']:
         ap1 = apdev[0]
         ap2 = apdev[1]
+        hapd1ap = hapd0
+        hapd2ap = hapd1
     else:
         ap1 = apdev[1]
         ap2 = apdev[0]
-    hwsim_utils.test_connectivity(dev.ifname, ap1['ifname'])
+        hapd1ap = hapd1
+        hapd2ap = hapd0
+    hwsim_utils.test_connectivity(dev, hapd1ap)
 
     dev.scan_for_bss(ap2['bssid'], freq="2412")
 
@@ -121,7 +125,7 @@ def run_roams(dev, apdev, ssid, passphrase, over_ds=False, sae=False, eap=False,
         if dev.get_status_field('bssid') != ap2['bssid']:
             raise Exception("Did not connect to correct AP")
         if i == 0 or i == roams - 1:
-            hwsim_utils.test_connectivity(dev.ifname, ap2['ifname'])
+            hwsim_utils.test_connectivity(dev, hapd2ap)
 
         logger.info("Roam back to the first AP")
         if over_ds:
@@ -131,7 +135,7 @@ def run_roams(dev, apdev, ssid, passphrase, over_ds=False, sae=False, eap=False,
         if dev.get_status_field('bssid') != ap1['bssid']:
             raise Exception("Did not connect to correct AP")
         if i == 0 or i == roams - 1:
-            hwsim_utils.test_connectivity(dev.ifname, ap1['ifname'])
+            hwsim_utils.test_connectivity(dev, hapd1ap)
 
 def test_ap_ft(dev, apdev):
     """WPA2-PSK-FT AP"""
@@ -139,11 +143,11 @@ def test_ap_ft(dev, apdev):
     passphrase="12345678"
 
     params = ft_params1(ssid=ssid, passphrase=passphrase)
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd0 = hostapd.add_ap(apdev[0]['ifname'], params)
     params = ft_params2(ssid=ssid, passphrase=passphrase)
-    hostapd.add_ap(apdev[1]['ifname'], params)
+    hapd1 = hostapd.add_ap(apdev[1]['ifname'], params)
 
-    run_roams(dev[0], apdev, ssid, passphrase)
+    run_roams(dev[0], apdev, hapd0, hapd1, ssid, passphrase)
     if "[WPA2-FT/PSK-CCMP]" not in dev[0].request("SCAN_RESULTS"):
         raise Exception("Scan results missing RSN element info")
 
@@ -153,11 +157,11 @@ def test_ap_ft_many(dev, apdev):
     passphrase="12345678"
 
     params = ft_params1(ssid=ssid, passphrase=passphrase)
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd0 = hostapd.add_ap(apdev[0]['ifname'], params)
     params = ft_params2(ssid=ssid, passphrase=passphrase)
-    hostapd.add_ap(apdev[1]['ifname'], params)
+    hapd1 = hostapd.add_ap(apdev[1]['ifname'], params)
 
-    run_roams(dev[0], apdev, ssid, passphrase, roams=50)
+    run_roams(dev[0], apdev, hapd0, hapd1, ssid, passphrase, roams=50)
 
 def test_ap_ft_mixed(dev, apdev):
     """WPA2-PSK-FT mixed-mode AP"""
@@ -171,9 +175,9 @@ def test_ap_ft_mixed(dev, apdev):
     if vals[0] != "WPA-PSK" or vals[1] != "FT-PSK":
         raise Exception("Unexpected GET_CONFIG(key_mgmt): " + key_mgmt)
     params = ft_params2(rsn=False, ssid=ssid, passphrase=passphrase)
-    hostapd.add_ap(apdev[1]['ifname'], params)
+    hapd1 = hostapd.add_ap(apdev[1]['ifname'], params)
 
-    run_roams(dev[0], apdev, ssid, passphrase)
+    run_roams(dev[0], apdev, hapd, hapd1, ssid, passphrase)
 
 def test_ap_ft_pmf(dev, apdev):
     """WPA2-PSK-FT AP with PMF"""
@@ -182,12 +186,12 @@ def test_ap_ft_pmf(dev, apdev):
 
     params = ft_params1(ssid=ssid, passphrase=passphrase)
     params["ieee80211w"] = "2";
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd0 = hostapd.add_ap(apdev[0]['ifname'], params)
     params = ft_params2(ssid=ssid, passphrase=passphrase)
     params["ieee80211w"] = "2";
-    hostapd.add_ap(apdev[1]['ifname'], params)
+    hapd1 = hostapd.add_ap(apdev[1]['ifname'], params)
 
-    run_roams(dev[0], apdev, ssid, passphrase)
+    run_roams(dev[0], apdev, hapd0, hapd1, ssid, passphrase)
 
 def test_ap_ft_over_ds(dev, apdev):
     """WPA2-PSK-FT AP over DS"""
@@ -195,11 +199,11 @@ def test_ap_ft_over_ds(dev, apdev):
     passphrase="12345678"
 
     params = ft_params1(ssid=ssid, passphrase=passphrase)
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd0 = hostapd.add_ap(apdev[0]['ifname'], params)
     params = ft_params2(ssid=ssid, passphrase=passphrase)
-    hostapd.add_ap(apdev[1]['ifname'], params)
+    hapd1 = hostapd.add_ap(apdev[1]['ifname'], params)
 
-    run_roams(dev[0], apdev, ssid, passphrase, over_ds=True)
+    run_roams(dev[0], apdev, hapd0, hapd1, ssid, passphrase, over_ds=True)
     check_mib(dev[0], [ ("dot11RSNAAuthenticationSuiteRequested", "00-0f-ac-4"),
                         ("dot11RSNAAuthenticationSuiteSelected", "00-0f-ac-4") ])
 
@@ -209,11 +213,12 @@ def test_ap_ft_over_ds_many(dev, apdev):
     passphrase="12345678"
 
     params = ft_params1(ssid=ssid, passphrase=passphrase)
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd0 = hostapd.add_ap(apdev[0]['ifname'], params)
     params = ft_params2(ssid=ssid, passphrase=passphrase)
-    hostapd.add_ap(apdev[1]['ifname'], params)
+    hapd1 = hostapd.add_ap(apdev[1]['ifname'], params)
 
-    run_roams(dev[0], apdev, ssid, passphrase, over_ds=True, roams=50)
+    run_roams(dev[0], apdev, hapd0, hapd1, ssid, passphrase, over_ds=True,
+              roams=50)
 
 def test_ap_ft_pmf_over_ds(dev, apdev):
     """WPA2-PSK-FT AP over DS with PMF"""
@@ -222,12 +227,12 @@ def test_ap_ft_pmf_over_ds(dev, apdev):
 
     params = ft_params1(ssid=ssid, passphrase=passphrase)
     params["ieee80211w"] = "2";
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd0 = hostapd.add_ap(apdev[0]['ifname'], params)
     params = ft_params2(ssid=ssid, passphrase=passphrase)
     params["ieee80211w"] = "2";
-    hostapd.add_ap(apdev[1]['ifname'], params)
+    hapd1 = hostapd.add_ap(apdev[1]['ifname'], params)
 
-    run_roams(dev[0], apdev, ssid, passphrase, over_ds=True)
+    run_roams(dev[0], apdev, hapd0, hapd1, ssid, passphrase, over_ds=True)
 
 def test_ap_ft_over_ds_pull(dev, apdev):
     """WPA2-PSK-FT AP over DS (pull PMK)"""
@@ -236,12 +241,12 @@ def test_ap_ft_over_ds_pull(dev, apdev):
 
     params = ft_params1(ssid=ssid, passphrase=passphrase)
     params["pmk_r1_push"] = "0"
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd0 = hostapd.add_ap(apdev[0]['ifname'], params)
     params = ft_params2(ssid=ssid, passphrase=passphrase)
     params["pmk_r1_push"] = "0"
-    hostapd.add_ap(apdev[1]['ifname'], params)
+    hapd1 = hostapd.add_ap(apdev[1]['ifname'], params)
 
-    run_roams(dev[0], apdev, ssid, passphrase, over_ds=True)
+    run_roams(dev[0], apdev, hapd0, hapd1, ssid, passphrase, over_ds=True)
 
 def test_ap_ft_sae(dev, apdev):
     """WPA2-PSK-FT-SAE AP"""
@@ -250,7 +255,7 @@ def test_ap_ft_sae(dev, apdev):
 
     params = ft_params1(ssid=ssid, passphrase=passphrase)
     params['wpa_key_mgmt'] = "FT-SAE"
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd0 = hostapd.add_ap(apdev[0]['ifname'], params)
     params = ft_params2(ssid=ssid, passphrase=passphrase)
     params['wpa_key_mgmt'] = "FT-SAE"
     hapd = hostapd.add_ap(apdev[1]['ifname'], params)
@@ -258,7 +263,7 @@ def test_ap_ft_sae(dev, apdev):
     if key_mgmt.split(' ')[0] != "FT-SAE":
         raise Exception("Unexpected GET_CONFIG(key_mgmt): " + key_mgmt)
 
-    run_roams(dev[0], apdev, ssid, passphrase, sae=True)
+    run_roams(dev[0], apdev, hapd0, hapd, ssid, passphrase, sae=True)
 
 def test_ap_ft_sae_over_ds(dev, apdev):
     """WPA2-PSK-FT-SAE AP over DS"""
@@ -267,12 +272,13 @@ def test_ap_ft_sae_over_ds(dev, apdev):
 
     params = ft_params1(ssid=ssid, passphrase=passphrase)
     params['wpa_key_mgmt'] = "FT-SAE"
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd0 = hostapd.add_ap(apdev[0]['ifname'], params)
     params = ft_params2(ssid=ssid, passphrase=passphrase)
     params['wpa_key_mgmt'] = "FT-SAE"
-    hostapd.add_ap(apdev[1]['ifname'], params)
+    hapd1 = hostapd.add_ap(apdev[1]['ifname'], params)
 
-    run_roams(dev[0], apdev, ssid, passphrase, sae=True, over_ds=True)
+    run_roams(dev[0], apdev, hapd0, hapd1, ssid, passphrase, sae=True,
+              over_ds=True)
 
 def test_ap_ft_eap(dev, apdev):
     """WPA2-EAP-FT AP"""
@@ -292,9 +298,9 @@ def test_ap_ft_eap(dev, apdev):
     params['wpa_key_mgmt'] = "FT-EAP"
     params["ieee8021x"] = "1"
     params = dict(radius.items() + params.items())
-    hostapd.add_ap(apdev[1]['ifname'], params)
+    hapd1 = hostapd.add_ap(apdev[1]['ifname'], params)
 
-    run_roams(dev[0], apdev, ssid, passphrase, eap=True)
+    run_roams(dev[0], apdev, hapd, hapd1, ssid, passphrase, eap=True)
     if "[WPA2-FT/EAP-CCMP]" not in dev[0].request("SCAN_RESULTS"):
         raise Exception("Scan results missing RSN element info")
     check_mib(dev[0], [ ("dot11RSNAAuthenticationSuiteRequested", "00-0f-ac-3"),
@@ -320,9 +326,9 @@ def test_ap_ft_eap_pull(dev, apdev):
     params["ieee8021x"] = "1"
     params["pmk_r1_push"] = "0"
     params = dict(radius.items() + params.items())
-    hostapd.add_ap(apdev[1]['ifname'], params)
+    hapd1 = hostapd.add_ap(apdev[1]['ifname'], params)
 
-    run_roams(dev[0], apdev, ssid, passphrase, eap=True)
+    run_roams(dev[0], apdev, hapd, hapd1, ssid, passphrase, eap=True)
 
 def test_ap_ft_mismatching_rrb_key_push(dev, apdev):
     """WPA2-PSK-FT AP over DS with mismatching RRB key (push)"""
@@ -331,12 +337,13 @@ def test_ap_ft_mismatching_rrb_key_push(dev, apdev):
 
     params = ft_params1(ssid=ssid, passphrase=passphrase)
     params["ieee80211w"] = "2";
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd0 = hostapd.add_ap(apdev[0]['ifname'], params)
     params = ft_params2_incorrect_rrb_key(ssid=ssid, passphrase=passphrase)
     params["ieee80211w"] = "2";
-    hostapd.add_ap(apdev[1]['ifname'], params)
+    hapd1 = hostapd.add_ap(apdev[1]['ifname'], params)
 
-    run_roams(dev[0], apdev, ssid, passphrase, over_ds=True, fail_test=True)
+    run_roams(dev[0], apdev, hapd0, hapd1, ssid, passphrase, over_ds=True,
+              fail_test=True)
 
 def test_ap_ft_mismatching_rrb_key_pull(dev, apdev):
     """WPA2-PSK-FT AP over DS with mismatching RRB key (pull)"""
@@ -345,12 +352,13 @@ def test_ap_ft_mismatching_rrb_key_pull(dev, apdev):
 
     params = ft_params1(ssid=ssid, passphrase=passphrase)
     params["pmk_r1_push"] = "0"
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd0 = hostapd.add_ap(apdev[0]['ifname'], params)
     params = ft_params2_incorrect_rrb_key(ssid=ssid, passphrase=passphrase)
     params["pmk_r1_push"] = "0"
-    hostapd.add_ap(apdev[1]['ifname'], params)
+    hapd1 = hostapd.add_ap(apdev[1]['ifname'], params)
 
-    run_roams(dev[0], apdev, ssid, passphrase, over_ds=True, fail_test=True)
+    run_roams(dev[0], apdev, hapd0, hapd1, ssid, passphrase, over_ds=True,
+              fail_test=True)
 
 def test_ap_ft_mismatching_r0kh_id_pull(dev, apdev):
     """WPA2-PSK-FT AP over DS with mismatching R0KH-ID (pull)"""
@@ -377,12 +385,13 @@ def test_ap_ft_mismatching_rrb_r0kh_push(dev, apdev):
 
     params = ft_params1(ssid=ssid, passphrase=passphrase)
     params["ieee80211w"] = "2";
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd0 = hostapd.add_ap(apdev[0]['ifname'], params)
     params = ft_params2_r0kh_mismatch(ssid=ssid, passphrase=passphrase)
     params["ieee80211w"] = "2";
-    hostapd.add_ap(apdev[1]['ifname'], params)
+    hapd1 = hostapd.add_ap(apdev[1]['ifname'], params)
 
-    run_roams(dev[0], apdev, ssid, passphrase, over_ds=True, fail_test=True)
+    run_roams(dev[0], apdev, hapd0, hapd1, ssid, passphrase, over_ds=True,
+              fail_test=True)
 
 def test_ap_ft_mismatching_rrb_r0kh_pull(dev, apdev):
     """WPA2-PSK-FT AP over DS with mismatching R0KH key (pull)"""
@@ -391,12 +400,13 @@ def test_ap_ft_mismatching_rrb_r0kh_pull(dev, apdev):
 
     params = ft_params1_r0kh_mismatch(ssid=ssid, passphrase=passphrase)
     params["pmk_r1_push"] = "0"
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd0 = hostapd.add_ap(apdev[0]['ifname'], params)
     params = ft_params2(ssid=ssid, passphrase=passphrase)
     params["pmk_r1_push"] = "0"
-    hostapd.add_ap(apdev[1]['ifname'], params)
+    hapd1 = hostapd.add_ap(apdev[1]['ifname'], params)
 
-    run_roams(dev[0], apdev, ssid, passphrase, over_ds=True, fail_test=True)
+    run_roams(dev[0], apdev, hapd0, hapd1, ssid, passphrase, over_ds=True,
+              fail_test=True)
 
 def test_ap_ft_gtk_rekey(dev, apdev):
     """WPA2-PSK-FT AP and GTK rekey"""
@@ -405,7 +415,7 @@ def test_ap_ft_gtk_rekey(dev, apdev):
 
     params = ft_params1(ssid=ssid, passphrase=passphrase)
     params['wpa_group_rekey'] = '1'
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
 
     dev[0].connect(ssid, psk=passphrase, key_mgmt="FT-PSK", proto="WPA2",
                    ieee80211w="1")
@@ -413,19 +423,19 @@ def test_ap_ft_gtk_rekey(dev, apdev):
     ev = dev[0].wait_event(["WPA: Group rekeying completed"], timeout=2)
     if ev is None:
         raise Exception("GTK rekey timed out after initial association")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
 
     params = ft_params2(ssid=ssid, passphrase=passphrase)
     params['wpa_group_rekey'] = '1'
-    hostapd.add_ap(apdev[1]['ifname'], params)
+    hapd1 = hostapd.add_ap(apdev[1]['ifname'], params)
 
     dev[0].scan_for_bss(apdev[1]['bssid'], freq="2412")
     dev[0].roam(apdev[1]['bssid'])
     if dev[0].get_status_field('bssid') != apdev[1]['bssid']:
         raise Exception("Did not connect to correct AP")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[1]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd1)
 
     ev = dev[0].wait_event(["WPA: Group rekeying completed"], timeout=2)
     if ev is None:
         raise Exception("GTK rekey timed out after FT protocol")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[1]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd1)

+ 1 - 1
tests/hwsim/test_ap_open.py

@@ -17,7 +17,7 @@ def test_ap_open(dev, apdev):
     """AP with open mode (no security) configuration"""
     hapd = hostapd.add_ap(apdev[0]['ifname'], { "ssid": "open" })
     dev[0].connect("open", key_mgmt="NONE", scan_freq="2412")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
     ev = hapd.wait_event([ "AP-STA-CONNECTED" ], timeout=5)
     if ev is None:
         raise Exception("No connection event received from hostapd")

+ 11 - 11
tests/hwsim/test_ap_params.py

@@ -18,9 +18,9 @@ def test_ap_fragmentation_rts_set_high(dev, apdev):
     params = hostapd.wpa2_params(ssid=ssid, passphrase=passphrase)
     params['rts_threshold'] = "1000"
     params['fragm_threshold'] = "2000"
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
     dev[0].connect(ssid, psk=passphrase, scan_freq="2412")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
 
 def test_ap_fragmentation_open(dev, apdev):
     """Open AP with fragmentation threshold"""
@@ -28,9 +28,9 @@ def test_ap_fragmentation_open(dev, apdev):
     params = {}
     params['ssid'] = ssid
     params['fragm_threshold'] = "1000"
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
     dev[0].connect(ssid, key_mgmt="NONE", scan_freq="2412")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
 
 def test_ap_fragmentation_wpa2(dev, apdev):
     """WPA2-PSK AP with fragmentation threshold"""
@@ -38,9 +38,9 @@ def test_ap_fragmentation_wpa2(dev, apdev):
     passphrase = 'qwertyuiop'
     params = hostapd.wpa2_params(ssid=ssid, passphrase=passphrase)
     params['fragm_threshold'] = "1000"
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
     dev[0].connect(ssid, psk=passphrase, scan_freq="2412")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
 
 def test_ap_vendor_elements(dev, apdev):
     """WPA2-PSK AP with vendor elements added"""
@@ -66,9 +66,9 @@ def test_ap_country(dev, apdev):
         params['ieee80211d'] = '1'
         params['hw_mode'] = 'a'
         params['channel'] = '36'
-        hostapd.add_ap(apdev[0]['ifname'], params)
+        hapd = hostapd.add_ap(apdev[0]['ifname'], params)
         dev[0].connect(ssid, psk=passphrase, scan_freq="5180")
-        hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+        hwsim_utils.test_connectivity(dev[0], hapd)
     finally:
         subprocess.call(['sudo', 'iw', 'reg', 'set', '00'])
 
@@ -123,7 +123,7 @@ def test_ap_wds_sta(dev, apdev):
         subprocess.call(['sudo', 'ip', 'link', 'set', 'dev', 'wds-br0', 'up'])
         subprocess.call(['sudo', 'iw', dev[0].ifname, 'set', '4addr', 'on'])
         dev[0].connect(ssid, psk=passphrase, scan_freq="2412")
-        hwsim_utils.test_connectivity(dev[0].ifname, "wds-br0", max_tries=15)
+        hwsim_utils.test_connectivity_iface(dev[0], "wds-br0", max_tries=15)
     finally:
         subprocess.call(['sudo', 'iw', dev[0].ifname, 'set', '4addr', 'off'])
         subprocess.call(['sudo', 'ip', 'link', 'set', 'dev', 'wds-br0', 'down'])
@@ -241,6 +241,6 @@ def test_ap_tx_queue_params(dev, apdev):
     params['tx_queue_data1_cwmin'] = "7"
     params['tx_queue_data1_cwmax'] = "1023"
     params['tx_queue_data1_burst'] = "2"
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
     dev[0].connect(ssid, key_mgmt="NONE", scan_freq="2412")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)

+ 11 - 11
tests/hwsim/test_ap_pmf.py

@@ -33,11 +33,11 @@ def test_ap_pmf_required(dev, apdev):
                    scan_freq="2412")
     if "[WPA2-PSK-SHA256-CCMP]" not in dev[0].request("SCAN_RESULTS"):
         raise Exception("Scan results missing RSN element info")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
     dev[1].connect(ssid, psk="12345678", ieee80211w="2",
                    key_mgmt="WPA-PSK WPA-PSK-SHA256", proto="WPA2",
                    scan_freq="2412")
-    hwsim_utils.test_connectivity(dev[1].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[1], hapd)
     hapd = hostapd.Hostapd(apdev[0]['ifname'])
     hapd.request("SA_QUERY " + dev[0].p2p_interface_addr())
     hapd.request("SA_QUERY " + dev[1].p2p_interface_addr())
@@ -61,15 +61,15 @@ def test_ap_pmf_optional(dev, apdev):
     params = hostapd.wpa2_params(ssid=ssid, passphrase="12345678")
     params["wpa_key_mgmt"] = "WPA-PSK";
     params["ieee80211w"] = "1";
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
     dev[0].connect(ssid, psk="12345678", ieee80211w="1",
                    key_mgmt="WPA-PSK WPA-PSK-SHA256", proto="WPA2",
                    scan_freq="2412")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
     dev[1].connect(ssid, psk="12345678", ieee80211w="2",
                    key_mgmt="WPA-PSK WPA-PSK-SHA256", proto="WPA2",
                    scan_freq="2412")
-    hwsim_utils.test_connectivity(dev[1].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[1], hapd)
     wt.require_ap_pmf_optional(apdev[0]['bssid'])
     wt.require_sta_pmf(apdev[0]['bssid'], dev[0].p2p_interface_addr())
     wt.require_sta_pmf_mandatory(apdev[0]['bssid'], dev[1].p2p_interface_addr())
@@ -83,15 +83,15 @@ def test_ap_pmf_optional_2akm(dev, apdev):
     params = hostapd.wpa2_params(ssid=ssid, passphrase="12345678")
     params["wpa_key_mgmt"] = "WPA-PSK WPA-PSK-SHA256";
     params["ieee80211w"] = "1";
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
     dev[0].connect(ssid, psk="12345678", ieee80211w="1",
                    key_mgmt="WPA-PSK WPA-PSK-SHA256", proto="WPA2",
                    scan_freq="2412")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
     dev[1].connect(ssid, psk="12345678", ieee80211w="2",
                    key_mgmt="WPA-PSK WPA-PSK-SHA256", proto="WPA2",
                    scan_freq="2412")
-    hwsim_utils.test_connectivity(dev[1].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[1], hapd)
     wt.require_ap_pmf_optional(apdev[0]['bssid'])
     wt.require_sta_pmf(apdev[0]['bssid'], dev[0].p2p_interface_addr())
     wt.require_sta_key_mgmt(apdev[0]['bssid'], dev[0].p2p_interface_addr(),
@@ -107,16 +107,16 @@ def test_ap_pmf_negative(dev, apdev):
     wt.flush()
     wt.add_passphrase("12345678")
     params = hostapd.wpa2_params(ssid=ssid, passphrase="12345678")
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
     dev[0].connect(ssid, psk="12345678", ieee80211w="1",
                    key_mgmt="WPA-PSK WPA-PSK-SHA256", proto="WPA2",
                    scan_freq="2412")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
     try:
         dev[1].connect(ssid, psk="12345678", ieee80211w="2",
                        key_mgmt="WPA-PSK WPA-PSK-SHA256", proto="WPA2",
                        scan_freq="2412")
-        hwsim_utils.test_connectivity(dev[1].ifname, apdev[0]['ifname'])
+        hwsim_utils.test_connectivity(dev[1], hapd)
         raise Exception("PMF required STA connected to no PMF AP")
     except Exception, e:
         logger.debug("Ignore expected exception: " + str(e))

+ 22 - 22
tests/hwsim/test_ap_psk.py

@@ -65,12 +65,12 @@ def test_ap_wpa2_ptk_rekey(dev, apdev):
     ssid = "test-wpa2-psk"
     passphrase = 'qwertyuiop'
     params = hostapd.wpa2_params(ssid=ssid, passphrase=passphrase)
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
     dev[0].connect(ssid, psk=passphrase, wpa_ptk_rekey="1", scan_freq="2412")
     ev = dev[0].wait_event(["WPA: Key negotiation completed"])
     if ev is None:
         raise Exception("PTK rekey timed out")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
 
 def test_ap_wpa2_ptk_rekey_ap(dev, apdev):
     """WPA2-PSK AP and PTK rekey enforced by AP"""
@@ -78,12 +78,12 @@ def test_ap_wpa2_ptk_rekey_ap(dev, apdev):
     passphrase = 'qwertyuiop'
     params = hostapd.wpa2_params(ssid=ssid, passphrase=passphrase)
     params['wpa_ptk_rekey'] = '2'
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
     dev[0].connect(ssid, psk=passphrase, scan_freq="2412")
     ev = dev[0].wait_event(["WPA: Key negotiation completed"])
     if ev is None:
         raise Exception("PTK rekey timed out")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
 
 def test_ap_wpa2_sha256_ptk_rekey(dev, apdev):
     """WPA2-PSK/SHA256 AKM AP and PTK rekey enforced by station"""
@@ -91,13 +91,13 @@ def test_ap_wpa2_sha256_ptk_rekey(dev, apdev):
     passphrase = 'qwertyuiop'
     params = hostapd.wpa2_params(ssid=ssid, passphrase=passphrase)
     params["wpa_key_mgmt"] = "WPA-PSK-SHA256"
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
     dev[0].connect(ssid, psk=passphrase, key_mgmt="WPA-PSK-SHA256",
                    wpa_ptk_rekey="1", scan_freq="2412")
     ev = dev[0].wait_event(["WPA: Key negotiation completed"])
     if ev is None:
         raise Exception("PTK rekey timed out")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
     check_mib(dev[0], [ ("dot11RSNAAuthenticationSuiteRequested", "00-0f-ac-6"),
                         ("dot11RSNAAuthenticationSuiteSelected", "00-0f-ac-6") ])
 
@@ -108,13 +108,13 @@ def test_ap_wpa2_sha256_ptk_rekey_ap(dev, apdev):
     params = hostapd.wpa2_params(ssid=ssid, passphrase=passphrase)
     params["wpa_key_mgmt"] = "WPA-PSK-SHA256"
     params['wpa_ptk_rekey'] = '2'
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
     dev[0].connect(ssid, psk=passphrase, key_mgmt="WPA-PSK-SHA256",
                    scan_freq="2412")
     ev = dev[0].wait_event(["WPA: Key negotiation completed"])
     if ev is None:
         raise Exception("PTK rekey timed out")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
     check_mib(dev[0], [ ("dot11RSNAAuthenticationSuiteRequested", "00-0f-ac-6"),
                         ("dot11RSNAAuthenticationSuiteSelected", "00-0f-ac-6") ])
 
@@ -123,14 +123,14 @@ def test_ap_wpa_ptk_rekey(dev, apdev):
     ssid = "test-wpa-psk"
     passphrase = 'qwertyuiop'
     params = hostapd.wpa_params(ssid=ssid, passphrase=passphrase)
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
     dev[0].connect(ssid, psk=passphrase, wpa_ptk_rekey="1", scan_freq="2412")
     if "[WPA-PSK-TKIP]" not in dev[0].request("SCAN_RESULTS"):
         raise Exception("Scan results missing WPA element info")
     ev = dev[0].wait_event(["WPA: Key negotiation completed"])
     if ev is None:
         raise Exception("PTK rekey timed out")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
 
 def test_ap_wpa_ptk_rekey_ap(dev, apdev):
     """WPA-PSK/TKIP AP and PTK rekey enforced by AP"""
@@ -138,12 +138,12 @@ def test_ap_wpa_ptk_rekey_ap(dev, apdev):
     passphrase = 'qwertyuiop'
     params = hostapd.wpa_params(ssid=ssid, passphrase=passphrase)
     params['wpa_ptk_rekey'] = '2'
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
     dev[0].connect(ssid, psk=passphrase, scan_freq="2412")
     ev = dev[0].wait_event(["WPA: Key negotiation completed"], timeout=10)
     if ev is None:
         raise Exception("PTK rekey timed out")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
 
 def test_ap_wpa_ccmp(dev, apdev):
     """WPA-PSK/CCMP"""
@@ -151,9 +151,9 @@ def test_ap_wpa_ccmp(dev, apdev):
     passphrase = 'qwertyuiop'
     params = hostapd.wpa_params(ssid=ssid, passphrase=passphrase)
     params['wpa_pairwise'] = "CCMP"
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
     dev[0].connect(ssid, psk=passphrase, scan_freq="2412")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
     check_mib(dev[0], [ ("dot11RSNAConfigGroupCipherSize", "128"),
                         ("dot11RSNAGroupCipherRequested", "00-50-f2-4"),
                         ("dot11RSNAPairwiseCipherRequested", "00-50-f2-4"),
@@ -243,12 +243,12 @@ def test_ap_wpa2_gtk_rekey(dev, apdev):
     passphrase = 'qwertyuiop'
     params = hostapd.wpa2_params(ssid=ssid, passphrase=passphrase)
     params['wpa_group_rekey'] = '1'
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
     dev[0].connect(ssid, psk=passphrase, scan_freq="2412")
     ev = dev[0].wait_event(["WPA: Group rekeying completed"], timeout=2)
     if ev is None:
         raise Exception("GTK rekey timed out")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
 
 def test_ap_wpa_gtk_rekey(dev, apdev):
     """WPA-PSK/TKIP AP and GTK rekey enforced by AP"""
@@ -256,12 +256,12 @@ def test_ap_wpa_gtk_rekey(dev, apdev):
     passphrase = 'qwertyuiop'
     params = hostapd.wpa_params(ssid=ssid, passphrase=passphrase)
     params['wpa_group_rekey'] = '1'
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
     dev[0].connect(ssid, psk=passphrase, scan_freq="2412")
     ev = dev[0].wait_event(["WPA: Group rekeying completed"], timeout=2)
     if ev is None:
         raise Exception("GTK rekey timed out")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
 
 def test_ap_wpa2_gmk_rekey(dev, apdev):
     """WPA2-PSK AP and GMK and GTK rekey enforced by AP"""
@@ -270,13 +270,13 @@ def test_ap_wpa2_gmk_rekey(dev, apdev):
     params = hostapd.wpa2_params(ssid=ssid, passphrase=passphrase)
     params['wpa_group_rekey'] = '1'
     params['wpa_gmk_rekey'] = '2'
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
     dev[0].connect(ssid, psk=passphrase, scan_freq="2412")
     for i in range(0, 3):
         ev = dev[0].wait_event(["WPA: Group rekeying completed"], timeout=2)
         if ev is None:
             raise Exception("GTK rekey timed out")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
 
 def test_ap_wpa2_strict_rekey(dev, apdev):
     """WPA2-PSK AP and strict GTK rekey enforced by AP"""
@@ -284,14 +284,14 @@ def test_ap_wpa2_strict_rekey(dev, apdev):
     passphrase = 'qwertyuiop'
     params = hostapd.wpa2_params(ssid=ssid, passphrase=passphrase)
     params['wpa_strict_rekey'] = '1'
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
     dev[0].connect(ssid, psk=passphrase, scan_freq="2412")
     dev[1].connect(ssid, psk=passphrase, scan_freq="2412")
     dev[1].request("DISCONNECT")
     ev = dev[0].wait_event(["WPA: Group rekeying completed"], timeout=2)
     if ev is None:
         raise Exception("GTK rekey timed out")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
 
 def test_ap_wpa2_bridge_fdb(dev, apdev):
     """Bridge FDB entry removal"""

+ 27 - 28
tests/hwsim/test_ap_qosmap.py

@@ -13,14 +13,14 @@ import hwsim_utils
 import hostapd
 from wlantest import Wlantest
 
-def check_qos_map(ap, dev, dscp, tid, ap_tid=None):
+def check_qos_map(ap, hapd, dev, dscp, tid, ap_tid=None):
     if not ap_tid:
         ap_tid = tid
     bssid = ap['bssid']
     sta = dev.p2p_interface_addr()
     wt = Wlantest()
     wt.clear_sta_counters(bssid, sta)
-    hwsim_utils.test_connectivity(dev.ifname, ap['ifname'], dscp=dscp)
+    hwsim_utils.test_connectivity(dev, hapd, dscp=dscp)
     time.sleep(0.02)
     [ tx, rx ] = wt.get_tid_counters(bssid, sta)
     if tx[tid] == 0:
@@ -38,41 +38,40 @@ def test_ap_qosmap(dev, apdev):
     ssid = "test-qosmap"
     params = { "ssid": ssid }
     params['qos_map_set'] = '53,2,22,6,8,15,0,7,255,255,16,31,32,39,255,255,40,47,48,55'
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
     dev[0].connect(ssid, key_mgmt="NONE", scan_freq="2412")
     time.sleep(0.1)
-    check_qos_map(apdev[0], dev[0], 53, 2)
-    check_qos_map(apdev[0], dev[0], 22, 6)
-    check_qos_map(apdev[0], dev[0], 8, 0)
-    check_qos_map(apdev[0], dev[0], 15, 0)
-    check_qos_map(apdev[0], dev[0], 0, 1)
-    check_qos_map(apdev[0], dev[0], 7, 1)
-    check_qos_map(apdev[0], dev[0], 16, 3)
-    check_qos_map(apdev[0], dev[0], 31, 3)
-    check_qos_map(apdev[0], dev[0], 32, 4)
-    check_qos_map(apdev[0], dev[0], 39, 4)
-    check_qos_map(apdev[0], dev[0], 40, 6)
-    check_qos_map(apdev[0], dev[0], 47, 6)
-    check_qos_map(apdev[0], dev[0], 48, 7)
-    check_qos_map(apdev[0], dev[0], 55, 7)
-    hapd = hostapd.Hostapd(apdev[0]['ifname'])
+    check_qos_map(apdev[0], hapd, dev[0], 53, 2)
+    check_qos_map(apdev[0], hapd, dev[0], 22, 6)
+    check_qos_map(apdev[0], hapd, dev[0], 8, 0)
+    check_qos_map(apdev[0], hapd, dev[0], 15, 0)
+    check_qos_map(apdev[0], hapd, dev[0], 0, 1)
+    check_qos_map(apdev[0], hapd, dev[0], 7, 1)
+    check_qos_map(apdev[0], hapd, dev[0], 16, 3)
+    check_qos_map(apdev[0], hapd, dev[0], 31, 3)
+    check_qos_map(apdev[0], hapd, dev[0], 32, 4)
+    check_qos_map(apdev[0], hapd, dev[0], 39, 4)
+    check_qos_map(apdev[0], hapd, dev[0], 40, 6)
+    check_qos_map(apdev[0], hapd, dev[0], 47, 6)
+    check_qos_map(apdev[0], hapd, dev[0], 48, 7)
+    check_qos_map(apdev[0], hapd, dev[0], 55, 7)
     hapd.request("SET_QOS_MAP_SET 22,6,8,15,0,7,255,255,16,31,32,39,255,255,40,47,48,55")
     hapd.request("SEND_QOS_MAP_CONF " + dev[0].get_status_field("address"))
-    check_qos_map(apdev[0], dev[0], 53, 7)
-    check_qos_map(apdev[0], dev[0], 22, 6)
-    check_qos_map(apdev[0], dev[0], 48, 7)
-    check_qos_map(apdev[0], dev[0], 55, 7)
-    check_qos_map(apdev[0], dev[0], 56, 56 >> 3)
-    check_qos_map(apdev[0], dev[0], 63, 63 >> 3)
+    check_qos_map(apdev[0], hapd, dev[0], 53, 7)
+    check_qos_map(apdev[0], hapd, dev[0], 22, 6)
+    check_qos_map(apdev[0], hapd, dev[0], 48, 7)
+    check_qos_map(apdev[0], hapd, dev[0], 55, 7)
+    check_qos_map(apdev[0], hapd, dev[0], 56, 56 >> 3)
+    check_qos_map(apdev[0], hapd, dev[0], 63, 63 >> 3)
 
 def test_ap_qosmap_default(dev, apdev):
     """QoS mapping with default values"""
     ssid = "test-qosmap-default"
     params = { "ssid": ssid }
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
     dev[0].connect(ssid, key_mgmt="NONE", scan_freq="2412")
     for dscp in [ 0, 7, 8, 15, 16, 23, 24, 31, 32, 39, 40, 47, 48, 55, 56, 63]:
-        check_qos_map(apdev[0], dev[0], dscp, dscp >> 3)
+        check_qos_map(apdev[0], hapd, dev[0], dscp, dscp >> 3)
 
 def test_ap_qosmap_default_acm(dev, apdev):
     """QoS mapping with default values and ACM=1 for VO/VI"""
@@ -98,7 +97,7 @@ def test_ap_qosmap_default_acm(dev, apdev):
                "wmm_ac_vo_cwmax": "2",
                "wmm_ac_vo_txop_limit": "47",
                "wmm_ac_vo_acm": "1"  }
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
     dev[0].connect(ssid, key_mgmt="NONE", scan_freq="2412")
     for dscp in [ 0, 7, 8, 15, 16, 23, 24, 31, 32, 39, 40, 47, 48, 55, 56, 63]:
         ap_tid = dscp >> 3
@@ -106,7 +105,7 @@ def test_ap_qosmap_default_acm(dev, apdev):
         # downgrade VI/VO to BE
         if tid in [ 4, 5, 6, 7 ]:
             tid = 3
-        check_qos_map(apdev[0], dev[0], dscp, tid, ap_tid)
+        check_qos_map(apdev[0], hapd, dev[0], dscp, tid, ap_tid)
 
 def test_ap_qosmap_invalid(dev, apdev):
     """QoS mapping ctrl_iface error handling"""

+ 13 - 13
tests/hwsim/test_ap_roam.py

@@ -14,45 +14,45 @@ import hostapd
 
 def test_ap_roam_open(dev, apdev):
     """Roam between two open APs"""
-    hostapd.add_ap(apdev[0]['ifname'], { "ssid": "test-open" })
+    hapd0 = hostapd.add_ap(apdev[0]['ifname'], { "ssid": "test-open" })
     dev[0].connect("test-open", key_mgmt="NONE")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
-    hostapd.add_ap(apdev[1]['ifname'], { "ssid": "test-open" })
+    hwsim_utils.test_connectivity(dev[0], hapd0)
+    hapd1 = hostapd.add_ap(apdev[1]['ifname'], { "ssid": "test-open" })
     dev[0].scan(type="ONLY")
     dev[0].roam(apdev[1]['bssid'])
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[1]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd1)
     dev[0].roam(apdev[0]['bssid'])
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd0)
 
 def test_ap_roam_wpa2_psk(dev, apdev):
     """Roam between two WPA2-PSK APs"""
     params = hostapd.wpa2_params(ssid="test-wpa2-psk", passphrase="12345678")
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd0 = hostapd.add_ap(apdev[0]['ifname'], params)
     dev[0].connect("test-wpa2-psk", psk="12345678")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
-    hostapd.add_ap(apdev[1]['ifname'], params)
+    hwsim_utils.test_connectivity(dev[0], hapd0)
+    hapd1 = hostapd.add_ap(apdev[1]['ifname'], params)
     dev[0].scan(type="ONLY")
     dev[0].roam(apdev[1]['bssid'])
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[1]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd1)
     dev[0].roam(apdev[0]['bssid'])
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd0)
 
 def test_ap_reassociation_to_same_bss(dev, apdev):
     """Reassociate to the same BSS"""
-    hostapd.add_ap(apdev[0]['ifname'], { "ssid": "test-open" })
+    hapd = hostapd.add_ap(apdev[0]['ifname'], { "ssid": "test-open" })
     dev[0].connect("test-open", key_mgmt="NONE")
 
     dev[0].request("REASSOCIATE")
     ev = dev[0].wait_event(["CTRL-EVENT-CONNECTED"], timeout=10)
     if ev is None:
         raise Exception("Reassociation with the AP timed out")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
 
     dev[0].request("REATTACH")
     ev = dev[0].wait_event(["CTRL-EVENT-CONNECTED"], timeout=10)
     if ev is None:
         raise Exception("Reassociation (reattach) with the AP timed out")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
 
 def test_ap_roam_set_bssid(dev, apdev):
     """Roam control"""

+ 68 - 63
tests/hwsim/test_ap_tdls.py

@@ -17,42 +17,42 @@ from wlantest import Wlantest
 
 def start_ap_wpa2_psk(ifname):
     params = hostapd.wpa2_params(ssid="test-wpa2-psk", passphrase="12345678")
-    hostapd.add_ap(ifname, params)
+    return hostapd.add_ap(ifname, params)
 
-def connectivity(dev, ap_ifname):
+def connectivity(dev, hapd):
     hwsim_utils.test_connectivity_sta(dev[0], dev[1])
-    hwsim_utils.test_connectivity(dev[0].ifname, ap_ifname)
-    hwsim_utils.test_connectivity(dev[1].ifname, ap_ifname)
+    hwsim_utils.test_connectivity(dev[0], hapd)
+    hwsim_utils.test_connectivity(dev[1], hapd)
 
-def connect_2sta(dev, ssid, ap_ifname):
+def connect_2sta(dev, ssid, hapd):
     dev[0].connect(ssid, psk="12345678", scan_freq="2412")
     dev[1].connect(ssid, psk="12345678", scan_freq="2412")
-    connectivity(dev, ap_ifname)
+    connectivity(dev, hapd)
 
-def connect_2sta_wpa2_psk(dev, ap_ifname):
-    connect_2sta(dev, "test-wpa2-psk", ap_ifname)
+def connect_2sta_wpa2_psk(dev, hapd):
+    connect_2sta(dev, "test-wpa2-psk", hapd)
 
-def connect_2sta_wpa_psk(dev, ap_ifname):
-    connect_2sta(dev, "test-wpa-psk", ap_ifname)
+def connect_2sta_wpa_psk(dev, hapd):
+    connect_2sta(dev, "test-wpa-psk", hapd)
 
-def connect_2sta_wpa_psk_mixed(dev, ap_ifname):
+def connect_2sta_wpa_psk_mixed(dev, hapd):
     dev[0].connect("test-wpa-mixed-psk", psk="12345678", proto="WPA",
                    scan_freq="2412")
     dev[1].connect("test-wpa-mixed-psk", psk="12345678", proto="WPA2",
                    scan_freq="2412")
-    connectivity(dev, ap_ifname)
+    connectivity(dev, hapd)
 
-def connect_2sta_wep(dev, ap_ifname):
+def connect_2sta_wep(dev, hapd):
     dev[0].connect("test-wep", key_mgmt="NONE", wep_key0='"hello"',
                    scan_freq="2412")
     dev[1].connect("test-wep", key_mgmt="NONE", wep_key0='"hello"',
                    scan_freq="2412")
-    connectivity(dev, ap_ifname)
+    connectivity(dev, hapd)
 
-def connect_2sta_open(dev, ap_ifname):
+def connect_2sta_open(dev, hapd):
     dev[0].connect("test-open", key_mgmt="NONE", scan_freq="2412")
     dev[1].connect("test-open", key_mgmt="NONE", scan_freq="2412")
-    connectivity(dev, ap_ifname)
+    connectivity(dev, hapd)
 
 def wlantest_setup():
     wt = Wlantest()
@@ -96,14 +96,15 @@ def tdls_check_ap(sta0, sta1, bssid, addr0, addr1):
     if inv_ap > 0:
         raise Exception("Invalid frames through AP path")
 
-def check_connectivity(sta0, sta1, ap):
+def check_connectivity(sta0, sta1, hapd):
     hwsim_utils.test_connectivity_sta(sta0, sta1)
-    hwsim_utils.test_connectivity(sta0.ifname, ap['ifname'])
-    hwsim_utils.test_connectivity(sta1.ifname, ap['ifname'])
+    hwsim_utils.test_connectivity(sta0, hapd)
+    hwsim_utils.test_connectivity(sta1, hapd)
 
 def setup_tdls(sta0, sta1, ap, reverse=False, expect_fail=False):
     logger.info("Setup TDLS")
-    check_connectivity(sta0, sta1, ap)
+    hapd = hostapd.Hostapd(ap['ifname'])
+    check_connectivity(sta0, sta1, hapd)
     bssid = ap['bssid']
     addr0 = sta0.p2p_interface_addr()
     addr1 = sta1.p2p_interface_addr()
@@ -122,11 +123,12 @@ def setup_tdls(sta0, sta1, ap, reverse=False, expect_fail=False):
     if conf == 0:
         raise Exception("No TDLS Setup Confirm (success) seen")
     tdls_check_dl(sta0, sta1, bssid, addr0, addr1)
-    check_connectivity(sta0, sta1, ap)
+    check_connectivity(sta0, sta1, hapd)
 
 def teardown_tdls(sta0, sta1, ap, responder=False):
     logger.info("Teardown TDLS")
-    check_connectivity(sta0, sta1, ap)
+    hapd = hostapd.Hostapd(ap['ifname'])
+    check_connectivity(sta0, sta1, hapd)
     bssid = ap['bssid']
     addr0 = sta0.p2p_interface_addr()
     addr1 = sta1.p2p_interface_addr()
@@ -140,21 +142,21 @@ def teardown_tdls(sta0, sta1, ap, responder=False):
     if teardown == 0:
         raise Exception("No TDLS Setup Teardown seen")
     tdls_check_ap(sta0, sta1, bssid, addr0, addr1)
-    check_connectivity(sta0, sta1, ap)
+    check_connectivity(sta0, sta1, hapd)
 
 def test_ap_tdls_discovery(dev, apdev):
     """WPA2-PSK AP and two stations using TDLS discovery"""
-    start_ap_wpa2_psk(apdev[0]['ifname'])
+    hapd = start_ap_wpa2_psk(apdev[0]['ifname'])
     wlantest_setup()
-    connect_2sta_wpa2_psk(dev, apdev[0]['ifname'])
+    connect_2sta_wpa2_psk(dev, hapd)
     dev[0].request("TDLS_DISCOVER " + dev[1].p2p_interface_addr())
     time.sleep(0.2)
 
 def test_ap_wpa2_tdls(dev, apdev):
     """WPA2-PSK AP and two stations using TDLS"""
-    start_ap_wpa2_psk(apdev[0]['ifname'])
+    hapd = start_ap_wpa2_psk(apdev[0]['ifname'])
     wlantest_setup()
-    connect_2sta_wpa2_psk(dev, apdev[0]['ifname'])
+    connect_2sta_wpa2_psk(dev, hapd)
     setup_tdls(dev[0], dev[1], apdev[0])
     teardown_tdls(dev[0], dev[1], apdev[0])
     setup_tdls(dev[1], dev[0], apdev[0])
@@ -162,41 +164,41 @@ def test_ap_wpa2_tdls(dev, apdev):
 
 def test_ap_wpa2_tdls_concurrent_init(dev, apdev):
     """Concurrent TDLS setup initiation"""
-    start_ap_wpa2_psk(apdev[0]['ifname'])
+    hapd = start_ap_wpa2_psk(apdev[0]['ifname'])
     wlantest_setup()
-    connect_2sta_wpa2_psk(dev, apdev[0]['ifname'])
+    connect_2sta_wpa2_psk(dev, hapd)
     dev[0].request("SET tdls_testing 0x80")
     setup_tdls(dev[1], dev[0], apdev[0], reverse=True)
 
 def test_ap_wpa2_tdls_concurrent_init2(dev, apdev):
     """Concurrent TDLS setup initiation (reverse)"""
-    start_ap_wpa2_psk(apdev[0]['ifname'])
+    hapd = start_ap_wpa2_psk(apdev[0]['ifname'])
     wlantest_setup()
-    connect_2sta_wpa2_psk(dev, apdev[0]['ifname'])
+    connect_2sta_wpa2_psk(dev, hapd)
     dev[1].request("SET tdls_testing 0x80")
     setup_tdls(dev[0], dev[1], apdev[0])
 
 def test_ap_wpa2_tdls_decline_resp(dev, apdev):
     """Decline TDLS Setup Response"""
-    start_ap_wpa2_psk(apdev[0]['ifname'])
+    hapd = start_ap_wpa2_psk(apdev[0]['ifname'])
     wlantest_setup()
-    connect_2sta_wpa2_psk(dev, apdev[0]['ifname'])
+    connect_2sta_wpa2_psk(dev, hapd)
     dev[1].request("SET tdls_testing 0x200")
     setup_tdls(dev[1], dev[0], apdev[0], expect_fail=True)
 
 def test_ap_wpa2_tdls_long_lifetime(dev, apdev):
     """TDLS with long TPK lifetime"""
-    start_ap_wpa2_psk(apdev[0]['ifname'])
+    hapd = start_ap_wpa2_psk(apdev[0]['ifname'])
     wlantest_setup()
-    connect_2sta_wpa2_psk(dev, apdev[0]['ifname'])
+    connect_2sta_wpa2_psk(dev, hapd)
     dev[1].request("SET tdls_testing 0x40")
     setup_tdls(dev[1], dev[0], apdev[0])
 
 def test_ap_wpa2_tdls_long_frame(dev, apdev):
     """TDLS with long setup/teardown frames"""
-    start_ap_wpa2_psk(apdev[0]['ifname'])
+    hapd = start_ap_wpa2_psk(apdev[0]['ifname'])
     wlantest_setup()
-    connect_2sta_wpa2_psk(dev, apdev[0]['ifname'])
+    connect_2sta_wpa2_psk(dev, hapd)
     dev[0].request("SET tdls_testing 0x1")
     dev[1].request("SET tdls_testing 0x1")
     setup_tdls(dev[1], dev[0], apdev[0])
@@ -205,34 +207,34 @@ def test_ap_wpa2_tdls_long_frame(dev, apdev):
 
 def test_ap_wpa2_tdls_reneg(dev, apdev):
     """Renegotiate TDLS link"""
-    start_ap_wpa2_psk(apdev[0]['ifname'])
+    hapd = start_ap_wpa2_psk(apdev[0]['ifname'])
     wlantest_setup()
-    connect_2sta_wpa2_psk(dev, apdev[0]['ifname'])
+    connect_2sta_wpa2_psk(dev, hapd)
     setup_tdls(dev[1], dev[0], apdev[0])
     setup_tdls(dev[0], dev[1], apdev[0])
 
 def test_ap_wpa2_tdls_wrong_lifetime_resp(dev, apdev):
     """Incorrect TPK lifetime in TDLS Setup Response"""
-    start_ap_wpa2_psk(apdev[0]['ifname'])
+    hapd = start_ap_wpa2_psk(apdev[0]['ifname'])
     wlantest_setup()
-    connect_2sta_wpa2_psk(dev, apdev[0]['ifname'])
+    connect_2sta_wpa2_psk(dev, hapd)
     dev[1].request("SET tdls_testing 0x10")
     setup_tdls(dev[0], dev[1], apdev[0], expect_fail=True)
 
 def test_ap_wpa2_tdls_diff_rsnie(dev, apdev):
     """TDLS with different RSN IEs"""
-    start_ap_wpa2_psk(apdev[0]['ifname'])
+    hapd = start_ap_wpa2_psk(apdev[0]['ifname'])
     wlantest_setup()
-    connect_2sta_wpa2_psk(dev, apdev[0]['ifname'])
+    connect_2sta_wpa2_psk(dev, hapd)
     dev[1].request("SET tdls_testing 0x2")
     setup_tdls(dev[1], dev[0], apdev[0])
     teardown_tdls(dev[1], dev[0], apdev[0])
 
 def test_ap_wpa2_tdls_wrong_tpk_m2_mic(dev, apdev):
     """Incorrect MIC in TDLS Setup Response"""
-    start_ap_wpa2_psk(apdev[0]['ifname'])
+    hapd = start_ap_wpa2_psk(apdev[0]['ifname'])
     wlantest_setup()
-    connect_2sta_wpa2_psk(dev, apdev[0]['ifname'])
+    connect_2sta_wpa2_psk(dev, hapd)
     dev[0].request("SET tdls_testing 0x800")
     addr0 = dev[0].p2p_interface_addr()
     dev[1].tdls_setup(addr0)
@@ -240,9 +242,9 @@ def test_ap_wpa2_tdls_wrong_tpk_m2_mic(dev, apdev):
 
 def test_ap_wpa2_tdls_wrong_tpk_m3_mic(dev, apdev):
     """Incorrect MIC in TDLS Setup Confirm"""
-    start_ap_wpa2_psk(apdev[0]['ifname'])
+    hapd = start_ap_wpa2_psk(apdev[0]['ifname'])
     wlantest_setup()
-    connect_2sta_wpa2_psk(dev, apdev[0]['ifname'])
+    connect_2sta_wpa2_psk(dev, hapd)
     dev[1].request("SET tdls_testing 0x800")
     addr0 = dev[0].p2p_interface_addr()
     dev[1].tdls_setup(addr0)
@@ -250,41 +252,41 @@ def test_ap_wpa2_tdls_wrong_tpk_m3_mic(dev, apdev):
 
 def test_ap_wpa_tdls(dev, apdev):
     """WPA-PSK AP and two stations using TDLS"""
-    hostapd.add_ap(apdev[0]['ifname'],
-                   hostapd.wpa_params(ssid="test-wpa-psk",
-                                      passphrase="12345678"))
+    hapd = hostapd.add_ap(apdev[0]['ifname'],
+                          hostapd.wpa_params(ssid="test-wpa-psk",
+                                             passphrase="12345678"))
     wlantest_setup()
-    connect_2sta_wpa_psk(dev, apdev[0]['ifname'])
+    connect_2sta_wpa_psk(dev, hapd)
     setup_tdls(dev[0], dev[1], apdev[0])
     teardown_tdls(dev[0], dev[1], apdev[0])
     setup_tdls(dev[1], dev[0], apdev[0])
 
 def test_ap_wpa_mixed_tdls(dev, apdev):
     """WPA+WPA2-PSK AP and two stations using TDLS"""
-    hostapd.add_ap(apdev[0]['ifname'],
-                   hostapd.wpa_mixed_params(ssid="test-wpa-mixed-psk",
-                                            passphrase="12345678"))
+    hapd = hostapd.add_ap(apdev[0]['ifname'],
+                          hostapd.wpa_mixed_params(ssid="test-wpa-mixed-psk",
+                                                   passphrase="12345678"))
     wlantest_setup()
-    connect_2sta_wpa_psk_mixed(dev, apdev[0]['ifname'])
+    connect_2sta_wpa_psk_mixed(dev, hapd)
     setup_tdls(dev[0], dev[1], apdev[0])
     teardown_tdls(dev[0], dev[1], apdev[0])
     setup_tdls(dev[1], dev[0], apdev[0])
 
 def test_ap_wep_tdls(dev, apdev):
     """WEP AP and two stations using TDLS"""
-    hostapd.add_ap(apdev[0]['ifname'],
-                   { "ssid": "test-wep", "wep_key0": '"hello"' })
+    hapd = hostapd.add_ap(apdev[0]['ifname'],
+                          { "ssid": "test-wep", "wep_key0": '"hello"' })
     wlantest_setup()
-    connect_2sta_wep(dev, apdev[0]['ifname'])
+    connect_2sta_wep(dev, hapd)
     setup_tdls(dev[0], dev[1], apdev[0])
     teardown_tdls(dev[0], dev[1], apdev[0])
     setup_tdls(dev[1], dev[0], apdev[0])
 
 def test_ap_open_tdls(dev, apdev):
     """Open AP and two stations using TDLS"""
-    hostapd.add_ap(apdev[0]['ifname'], { "ssid": "test-open" })
+    hapd = hostapd.add_ap(apdev[0]['ifname'], { "ssid": "test-open" })
     wlantest_setup()
-    connect_2sta_open(dev, apdev[0]['ifname'])
+    connect_2sta_open(dev, hapd)
     setup_tdls(dev[0], dev[1], apdev[0])
     teardown_tdls(dev[0], dev[1], apdev[0])
     setup_tdls(dev[1], dev[0], apdev[0])
@@ -305,7 +307,10 @@ def test_ap_wpa2_tdls_bssid_mismatch(dev, apdev):
                        bssid=apdev[0]['bssid'])
         dev[1].connect(ssid, psk=passphrase, scan_freq="2412",
                        bssid=apdev[1]['bssid'])
-        connectivity(dev, "ap-br0")
+        hwsim_utils.test_connectivity_sta(dev[0], dev[1])
+        hwsim_utils.test_connectivity_iface(dev[0], "ap-br0")
+        hwsim_utils.test_connectivity_iface(dev[1], "ap-br0")
+
         addr0 = dev[0].p2p_interface_addr()
         dev[1].tdls_setup(addr0)
         time.sleep(1)
@@ -316,8 +321,8 @@ def test_ap_wpa2_tdls_bssid_mismatch(dev, apdev):
 
 def test_ap_wpa2_tdls_responder_teardown(dev, apdev):
     """TDLS teardown from responder with WPA2-PSK AP"""
-    start_ap_wpa2_psk(apdev[0]['ifname'])
+    hapd = start_ap_wpa2_psk(apdev[0]['ifname'])
     wlantest_setup()
-    connect_2sta_wpa2_psk(dev, apdev[0]['ifname'])
+    connect_2sta_wpa2_psk(dev, hapd)
     setup_tdls(dev[0], dev[1], apdev[0])
     teardown_tdls(dev[0], dev[1], apdev[0], responder=True)

+ 7 - 7
tests/hwsim/test_ap_vht.py

@@ -36,7 +36,7 @@ def test_ap_vht80(dev, apdev):
         hapd = hostapd.add_ap(apdev[0]['ifname'], params)
 
         dev[0].connect("vht", key_mgmt="NONE", scan_freq="5180")
-        hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+        hwsim_utils.test_connectivity(dev[0], hapd)
     except Exception, e:
         if isinstance(e, Exception) and str(e) == "AP startup failed":
             if not vht_supported():
@@ -71,7 +71,7 @@ def test_ap_vht80_params(dev, apdev):
         if "status_code=104" not in ev:
             raise Exception("Unexpected rejection status code")
         dev[1].request("DISCONNECT")
-        hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+        hwsim_utils.test_connectivity(dev[0], hapd)
     except Exception, e:
         if isinstance(e, Exception) and str(e) == "AP startup failed":
             if not vht_supported():
@@ -98,9 +98,9 @@ def test_ap_vht_20(devs, apdevs):
                    "supported_rates": "60 120 240 360 480 540",
                    "require_vht": "1",
                  }
-        hostapd.add_ap(ap['ifname'], params)
+        hapd = hostapd.add_ap(ap['ifname'], params)
         dev.connect("test-vht20", scan_freq="5180", key_mgmt="NONE")
-        hwsim_utils.test_connectivity(dev.ifname, ap['ifname'])
+        hwsim_utils.test_connectivity(dev, hapd)
     finally:
         subprocess.call(['sudo', 'iw', 'reg', 'set', '00'])
 
@@ -213,9 +213,9 @@ def test_ap_vht160(dev, apdev):
             raise Exception("Unexpected frequency(2)")
 
         dev[0].connect("vht", key_mgmt="NONE", scan_freq="5180")
-        hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+        hwsim_utils.test_connectivity(dev[0], hapd)
         dev[1].connect("vht2", key_mgmt="NONE", scan_freq="5500")
-        hwsim_utils.test_connectivity(dev[1].ifname, apdev[1]['ifname'])
+        hwsim_utils.test_connectivity(dev[1], hapd2)
     except Exception, e:
         if isinstance(e, Exception) and str(e) == "AP startup failed":
             if not vht_supported():
@@ -266,7 +266,7 @@ def test_ap_vht80plus80(dev, apdev):
             raise Exception("Unexpected interface state(2)")
 
         dev[1].connect("vht2", key_mgmt="NONE", scan_freq="5180")
-        hwsim_utils.test_connectivity(dev[1].ifname, apdev[1]['ifname'])
+        hwsim_utils.test_connectivity(dev[1], hapd2)
     except Exception, e:
         if isinstance(e, Exception) and str(e) == "AP startup failed":
             if not vht_supported():

+ 20 - 20
tests/hwsim/test_ap_vlan.py

@@ -19,14 +19,14 @@ def test_ap_vlan_open(dev, apdev):
     params = { "ssid": "test-vlan-open",
                "dynamic_vlan": "1",
                "accept_mac_file": "hostapd.accept" }
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
 
     dev[0].connect("test-vlan-open", key_mgmt="NONE", scan_freq="2412")
     dev[1].connect("test-vlan-open", key_mgmt="NONE", scan_freq="2412")
     dev[2].connect("test-vlan-open", key_mgmt="NONE", scan_freq="2412")
-    hwsim_utils.test_connectivity(dev[0].ifname, "brvlan1")
-    hwsim_utils.test_connectivity(dev[1].ifname, "brvlan2")
-    hwsim_utils.test_connectivity(dev[2].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity_iface(dev[0], "brvlan1")
+    hwsim_utils.test_connectivity_iface(dev[1], "brvlan2")
+    hwsim_utils.test_connectivity(dev[2], hapd)
 
 def test_ap_vlan_file_open(dev, apdev):
     """AP VLAN with open network and vlan_file mapping"""
@@ -34,14 +34,14 @@ def test_ap_vlan_file_open(dev, apdev):
                "dynamic_vlan": "1",
                "vlan_file": "hostapd.vlan",
                "accept_mac_file": "hostapd.accept" }
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
 
     dev[0].connect("test-vlan-open", key_mgmt="NONE", scan_freq="2412")
     dev[1].connect("test-vlan-open", key_mgmt="NONE", scan_freq="2412")
     dev[2].connect("test-vlan-open", key_mgmt="NONE", scan_freq="2412")
-    hwsim_utils.test_connectivity(dev[0].ifname, "brvlan1")
-    hwsim_utils.test_connectivity(dev[1].ifname, "brvlan2")
-    hwsim_utils.test_connectivity(dev[2].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity_iface(dev[0], "brvlan1")
+    hwsim_utils.test_connectivity_iface(dev[1], "brvlan2")
+    hwsim_utils.test_connectivity(dev[2], hapd)
 
 def test_ap_vlan_wpa2(dev, apdev):
     """AP VLAN with WPA2-PSK"""
@@ -49,20 +49,20 @@ def test_ap_vlan_wpa2(dev, apdev):
                                  passphrase="12345678")
     params['dynamic_vlan'] = "1";
     params['accept_mac_file'] = "hostapd.accept";
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
 
     dev[0].connect("test-vlan", psk="12345678", scan_freq="2412")
     dev[1].connect("test-vlan", psk="12345678", scan_freq="2412")
     dev[2].connect("test-vlan", psk="12345678", scan_freq="2412")
-    hwsim_utils.test_connectivity(dev[0].ifname, "brvlan1")
-    hwsim_utils.test_connectivity(dev[1].ifname, "brvlan2")
-    hwsim_utils.test_connectivity(dev[2].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity_iface(dev[0], "brvlan1")
+    hwsim_utils.test_connectivity_iface(dev[1], "brvlan2")
+    hwsim_utils.test_connectivity(dev[2], hapd)
 
 def test_ap_vlan_wpa2_radius(dev, apdev):
     """AP VLAN with WPA2-Enterprise and RADIUS attributes"""
     params = hostapd.wpa2_eap_params(ssid="test-vlan")
     params['dynamic_vlan'] = "1";
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
 
     dev[0].connect("test-vlan", key_mgmt="WPA-EAP", eap="PAX",
                    identity="vlan1",
@@ -76,9 +76,9 @@ def test_ap_vlan_wpa2_radius(dev, apdev):
                    identity="pax.user@example.com",
                    password_hex="0123456789abcdef0123456789abcdef",
                    scan_freq="2412")
-    hwsim_utils.test_connectivity(dev[0].ifname, "brvlan1")
-    hwsim_utils.test_connectivity(dev[1].ifname, "brvlan2")
-    hwsim_utils.test_connectivity(dev[2].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity_iface(dev[0], "brvlan1")
+    hwsim_utils.test_connectivity_iface(dev[1], "brvlan2")
+    hwsim_utils.test_connectivity(dev[2], hapd)
 
 def test_ap_vlan_wpa2_radius_required(dev, apdev):
     """AP VLAN with WPA2-Enterprise and RADIUS attributes required"""
@@ -107,11 +107,11 @@ def test_ap_vlan_tagged(dev, apdev):
                "dynamic_vlan": "1",
                "vlan_tagged_interface": "lo",
                "accept_mac_file": "hostapd.accept" }
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
 
     dev[0].connect("test-vlan-open", key_mgmt="NONE", scan_freq="2412")
     dev[1].connect("test-vlan-open", key_mgmt="NONE", scan_freq="2412")
     dev[2].connect("test-vlan-open", key_mgmt="NONE", scan_freq="2412")
-    hwsim_utils.test_connectivity(dev[0].ifname, "brlo.1")
-    hwsim_utils.test_connectivity(dev[1].ifname, "brlo.2")
-    hwsim_utils.test_connectivity(dev[2].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity_iface(dev[0], "brlo.1")
+    hwsim_utils.test_connectivity_iface(dev[1], "brlo.2")
+    hwsim_utils.test_connectivity(dev[2], hapd)

+ 2 - 2
tests/hwsim/test_connect_cmd.py

@@ -52,7 +52,7 @@ def test_connect_cmd_wpa2_psk(dev, apdev):
 def test_connect_cmd_concurrent_grpform_while_connecting(dev, apdev):
     """Concurrent P2P group formation while connecting to an AP using cfg80211 connect command"""
     logger.info("Start connection to an infrastructure AP")
-    hostapd.add_ap(apdev[0]['ifname'], { "ssid": "test-open" })
+    hapd = hostapd.add_ap(apdev[0]['ifname'], { "ssid": "test-open" })
 
     wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
     wpas.interface_add("wlan5", drv_params="force_connect_cmd=1")
@@ -67,7 +67,7 @@ def test_connect_cmd_concurrent_grpform_while_connecting(dev, apdev):
     remove_group(dev[0], wpas)
 
     logger.info("Confirm AP connection after P2P group removal")
-    hwsim_utils.test_connectivity(wpas.ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(wpas, hapd)
 
 def test_connect_cmd_reject_assoc(dev, apdev):
     """Connection using cfg80211 connect command getting rejected"""

+ 2 - 2
tests/hwsim/test_dfs.py

@@ -83,7 +83,7 @@ def test_dfs(dev, apdev):
             raise Exception("Unexpected frequency")
 
         dev[0].connect("dfs", key_mgmt="NONE")
-        hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+        hwsim_utils.test_connectivity(dev[0], hapd)
 
         hapd.request("RADAR DETECTED freq=5260 ht_enabled=1 chan_width=1")
         ev = hapd.wait_event(["DFS-RADAR-DETECTED"], timeout=10)
@@ -103,7 +103,7 @@ def test_dfs(dev, apdev):
         if "freq=5260" in ev:
             raise Exception("Channel did not change after radar was detected(2)");
         time.sleep(1)
-        hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+        hwsim_utils.test_connectivity(dev[0], hapd)
     finally:
         subprocess.call(['sudo', 'iw', 'reg', 'set', '00'])
 

+ 8 - 8
tests/hwsim/test_ibss.py

@@ -110,9 +110,9 @@ def test_ibss_rsn(dev):
 
     # Allow some time for all peers to complete key setup
     time.sleep(3)
-    hwsim_utils.test_connectivity(dev[0].ifname, dev[1].ifname)
-    hwsim_utils.test_connectivity(dev[0].ifname, dev[2].ifname)
-    hwsim_utils.test_connectivity(dev[1].ifname, dev[2].ifname)
+    hwsim_utils.test_connectivity(dev[0], dev[1])
+    hwsim_utils.test_connectivity(dev[0], dev[2])
+    hwsim_utils.test_connectivity(dev[1], dev[2])
 
     dev[1].request("REMOVE_NETWORK all")
     time.sleep(1)
@@ -126,7 +126,7 @@ def test_ibss_rsn(dev):
     wait_4way_handshake(dev[0], dev[1])
     wait_4way_handshake(dev[1], dev[0])
     time.sleep(3)
-    hwsim_utils.test_connectivity(dev[0].ifname, dev[1].ifname)
+    hwsim_utils.test_connectivity(dev[0], dev[1])
 
 def test_ibss_wpa_none(dev):
     """IBSS WPA-None"""
@@ -172,15 +172,15 @@ def test_ibss_wpa_none(dev):
     # This is supposed to work, but looks like WPA-None does not work with
     # mac80211 currently..
     try:
-        hwsim_utils.test_connectivity(dev[0].ifname, dev[1].ifname)
+        hwsim_utils.test_connectivity(dev[0], dev[1])
     except Exception, e:
         logger.info("Ignoring known connectivity failure: " + str(e))
     try:
-        hwsim_utils.test_connectivity(dev[0].ifname, dev[2].ifname)
+        hwsim_utils.test_connectivity(dev[0], dev[2])
     except Exception, e:
         logger.info("Ignoring known connectivity failure: " + str(e))
     try:
-        hwsim_utils.test_connectivity(dev[1].ifname, dev[2].ifname)
+        hwsim_utils.test_connectivity(dev[1], dev[2])
     except Exception, e:
         logger.info("Ignoring known connectivity failure: " + str(e))
 
@@ -220,7 +220,7 @@ def test_ibss_wpa_none_ccmp(dev):
     # This is supposed to work, but looks like WPA-None does not work with
     # mac80211 currently..
     try:
-        hwsim_utils.test_connectivity(dev[0].ifname, dev[1].ifname)
+        hwsim_utils.test_connectivity(dev[0], dev[1])
     except Exception, e:
         logger.info("Ignoring known connectivity failure: " + str(e))
 

+ 7 - 7
tests/hwsim/test_ieee8021x.py

@@ -19,12 +19,12 @@ def test_ieee8021x_wep104(dev, apdev):
     params["ieee8021x"] = "1"
     params["wep_key_len_broadcast"] = "13"
     params["wep_key_len_unicast"] = "13"
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
 
     dev[0].connect("ieee8021x-wep", key_mgmt="IEEE8021X", eap="PSK",
                    identity="psk.user@example.com",
                    password_hex="0123456789abcdef0123456789abcdef")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
 
 def test_ieee8021x_wep40(dev, apdev):
     """IEEE 802.1X connection using dynamic WEP40"""
@@ -33,24 +33,24 @@ def test_ieee8021x_wep40(dev, apdev):
     params["ieee8021x"] = "1"
     params["wep_key_len_broadcast"] = "5"
     params["wep_key_len_unicast"] = "5"
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
 
     dev[0].connect("ieee8021x-wep", key_mgmt="IEEE8021X", eap="PSK",
                    identity="psk.user@example.com",
                    password_hex="0123456789abcdef0123456789abcdef")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
 
 def test_ieee8021x_open(dev, apdev):
     """IEEE 802.1X connection using open network"""
     params = hostapd.radius_params()
     params["ssid"] = "ieee8021x-open"
     params["ieee8021x"] = "1"
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
 
     id = dev[0].connect("ieee8021x-open", key_mgmt="IEEE8021X", eapol_flags="0",
                         eap="PSK", identity="psk.user@example.com",
                         password_hex="0123456789abcdef0123456789abcdef")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
 
     logger.info("Test EAPOL-Logoff")
     dev[0].request("LOGOFF")
@@ -62,4 +62,4 @@ def test_ieee8021x_open(dev, apdev):
 
     dev[0].request("LOGON")
     dev[0].connect_network(id)
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)

+ 20 - 15
tests/hwsim/test_nfc_wps.py

@@ -12,7 +12,7 @@ logger = logging.getLogger()
 import hwsim_utils
 import hostapd
 
-def check_wpa2_connection(sta, ap, ssid, mixed=False):
+def check_wpa2_connection(sta, ap, hapd, ssid, mixed=False):
     status = sta.get_status()
     if status['wpa_state'] != 'COMPLETED':
         raise Exception("Not fully connected")
@@ -26,7 +26,7 @@ def check_wpa2_connection(sta, ap, ssid, mixed=False):
         raise Exception("Unexpected encryption configuration")
     if status['key_mgmt'] != 'WPA2-PSK':
         raise Exception("Unexpected key_mgmt")
-    hwsim_utils.test_connectivity(sta.ifname, ap['ifname'])
+    hwsim_utils.test_connectivity(sta, hapd)
 
 def ap_wps_params(ssid):
     return { "ssid": ssid, "eap_server": "1", "wps_state": "2",
@@ -53,7 +53,7 @@ def test_nfc_wps_password_token_sta(dev, apdev):
     ev = dev[0].wait_event(["CTRL-EVENT-CONNECTED"], timeout=30)
     if ev is None:
         raise Exception("Association with the AP timed out")
-    check_wpa2_connection(dev[0], apdev[0], ssid)
+    check_wpa2_connection(dev[0], apdev[0], hapd, ssid)
 
 def test_nfc_wps_config_token(dev, apdev):
     """NFC tag with configuration token from AP"""
@@ -72,7 +72,7 @@ def test_nfc_wps_config_token(dev, apdev):
     ev = dev[0].wait_event(["CTRL-EVENT-CONNECTED"], timeout=15)
     if ev is None:
         raise Exception("Association with the AP timed out")
-    check_wpa2_connection(dev[0], apdev[0], ssid)
+    check_wpa2_connection(dev[0], apdev[0], hapd, ssid)
 
 def test_nfc_wps_config_token_init(dev, apdev):
     """NFC tag with configuration token from AP with auto configuration"""
@@ -91,7 +91,7 @@ def test_nfc_wps_config_token_init(dev, apdev):
     ev = dev[0].wait_event(["CTRL-EVENT-CONNECTED"], timeout=15)
     if ev is None:
         raise Exception("Association with the AP timed out")
-    check_wpa2_connection(dev[0], apdev[0], ssid, mixed=True)
+    check_wpa2_connection(dev[0], apdev[0], hapd, ssid, mixed=True)
 
 def test_nfc_wps_password_token_sta_init(dev, apdev):
     """Initial AP configuration with first WPS NFC Enrollee"""
@@ -113,7 +113,7 @@ def test_nfc_wps_password_token_sta_init(dev, apdev):
     ev = dev[0].wait_event(["CTRL-EVENT-CONNECTED"], timeout=30)
     if ev is None:
         raise Exception("Association with the AP timed out")
-    check_wpa2_connection(dev[0], apdev[0], ssid, mixed=True)
+    check_wpa2_connection(dev[0], apdev[0], hapd, ssid, mixed=True)
 
 def test_nfc_wps_password_token_ap(dev, apdev):
     """WPS registrar configuring an AP using AP password token"""
@@ -140,7 +140,7 @@ def test_nfc_wps_password_token_ap(dev, apdev):
     ev = dev[0].wait_event(["CTRL-EVENT-CONNECTED"], timeout=30)
     if ev is None:
         raise Exception("Association with the AP timed out")
-    check_wpa2_connection(dev[0], apdev[0], new_ssid, mixed=True)
+    check_wpa2_connection(dev[0], apdev[0], hapd, new_ssid, mixed=True)
     if "FAIL" in hapd.request("WPS_NFC_TOKEN disable"):
         raise Exception("Failed to disable AP password token")
     if "FAIL" in hapd.request("WPS_NFC_TOKEN WPS"):
@@ -170,7 +170,7 @@ def test_nfc_wps_handover_init(dev, apdev):
     ev = dev[0].wait_event(["CTRL-EVENT-CONNECTED"], timeout=15)
     if ev is None:
         raise Exception("Association with the AP timed out")
-    check_wpa2_connection(dev[0], apdev[0], ssid, mixed=True)
+    check_wpa2_connection(dev[0], apdev[0], hapd, ssid, mixed=True)
 
 def test_nfc_wps_handover_errors(dev, apdev):
     """WPS AP NFC handover report error cases"""
@@ -225,7 +225,7 @@ def test_nfc_wps_handover(dev, apdev):
     ev = dev[0].wait_event(["CTRL-EVENT-CONNECTED"], timeout=30)
     if ev is None:
         raise Exception("Association with the AP timed out")
-    check_wpa2_connection(dev[0], apdev[0], ssid)
+    check_wpa2_connection(dev[0], apdev[0], hapd, ssid)
 
 def test_nfc_wps_handover_5ghz(dev, apdev):
     """Connect to WPS AP with NFC connection handover on 5 GHz band"""
@@ -253,7 +253,7 @@ def test_nfc_wps_handover_5ghz(dev, apdev):
         ev = dev[0].wait_event(["CTRL-EVENT-CONNECTED"], timeout=30)
         if ev is None:
             raise Exception("Association with the AP timed out")
-        check_wpa2_connection(dev[0], apdev[0], ssid)
+        check_wpa2_connection(dev[0], apdev[0], hapd, ssid)
     finally:
         subprocess.call(['sudo', 'iw', 'reg', 'set', '00'])
 
@@ -283,7 +283,7 @@ def test_nfc_wps_handover_chan14(dev, apdev):
         ev = dev[0].wait_event(["CTRL-EVENT-CONNECTED"], timeout=30)
         if ev is None:
             raise Exception("Association with the AP timed out")
-        check_wpa2_connection(dev[0], apdev[0], ssid)
+        check_wpa2_connection(dev[0], apdev[0], hapd, ssid)
     finally:
         subprocess.call(['sudo', 'iw', 'reg', 'set', '00'])
 
@@ -317,7 +317,7 @@ def test_nfc_wps_handover_with_pw_token_set(dev, apdev):
     ev = dev[0].wait_event(["CTRL-EVENT-CONNECTED"], timeout=15)
     if ev is None:
         raise Exception("Association with the AP timed out")
-    check_wpa2_connection(dev[0], apdev[0], ssid)
+    check_wpa2_connection(dev[0], apdev[0], hapd, ssid)
 
 def test_nfc_wps_handover_pk_hash_mismatch_sta(dev, apdev):
     """WPS NFC connection handover with invalid pkhash from station (negative)"""
@@ -410,6 +410,7 @@ def test_nfc_wps_er_pw_token(dev, apdev):
     """WPS NFC password token from Enrollee to ER"""
     ssid = "wps-nfc-er-pw-token"
     start_ap_er(dev[0], apdev[0], ssid)
+    hapd = hostapd.Hostapd(apdev[0]['ifname'])
     logger.info("WPS provisioning step using password token from station")
     dev[1].request("SET ignore_old_scan_res 1")
     pw = dev[1].request("WPS_NFC_TOKEN NDEF").rstrip()
@@ -428,12 +429,13 @@ def test_nfc_wps_er_pw_token(dev, apdev):
     ev = dev[1].wait_event(["CTRL-EVENT-CONNECTED"], timeout=15)
     if ev is None:
         raise Exception("Association with the AP timed out")
-    check_wpa2_connection(dev[1], apdev[0], ssid)
+    check_wpa2_connection(dev[1], apdev[0], hapd, ssid)
 
 def test_nfc_wps_er_config_token(dev, apdev):
     """WPS NFC configuration token from ER to Enrollee"""
     ssid = "wps-nfc-er-config-token"
     start_ap_er(dev[0], apdev[0], ssid)
+    hapd = hostapd.Hostapd(apdev[0]['ifname'])
     logger.info("WPS provisioning step using configuration token from ER")
     conf = dev[0].request("WPS_ER_NFC_CONFIG_TOKEN NDEF " + apdev[0]['bssid']).rstrip()
     if "FAIL" in conf:
@@ -445,12 +447,13 @@ def test_nfc_wps_er_config_token(dev, apdev):
     ev = dev[1].wait_event(["CTRL-EVENT-CONNECTED"], timeout=15)
     if ev is None:
         raise Exception("Association with the AP timed out")
-    check_wpa2_connection(dev[1], apdev[0], ssid)
+    check_wpa2_connection(dev[1], apdev[0], hapd, ssid)
 
 def test_nfc_wps_er_handover(dev, apdev):
     """WPS NFC connection handover between Enrollee and ER"""
     ssid = "wps-nfc-er-handover"
     start_ap_er(dev[0], apdev[0], ssid)
+    hapd = hostapd.Hostapd(apdev[0]['ifname'])
     logger.info("WPS provisioning step using connection handover")
     req = dev[1].request("NFC_GET_HANDOVER_REQ NDEF WPS-CR").rstrip()
     if "FAIL" in req:
@@ -468,12 +471,13 @@ def test_nfc_wps_er_handover(dev, apdev):
     ev = dev[1].wait_event(["CTRL-EVENT-CONNECTED"], timeout=15)
     if ev is None:
         raise Exception("Association with the AP timed out")
-    check_wpa2_connection(dev[1], apdev[0], ssid)
+    check_wpa2_connection(dev[1], apdev[0], hapd, ssid)
 
 def test_nfc_wps_er_handover_pk_hash_mismatch_sta(dev, apdev):
     """WPS NFC connection handover with invalid pkhash from station to ER (negative)"""
     ssid = "wps-nfc-er-handover-pkhash-sta"
     start_ap_er(dev[0], apdev[0], ssid)
+    hapd = hostapd.Hostapd(apdev[0]['ifname'])
     logger.info("WPS provisioning step using connection handover")
     if "FAIL" in dev[1].request("SET wps_corrupt_pkhash 1"):
         raise Exception("Could not enable wps_corrupt_pkhash")
@@ -501,6 +505,7 @@ def test_nfc_wps_er_handover_pk_hash_mismatch_er(dev, apdev):
     """WPS NFC connection handover with invalid pkhash from ER to station (negative)"""
     ssid = "wps-nfc-er-handover-pkhash-er"
     start_ap_er(dev[0], apdev[0], ssid)
+    hapd = hostapd.Hostapd(apdev[0]['ifname'])
     logger.info("WPS provisioning step using connection handover")
     if "FAIL" in dev[0].request("SET wps_corrupt_pkhash 1"):
         raise Exception("Could not enable wps_corrupt_pkhash")

+ 29 - 25
tests/hwsim/test_p2p_channel.py

@@ -192,14 +192,14 @@ def test_autogo_following_bss(dev, apdev):
 
     channels = { 3 : "2422", 5 : "2432", 9 : "2452" }
     for key in channels:
-        hostapd.add_ap(apdev[0]['ifname'], { "ssid" : 'ap-test',
-                                             "channel" : str(key) })
+        hapd = hostapd.add_ap(apdev[0]['ifname'], { "ssid" : 'ap-test',
+                                                    "channel" : str(key) })
         dev[0].connect("ap-test", key_mgmt="NONE",
                        scan_freq=str(channels[key]))
         res_go = autogo(dev[0])
         if res_go['freq'] != channels[key]:
             raise Exception("Group operation channel is not the same as on connected station interface")
-        hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+        hwsim_utils.test_connectivity(dev[0], hapd)
         dev[0].remove_group(res_go['ifname'])
 
 def test_go_neg_with_bss_connected(dev, apdev):
@@ -207,7 +207,8 @@ def test_go_neg_with_bss_connected(dev, apdev):
 
     dev[0].request("SET p2p_no_group_iface 0")
 
-    hostapd.add_ap(apdev[0]['ifname'], { "ssid": 'bss-2.4ghz', "channel": '5' })
+    hapd = hostapd.add_ap(apdev[0]['ifname'],
+                          { "ssid": 'bss-2.4ghz', "channel": '5' })
     dev[0].connect("bss-2.4ghz", key_mgmt="NONE", scan_freq="2432")
     #dev[0] as GO
     [i_res, r_res] = go_neg_pbc(i_dev=dev[0], i_intent=10, r_dev=dev[1],
@@ -217,7 +218,7 @@ def test_go_neg_with_bss_connected(dev, apdev):
        raise Exception("GO not selected according to go_intent")
     if i_res['freq'] != "2432":
        raise Exception("Group formed on a different frequency than BSS")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
     dev[0].remove_group(i_res['ifname'])
 
     if dev[0].get_mcc() > 1:
@@ -232,7 +233,7 @@ def test_go_neg_with_bss_connected(dev, apdev):
        raise Exception("GO not selected according to go_intent")
     if i_res2['freq'] != "2432":
        raise Exception("Group formed on a different frequency than BSS")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
 
 def test_autogo_with_bss_on_disallowed_chan(dev, apdev):
     """P2P channel selection: Autonomous GO with BSS on a disallowed channel"""
@@ -243,14 +244,14 @@ def test_autogo_with_bss_on_disallowed_chan(dev, apdev):
        logger.info("Skipping test because driver does not support MCC")
        return "skip"
     try:
-        hostapd.add_ap(apdev[0]['ifname'], { "ssid": 'bss-2.4ghz',
-                                             "channel": '1' })
+        hapd = hostapd.add_ap(apdev[0]['ifname'], { "ssid": 'bss-2.4ghz',
+                                                    "channel": '1' })
         dev[0].request("P2P_SET disallow_freq 2412")
         dev[0].connect("bss-2.4ghz", key_mgmt="NONE", scan_freq="2412")
         res = autogo(dev[0])
         if res['freq'] == "2412":
            raise Exception("GO set on a disallowed channel")
-        hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+        hwsim_utils.test_connectivity(dev[0], hapd)
     finally:
         dev[0].request("P2P_SET disallow_freq ")
 
@@ -263,7 +264,8 @@ def test_go_neg_with_bss_on_disallowed_chan(dev, apdev):
        logger.info("Skipping test because driver does not support MCC")
        return "skip"
     try:
-        hostapd.add_ap(apdev[0]['ifname'], { "ssid": 'bss-2.4ghz', "channel": '1' })
+        hapd = hostapd.add_ap(apdev[0]['ifname'],
+                              { "ssid": 'bss-2.4ghz', "channel": '1' })
         dev[0].connect("bss-2.4ghz", key_mgmt="NONE", scan_freq="2412")
         dev[0].request("P2P_SET disallow_freq 2412")
 
@@ -275,7 +277,7 @@ def test_go_neg_with_bss_on_disallowed_chan(dev, apdev):
            raise Exception("GO not selected according to go_intent")
         if i_res['freq'] == "2412":
            raise Exception("Group formed on a disallowed channel")
-        hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+        hwsim_utils.test_connectivity(dev[0], hapd)
         dev[0].remove_group(i_res['ifname'])
 
         #dev[0] as client
@@ -286,7 +288,7 @@ def test_go_neg_with_bss_on_disallowed_chan(dev, apdev):
            raise Exception("GO not selected according to go_intent")
         if i_res2['freq'] == "2412":
            raise Exception("Group formed on a disallowed channel")
-        hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+        hwsim_utils.test_connectivity(dev[0], hapd)
     finally:
         dev[0].request("P2P_SET disallow_freq ")
 
@@ -298,12 +300,13 @@ def test_autogo_force_diff_channel(dev, apdev):
 
     dev[0].request("SET p2p_no_group_iface 0")
 
-    hostapd.add_ap(apdev[0]['ifname'], {"ssid" : 'ap-test', "channel" : '1'})
+    hapd = hostapd.add_ap(apdev[0]['ifname'],
+                          {"ssid" : 'ap-test', "channel" : '1'})
     dev[0].connect("ap-test", key_mgmt = "NONE", scan_freq = "2412")
     channels = { 2 : 2417, 5 : 2432, 9 : 2452 }
     for key in channels:
         res_go = autogo(dev[0], channels[key])
-        hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+        hwsim_utils.test_connectivity(dev[0], hapd)
         if int(res_go['freq']) == 2412:
             raise Exception("Group operation channel is: 2412 excepted: " + res_go['freq'])
         dev[0].remove_group(res_go['ifname'])
@@ -316,9 +319,10 @@ def test_go_neg_forced_freq_diff_than_bss_freq(dev, apdev):
 
     dev[0].request("SET p2p_no_group_iface 0")
 
-    hostapd.add_ap(apdev[0]['ifname'], { "country_code": 'US',
-                                         "ssid": 'bss-5ghz', "hw_mode": 'a',
-                                         "channel": '40' })
+    hapd = hostapd.add_ap(apdev[0]['ifname'],
+                          { "country_code": 'US',
+                            "ssid": 'bss-5ghz', "hw_mode": 'a',
+                            "channel": '40' })
     dev[0].connect("bss-5ghz", key_mgmt="NONE", scan_freq="5200")
 
     # GO and peer force the same freq, different than BSS freq,
@@ -330,7 +334,7 @@ def test_go_neg_forced_freq_diff_than_bss_freq(dev, apdev):
        raise Exception("P2P group formed on unexpected frequency: " + i_res['freq'])
     if r_res['role'] != "GO":
        raise Exception("GO not selected according to go_intent")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
     dev[0].remove_group(r_res['ifname'])
 
     # GO and peer force the same freq, different than BSS freq, dev[0] to
@@ -342,7 +346,7 @@ def test_go_neg_forced_freq_diff_than_bss_freq(dev, apdev):
        raise Exception("P2P group formed on unexpected frequency: " + i_res2['freq'])
     if r_res2['role'] != "client":
        raise Exception("GO not selected according to go_intent")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
 
 def test_go_pref_chan_bss_on_diff_chan(dev, apdev):
     """P2P channel selection: Station on different channel than GO configured pref channel"""
@@ -350,14 +354,14 @@ def test_go_pref_chan_bss_on_diff_chan(dev, apdev):
     dev[0].request("SET p2p_no_group_iface 0")
 
     try:
-        hostapd.add_ap(apdev[0]['ifname'], { "ssid": 'bss-2.4ghz',
-                                             "channel": '1' })
+        hapd = hostapd.add_ap(apdev[0]['ifname'], { "ssid": 'bss-2.4ghz',
+                                                    "channel": '1' })
         dev[0].request("SET p2p_pref_chan 81:2")
         dev[0].connect("bss-2.4ghz", key_mgmt="NONE", scan_freq="2412")
         res = autogo(dev[0])
         if res['freq'] != "2412":
            raise Exception("GO channel did not follow BSS")
-        hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+        hwsim_utils.test_connectivity(dev[0], hapd)
     finally:
         dev[0].request("SET p2p_pref_chan ")
 
@@ -370,15 +374,15 @@ def test_go_pref_chan_bss_on_disallowed_chan(dev, apdev):
     dev[0].request("SET p2p_no_group_iface 0")
 
     try:
-        hostapd.add_ap(apdev[0]['ifname'], { "ssid": 'bss-2.4ghz',
-                                             "channel": '1' })
+        hapd = hostapd.add_ap(apdev[0]['ifname'], { "ssid": 'bss-2.4ghz',
+                                                    "channel": '1' })
         dev[0].request("P2P_SET disallow_freq 2412")
         dev[0].request("SET p2p_pref_chan 81:2")
         dev[0].connect("bss-2.4ghz", key_mgmt="NONE", scan_freq="2412")
         res2 = autogo(dev[0])
         if res2['freq'] != "2417":
            raise Exception("GO channel did not follow pref_chan configuration")
-        hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+        hwsim_utils.test_connectivity(dev[0], hapd)
     finally:
         dev[0].request("P2P_SET disallow_freq ")
         dev[0].request("SET p2p_pref_chan ")

+ 18 - 18
tests/hwsim/test_p2p_concurrency.py

@@ -22,9 +22,9 @@ from test_p2p_persistent import invite
 def test_concurrent_autogo(dev, apdev):
     """Concurrent P2P autonomous GO"""
     logger.info("Connect to an infrastructure AP")
-    hostapd.add_ap(apdev[0]['ifname'], { "ssid": "test-open" })
+    hapd = hostapd.add_ap(apdev[0]['ifname'], { "ssid": "test-open" })
     dev[0].connect("test-open", key_mgmt="NONE", scan_freq="2412")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
 
     logger.info("Start a P2P group while associated to an AP")
     dev[0].request("SET p2p_no_group_iface 0")
@@ -38,14 +38,14 @@ def test_concurrent_autogo(dev, apdev):
     dev[1].wait_go_ending_session()
 
     logger.info("Confirm AP connection after P2P group removal")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
 
 def test_concurrent_p2pcli(dev, apdev):
     """Concurrent P2P client join"""
     logger.info("Connect to an infrastructure AP")
-    hostapd.add_ap(apdev[0]['ifname'], { "ssid": "test-open" })
+    hapd = hostapd.add_ap(apdev[0]['ifname'], { "ssid": "test-open" })
     dev[0].connect("test-open", key_mgmt="NONE", scan_freq="2412")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
 
     logger.info("Join a P2P group while associated to an AP")
     dev[0].request("SET p2p_no_group_iface 0")
@@ -59,14 +59,14 @@ def test_concurrent_p2pcli(dev, apdev):
     dev[0].wait_go_ending_session()
 
     logger.info("Confirm AP connection after P2P group removal")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
 
 def test_concurrent_grpform_go(dev, apdev):
     """Concurrent P2P group formation to become GO"""
     logger.info("Connect to an infrastructure AP")
-    hostapd.add_ap(apdev[0]['ifname'], { "ssid": "test-open" })
+    hapd = hostapd.add_ap(apdev[0]['ifname'], { "ssid": "test-open" })
     dev[0].connect("test-open", key_mgmt="NONE", scan_freq="2412")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
 
     logger.info("Form a P2P group while associated to an AP")
     dev[0].request("SET p2p_no_group_iface 0")
@@ -77,14 +77,14 @@ def test_concurrent_grpform_go(dev, apdev):
     remove_group(dev[0], dev[1])
 
     logger.info("Confirm AP connection after P2P group removal")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
 
 def test_concurrent_grpform_cli(dev, apdev):
     """Concurrent P2P group formation to become P2P Client"""
     logger.info("Connect to an infrastructure AP")
-    hostapd.add_ap(apdev[0]['ifname'], { "ssid": "test-open" })
+    hapd = hostapd.add_ap(apdev[0]['ifname'], { "ssid": "test-open" })
     dev[0].connect("test-open", key_mgmt="NONE", scan_freq="2412")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
 
     logger.info("Form a P2P group while associated to an AP")
     dev[0].request("SET p2p_no_group_iface 0")
@@ -95,12 +95,12 @@ def test_concurrent_grpform_cli(dev, apdev):
     remove_group(dev[0], dev[1])
 
     logger.info("Confirm AP connection after P2P group removal")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
 
 def test_concurrent_grpform_while_connecting(dev, apdev):
     """Concurrent P2P group formation while connecting to an AP"""
     logger.info("Start connection to an infrastructure AP")
-    hostapd.add_ap(apdev[0]['ifname'], { "ssid": "test-open" })
+    hapd = hostapd.add_ap(apdev[0]['ifname'], { "ssid": "test-open" })
     dev[0].connect("test-open", key_mgmt="NONE", wait_connect=False)
 
     logger.info("Form a P2P group while connecting to an AP")
@@ -112,12 +112,12 @@ def test_concurrent_grpform_while_connecting(dev, apdev):
     remove_group(dev[0], dev[1])
 
     logger.info("Confirm AP connection after P2P group removal")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
 
 def test_concurrent_grpform_while_connecting2(dev, apdev):
     """Concurrent P2P group formation while connecting to an AP (2)"""
     logger.info("Start connection to an infrastructure AP")
-    hostapd.add_ap(apdev[0]['ifname'], { "ssid": "test-open" })
+    hapd = hostapd.add_ap(apdev[0]['ifname'], { "ssid": "test-open" })
     dev[0].connect("test-open", key_mgmt="NONE", wait_connect=False)
     dev[1].request("BSS_FLUSH 0")
     dev[1].scan(freq="2412", only_new=True)
@@ -132,12 +132,12 @@ def test_concurrent_grpform_while_connecting2(dev, apdev):
 
     logger.info("Confirm AP connection after P2P group removal")
     dev[0].wait_completed()
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
 
 def test_concurrent_grpform_while_connecting3(dev, apdev):
     """Concurrent P2P group formation while connecting to an AP (3)"""
     logger.info("Start connection to an infrastructure AP")
-    hostapd.add_ap(apdev[0]['ifname'], { "ssid": "test-open" })
+    hapd = hostapd.add_ap(apdev[0]['ifname'], { "ssid": "test-open" })
     dev[0].connect("test-open", key_mgmt="NONE", wait_connect=False)
 
     logger.info("Form a P2P group while connecting to an AP")
@@ -150,7 +150,7 @@ def test_concurrent_grpform_while_connecting3(dev, apdev):
 
     logger.info("Confirm AP connection after P2P group removal")
     dev[0].wait_completed()
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
 
 def test_concurrent_persistent_group(dev, apdev):
     """Concurrent P2P persistent group"""

+ 2 - 2
tests/hwsim/test_rfkill.py

@@ -46,7 +46,7 @@ def test_rfkill_open(dev, apdev):
         ev = dev[0].wait_event(["CTRL-EVENT-CONNECTED"], timeout=10)
         if ev is None:
             raise Exception("Missing connection event on rfkill unblock")
-        hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+        hwsim_utils.test_connectivity(dev[0], hapd)
     finally:
         subprocess.call(['sudo', 'rfkill', 'unblock', id])
 
@@ -73,7 +73,7 @@ def test_rfkill_wpa2_psk(dev, apdev):
         ev = dev[0].wait_event(["CTRL-EVENT-CONNECTED"], timeout=10)
         if ev is None:
             raise Exception("Missing connection event on rfkill unblock")
-        hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+        hwsim_utils.test_connectivity(dev[0], hapd)
     finally:
         subprocess.call(['sudo', 'rfkill', 'unblock', id])
 

+ 5 - 5
tests/hwsim/test_sta_dynamic.py

@@ -90,13 +90,13 @@ def test_sta_ap_scan_2(dev, apdev):
 def test_sta_dynamic_down_up(dev, apdev):
     """Dynamically added wpa_supplicant interface down/up"""
     params = hostapd.wpa2_params(ssid="sta-dynamic", passphrase="12345678")
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
 
     logger.info("Create a dynamic wpa_supplicant interface and connect")
     wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
     wpas.interface_add("wlan5")
     wpas.connect("sta-dynamic", psk="12345678", scan_freq="2412")
-    hwsim_utils.test_connectivity(wpas.ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(wpas, hapd)
     subprocess.call(['sudo', 'ifconfig', wpas.ifname, 'down'])
     ev = wpas.wait_event(["CTRL-EVENT-DISCONNECTED"], timeout=10)
     if ev is None:
@@ -107,7 +107,7 @@ def test_sta_dynamic_down_up(dev, apdev):
     ev = wpas.wait_event(["CTRL-EVENT-CONNECTED"], timeout=15)
     if ev is None:
         raise Exception("Reconnection not reported")
-    hwsim_utils.test_connectivity(wpas.ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(wpas, hapd)
 
 def test_sta_dynamic_ext_mac_addr_change(dev, apdev):
     """Dynamically added wpa_supplicant interface with external MAC address change"""
@@ -118,7 +118,7 @@ def test_sta_dynamic_ext_mac_addr_change(dev, apdev):
     wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
     wpas.interface_add("wlan5")
     wpas.connect("sta-dynamic", psk="12345678", scan_freq="2412")
-    hwsim_utils.test_connectivity(wpas.ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(wpas, hapd)
     subprocess.call(['sudo', 'ifconfig', wpas.ifname, 'down'])
     ev = wpas.wait_event(["CTRL-EVENT-DISCONNECTED"], timeout=10)
     if ev is None:
@@ -136,7 +136,7 @@ def test_sta_dynamic_ext_mac_addr_change(dev, apdev):
             raise Exception("Reconnection not reported")
         if wpas.get_driver_status_field('addr') != new_addr:
             raise Exception("Address change not reported")
-        hwsim_utils.test_connectivity(wpas.ifname, apdev[0]['ifname'])
+        hwsim_utils.test_connectivity(wpas, hapd)
         sta = hapd.get_sta(new_addr)
         if sta['addr'] != new_addr:
             raise Exception("STA association with new address not found")

+ 9 - 9
tests/hwsim/test_wep.py

@@ -9,25 +9,25 @@ import hwsim_utils
 
 def test_wep_open_auth(dev, apdev):
     """WEP Open System authentication"""
-    hostapd.add_ap(apdev[0]['ifname'],
-                   { "ssid": "wep-open",
-                     "wep_key0": '"hello"' })
+    hapd = hostapd.add_ap(apdev[0]['ifname'],
+                          { "ssid": "wep-open",
+                            "wep_key0": '"hello"' })
     dev[0].connect("wep-open", key_mgmt="NONE", wep_key0='"hello"',
                    scan_freq="2412")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
     if "[WEP]" not in dev[0].request("SCAN_RESULTS"):
         raise Exception("WEP flag not indicated in scan results")
 
 def test_wep_shared_key_auth(dev, apdev):
     """WEP Shared Key authentication"""
-    hostapd.add_ap(apdev[0]['ifname'],
-                   { "ssid": "wep-shared-key",
-                     "wep_key0": '"hello12345678"',
-                     "auth_algs": "2" })
+    hapd = hostapd.add_ap(apdev[0]['ifname'],
+                          { "ssid": "wep-shared-key",
+                            "wep_key0": '"hello12345678"',
+                            "auth_algs": "2" })
     dev[0].connect("wep-shared-key", key_mgmt="NONE", auth_alg="SHARED",
                    wep_key0='"hello12345678"',
                    scan_freq="2412")
-    hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(dev[0], hapd)
     dev[1].connect("wep-shared-key", key_mgmt="NONE", auth_alg="OPEN SHARED",
                    wep_key0='"hello12345678"',
                    scan_freq="2412")

+ 4 - 4
tests/hwsim/test_wext.py

@@ -22,7 +22,7 @@ def REMOVED_test_wext_open(dev, apdev):
         return "skip"
 
     params = { "ssid": "wext-open" }
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
 
     wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
     try:
@@ -32,7 +32,7 @@ def REMOVED_test_wext_open(dev, apdev):
         return "skip"
 
     wpas.connect("wext-open", key_mgmt="NONE")
-    hwsim_utils.test_connectivity(wpas.ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(wpas, hapd)
 
 def test_wext_wpa2_psk(dev, apdev):
     """WEXT driver interface with WPA2-PSK"""
@@ -41,7 +41,7 @@ def test_wext_wpa2_psk(dev, apdev):
         return "skip"
 
     params = hostapd.wpa2_params(ssid="wext-wpa2-psk", passphrase="12345678")
-    hostapd.add_ap(apdev[0]['ifname'], params)
+    hapd = hostapd.add_ap(apdev[0]['ifname'], params)
 
     wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
     try:
@@ -51,4 +51,4 @@ def test_wext_wpa2_psk(dev, apdev):
         return "skip"
 
     wpas.connect("wext-wpa2-psk", psk="12345678")
-    hwsim_utils.test_connectivity(wpas.ifname, apdev[0]['ifname'])
+    hwsim_utils.test_connectivity(wpas, hapd)

+ 5 - 5
tests/hwsim/test_wpas_ap.py

@@ -28,8 +28,8 @@ def test_wpas_ap_open(dev):
 
     dev[1].connect("wpas-ap-open", key_mgmt="NONE", scan_freq="2412")
     dev[2].connect("wpas-ap-open", key_mgmt="NONE", scan_freq="2412")
-    hwsim_utils.test_connectivity(dev[0].ifname, dev[1].ifname)
-    hwsim_utils.test_connectivity(dev[1].ifname, dev[2].ifname)
+    hwsim_utils.test_connectivity(dev[0], dev[1])
+    hwsim_utils.test_connectivity(dev[1], dev[2])
 
     addr1 = dev[1].p2p_interface_addr()
     addr2 = dev[2].p2p_interface_addr()
@@ -84,7 +84,7 @@ def test_wpas_ap_wep(dev):
 
     dev[1].connect("wpas-ap-wep", key_mgmt="NONE", wep_key0='"hello"',
                    scan_freq="2412")
-    hwsim_utils.test_connectivity(dev[0].ifname, dev[1].ifname)
+    hwsim_utils.test_connectivity(dev[0], dev[1])
     dev[1].request("DISCONNECT")
 
 def test_wpas_ap_no_ssid(dev):
@@ -158,7 +158,7 @@ def test_wpas_ap_wps(dev):
     ev = dev[1].wait_event(["CTRL-EVENT-CONNECTED"], timeout=30)
     if ev is None:
         raise Exception("WPS PBC operation timed out")
-    hwsim_utils.test_connectivity(dev[0].ifname, dev[1].ifname)
+    hwsim_utils.test_connectivity(dev[0], dev[1])
 
     logger.info("Test AP PIN to learn configuration")
     pin = dev[0].request("WPS_AP_PIN random")
@@ -167,7 +167,7 @@ def test_wpas_ap_wps(dev):
     if pin not in dev[0].request("WPS_AP_PIN get"):
         raise Exception("Could not fetch current AP PIN")
     dev[2].wps_reg(bssid, pin)
-    hwsim_utils.test_connectivity(dev[1].ifname, dev[2].ifname)
+    hwsim_utils.test_connectivity(dev[1], dev[2])
 
     dev[1].request("REMOVE_NETWORK all")
     dev[2].request("REMOVE_NETWORK all")