]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
tests: Use helper function for starting WNM AP
authorJouni Malinen <j@w1.fi>
Sun, 14 Apr 2019 13:44:14 +0000 (16:44 +0300)
committerJouni Malinen <j@w1.fi>
Sun, 14 Apr 2019 13:57:40 +0000 (16:57 +0300)
Signed-off-by: Jouni Malinen <j@w1.fi>
tests/hwsim/test_wnm.py

index 4f2491632cb6b5860988fa00cf004a8e1c1beb15..4caf2901068c2880404f263bbd551a4d4e7f6337 100644 (file)
@@ -33,24 +33,70 @@ def clear_regdom_state(dev, hapd, hapd2):
         dev[0].wait_event(["CTRL-EVENT-REGDOM-CHANGE"], timeout=0.5)
         dev[0].flush_scan_cache()
 
+def start_wnm_ap(apdev, bss_transition=True, time_adv=False, ssid=None,
+                 wnm_sleep_mode=False, wnm_sleep_mode_no_keys=False, rsn=False,
+                 ocv=False, ap_max_inactivity=0, coloc_intf_reporting=False,
+                 hw_mode=None, channel=None, country_code=None, country3=None,
+                 pmf=True, passphrase=None, ht=True, vht=False):
+    if rsn:
+        if not ssid:
+            ssid = "test-wnm-rsn"
+        if not passphrase:
+            passphrase = "12345678"
+        params = hostapd.wpa2_params(ssid, passphrase)
+        if pmf:
+            params["wpa_key_mgmt"] = "WPA-PSK-SHA256"
+            params["ieee80211w"] = "2"
+    else:
+        params = {"ssid": "test-wnm"}
+    if bss_transition:
+        params["bss_transition"] = "1"
+    if time_adv:
+        params["time_advertisement"] = "2"
+        params["time_zone"] = "EST5"
+    if wnm_sleep_mode:
+        params["wnm_sleep_mode"] = "1"
+    if wnm_sleep_mode_no_keys:
+        params["wnm_sleep_mode_no_keys"] = "1"
+    if ocv:
+        params["ocv"] = "1"
+    if ap_max_inactivity:
+        params["ap_max_inactivity"] = str(ap_max_inactivity)
+    if coloc_intf_reporting:
+        params["coloc_intf_reporting"] = "1"
+    if hw_mode:
+        params["hw_mode"] = hw_mode
+    if channel:
+        params["channel"] = channel
+    if country_code:
+        params["country_code"] = country_code
+        params["ieee80211d"] = "1"
+    if country3:
+        params["country3"] = country3
+    if not ht:
+        params['ieee80211n'] = '0'
+    if vht:
+        params['ieee80211ac'] = "1"
+        params["vht_oper_chwidth"] = "0"
+        params["vht_oper_centr_freq_seg0_idx"] = "0"
+    hapd = hostapd.add_ap(apdev, params)
+    if rsn:
+        Wlantest.setup(hapd)
+        wt = Wlantest()
+        wt.flush()
+        wt.add_passphrase("12345678")
+    return hapd
+
 @remote_compatible
 def test_wnm_bss_transition_mgmt(dev, apdev):
     """WNM BSS Transition Management"""
-    params = {"ssid": "test-wnm",
-              "time_advertisement": "2",
-              "time_zone": "EST5",
-              "wnm_sleep_mode": "1",
-              "bss_transition": "1"}
-    hostapd.add_ap(apdev[0], params)
-
+    start_wnm_ap(apdev[0], time_adv=True, wnm_sleep_mode=True)
     dev[0].connect("test-wnm", key_mgmt="NONE", scan_freq="2412")
     dev[0].request("WNM_BSS_QUERY 0")
 
 def test_wnm_bss_transition_mgmt_oom(dev, apdev):
     """WNM BSS Transition Management OOM"""
-    params = {"ssid": "test-wnm", "bss_transition": "1"}
-    hapd = hostapd.add_ap(apdev[0], params)
-
+    hapd = start_wnm_ap(apdev[0])
     dev[0].connect("test-wnm", key_mgmt="NONE", scan_freq="2412")
     with alloc_fail(hapd, 1, "ieee802_11_send_bss_trans_mgmt_request"):
         dev[0].request("WNM_BSS_QUERY 0")
@@ -59,13 +105,7 @@ def test_wnm_bss_transition_mgmt_oom(dev, apdev):
 @remote_compatible
 def test_wnm_disassoc_imminent(dev, apdev):
     """WNM Disassociation Imminent"""
-    params = {"ssid": "test-wnm",
-              "time_advertisement": "2",
-              "time_zone": "EST5",
-              "wnm_sleep_mode": "1",
-              "bss_transition": "1"}
-    hapd = hostapd.add_ap(apdev[0], params)
-
+    hapd = start_wnm_ap(apdev[0], time_adv=True, wnm_sleep_mode=True)
     dev[0].connect("test-wnm", key_mgmt="NONE", scan_freq="2412")
     addr = dev[0].p2p_interface_addr()
     hapd.request("DISASSOC_IMMINENT " + addr + " 10")
@@ -80,9 +120,7 @@ def test_wnm_disassoc_imminent(dev, apdev):
 
 def test_wnm_disassoc_imminent_fail(dev, apdev):
     """WNM Disassociation Imminent failure"""
-    params = {"ssid": "test-wnm", "bss_transition": "1"}
-    hapd = hostapd.add_ap(apdev[0], params)
-
+    hapd = start_wnm_ap(apdev[0])
     dev[0].connect("test-wnm", key_mgmt="NONE", scan_freq="2412")
     addr = dev[0].own_addr()
     with fail_test(hapd, 1, "wnm_send_disassoc_imminent"):
@@ -92,13 +130,7 @@ def test_wnm_disassoc_imminent_fail(dev, apdev):
 @remote_compatible
 def test_wnm_ess_disassoc_imminent(dev, apdev):
     """WNM ESS Disassociation Imminent"""
-    params = {"ssid": "test-wnm",
-              "time_advertisement": "2",
-              "time_zone": "EST5",
-              "wnm_sleep_mode": "1",
-              "bss_transition": "1"}
-    hapd = hostapd.add_ap(apdev[0], params)
-
+    hapd = start_wnm_ap(apdev[0], time_adv=True, wnm_sleep_mode=True)
     dev[0].connect("test-wnm", key_mgmt="NONE", scan_freq="2412")
     addr = dev[0].p2p_interface_addr()
     hapd.request("ESS_DISASSOC " + addr + " 10 http://example.com/session-info")
@@ -113,9 +145,7 @@ def test_wnm_ess_disassoc_imminent(dev, apdev):
 
 def test_wnm_ess_disassoc_imminent_fail(dev, apdev):
     """WNM ESS Disassociation Imminent failure"""
-    params = {"ssid": "test-wnm", "bss_transition": "1"}
-    hapd = hostapd.add_ap(apdev[0], params)
-
+    hapd = start_wnm_ap(apdev[0])
     dev[0].connect("test-wnm", key_mgmt="NONE", scan_freq="2412")
     addr = dev[0].own_addr()
     if "FAIL" not in hapd.request("ESS_DISASSOC " + addr + " 10 http://" + 256*'a'):
@@ -126,10 +156,7 @@ def test_wnm_ess_disassoc_imminent_fail(dev, apdev):
 
 def test_wnm_ess_disassoc_imminent_reject(dev, apdev):
     """WNM ESS Disassociation Imminent getting rejected"""
-    params = {"ssid": "test-wnm",
-              "bss_transition": "1"}
-    hapd = hostapd.add_ap(apdev[0], params)
-
+    hapd = start_wnm_ap(apdev[0])
     dev[0].connect("test-wnm", key_mgmt="NONE", scan_freq="2412")
     addr = dev[0].own_addr()
     if "OK" not in dev[0].request("SET reject_btm_req_reason 123"):
@@ -147,12 +174,7 @@ def test_wnm_ess_disassoc_imminent_reject(dev, apdev):
 @remote_compatible
 def test_wnm_ess_disassoc_imminent_pmf(dev, apdev):
     """WNM ESS Disassociation Imminent"""
-    params = hostapd.wpa2_params("test-wnm-rsn", "12345678")
-    params["wpa_key_mgmt"] = "WPA-PSK-SHA256"
-    params["ieee80211w"] = "2"
-    params["bss_transition"] = "1"
-    hapd = hostapd.add_ap(apdev[0], params)
-
+    hapd = start_wnm_ap(apdev[0], rsn=True)
     dev[0].connect("test-wnm-rsn", psk="12345678", ieee80211w="2",
                    key_mgmt="WPA-PSK-SHA256", proto="WPA2", scan_freq="2412")
     addr = dev[0].p2p_interface_addr()
@@ -205,13 +227,7 @@ def check_wnm_sleep_mode_enter_exit(hapd, dev, interval=None, tfs_req=None):
 @remote_compatible
 def test_wnm_sleep_mode_open(dev, apdev):
     """WNM Sleep Mode - open"""
-    params = {"ssid": "test-wnm",
-              "time_advertisement": "2",
-              "time_zone": "EST5",
-              "wnm_sleep_mode": "1",
-              "bss_transition": "1"}
-    hapd = hostapd.add_ap(apdev[0], params)
-
+    hapd = start_wnm_ap(apdev[0], time_adv=True, wnm_sleep_mode=True)
     dev[0].connect("test-wnm", key_mgmt="NONE", scan_freq="2412")
     ev = hapd.wait_event(["AP-STA-CONNECTED"], timeout=5)
     if ev is None:
@@ -229,9 +245,7 @@ def test_wnm_sleep_mode_open(dev, apdev):
 
 def test_wnm_sleep_mode_open_fail(dev, apdev):
     """WNM Sleep Mode - open (fail)"""
-    params = {"ssid": "test-wnm", "wnm_sleep_mode": "1"}
-    hapd = hostapd.add_ap(apdev[0], params)
-
+    hapd = start_wnm_ap(apdev[0], wnm_sleep_mode=True)
     dev[0].connect("test-wnm", key_mgmt="NONE", scan_freq="2412")
     with fail_test(hapd, 1, "nl80211_send_frame_cmd;ieee802_11_send_wnmsleep_resp"):
         dev[0].request("WNM_SLEEP enter")
@@ -240,13 +254,8 @@ def test_wnm_sleep_mode_open_fail(dev, apdev):
 @remote_compatible
 def test_wnm_sleep_mode_rsn(dev, apdev):
     """WNM Sleep Mode - RSN"""
-    params = hostapd.wpa2_params("test-wnm-rsn", "12345678")
-    params["time_advertisement"] = "2"
-    params["time_zone"] = "EST5"
-    params["wnm_sleep_mode"] = "1"
-    params["bss_transition"] = "1"
-    hapd = hostapd.add_ap(apdev[0], params)
-
+    hapd = start_wnm_ap(apdev[0], time_adv=True, wnm_sleep_mode=True, rsn=True,
+                        pmf=False)
     dev[0].connect("test-wnm-rsn", psk="12345678", scan_freq="2412")
     ev = hapd.wait_event(["AP-STA-CONNECTED"], timeout=5)
     if ev is None:
@@ -256,10 +265,7 @@ def test_wnm_sleep_mode_rsn(dev, apdev):
 @remote_compatible
 def test_wnm_sleep_mode_ap_oom(dev, apdev):
     """WNM Sleep Mode - AP side OOM"""
-    params = {"ssid": "test-wnm",
-              "wnm_sleep_mode": "1"}
-    hapd = hostapd.add_ap(apdev[0], params)
-
+    hapd = start_wnm_ap(apdev[0], bss_transition=False, wnm_sleep_mode=True)
     dev[0].connect("test-wnm", key_mgmt="NONE", scan_freq="2412")
     ev = hapd.wait_event(["AP-STA-CONNECTED"], timeout=5)
     if ev is None:
@@ -274,20 +280,7 @@ def test_wnm_sleep_mode_ap_oom(dev, apdev):
 @remote_compatible
 def test_wnm_sleep_mode_rsn_pmf(dev, apdev):
     """WNM Sleep Mode - RSN with PMF"""
-    params = hostapd.wpa2_params("test-wnm-rsn", "12345678")
-    params["wpa_key_mgmt"] = "WPA-PSK-SHA256"
-    params["ieee80211w"] = "2"
-    params["time_advertisement"] = "2"
-    params["time_zone"] = "EST5"
-    params["wnm_sleep_mode"] = "1"
-    params["bss_transition"] = "1"
-    hapd = hostapd.add_ap(apdev[0], params)
-
-    Wlantest.setup(hapd)
-    wt = Wlantest()
-    wt.flush()
-    wt.add_passphrase("12345678")
-
+    hapd = start_wnm_ap(apdev[0], rsn=True, wnm_sleep_mode=True, time_adv=True)
     dev[0].connect("test-wnm-rsn", psk="12345678", ieee80211w="2",
                    key_mgmt="WPA-PSK-SHA256", proto="WPA2", scan_freq="2412")
     ev = hapd.wait_event(["AP-STA-CONNECTED"], timeout=5)
@@ -298,26 +291,14 @@ def test_wnm_sleep_mode_rsn_pmf(dev, apdev):
 @remote_compatible
 def test_wnm_sleep_mode_rsn_ocv(dev, apdev):
     """WNM Sleep Mode - RSN with OCV"""
-    params = hostapd.wpa2_params("test-wnm-rsn", "12345678")
-    params["wpa_key_mgmt"] = "WPA-PSK-SHA256"
-    params["ieee80211w"] = "2"
-    params["ocv"] = "1"
-    params["time_advertisement"] = "2"
-    params["time_zone"] = "EST5"
-    params["wnm_sleep_mode"] = "1"
-    params["bss_transition"] = "1"
     try:
-        hapd = hostapd.add_ap(apdev[0], params)
+            hapd = start_wnm_ap(apdev[0], rsn=True, wnm_sleep_mode=True,
+                                time_adv=True, ocv=True)
     except Exception as e:
         if "Failed to set hostapd parameter ocv" in str(e):
             raise HwsimSkip("OCV not supported")
         raise
 
-    Wlantest.setup(hapd)
-    wt = Wlantest()
-    wt.flush()
-    wt.add_passphrase("12345678")
-
     dev[0].connect("test-wnm-rsn", psk="12345678", ieee80211w="2", ocv="1",
                    key_mgmt="WPA-PSK-SHA256", proto="WPA2", scan_freq="2412")
     ev = hapd.wait_event(["AP-STA-CONNECTED"], timeout=5)
@@ -333,14 +314,9 @@ def test_wnm_sleep_mode_rsn_ocv(dev, apdev):
 @remote_compatible
 def test_wnm_sleep_mode_rsn_badocv(dev, apdev):
     """WNM Sleep Mode - RSN with OCV and bad OCI elements"""
-    ssid = "test-wnm-pmf"
-    params = hostapd.wpa2_params(ssid=ssid, passphrase="12345678")
-    params["wpa_key_mgmt"] = "WPA-PSK-SHA256"
-    params["ieee80211w"] = "2"
-    params["ocv"] = "1"
-    params['wnm_sleep_mode'] = '1'
+    ssid = "test-wnm-rsn"
     try:
-        hapd = hostapd.add_ap(apdev[0], params)
+        hapd = start_wnm_ap(apdev[0], rsn=True, wnm_sleep_mode=True, ocv=True)
     except Exception as e:
         if "Failed to set hostapd parameter ocv" in str(e):
             raise HwsimSkip("OCV not supported")
@@ -420,16 +396,9 @@ def test_wnm_sleep_mode_rsn_badocv(dev, apdev):
 
 def test_wnm_sleep_mode_rsn_ocv_failure(dev, apdev):
     """WNM Sleep Mode - RSN with OCV - local failure"""
-    params = hostapd.wpa2_params("test-wnm-rsn", "12345678")
-    params["wpa_key_mgmt"] = "WPA-PSK-SHA256"
-    params["ieee80211w"] = "2"
-    params["ocv"] = "1"
-    params["time_advertisement"] = "2"
-    params["time_zone"] = "EST5"
-    params["wnm_sleep_mode"] = "1"
-    params["bss_transition"] = "1"
     try:
-        hapd = hostapd.add_ap(apdev[0], params)
+        hapd = start_wnm_ap(apdev[0], rsn=True, wnm_sleep_mode=True,
+                            time_adv=True, ocv=True)
     except Exception as e:
         if "Failed to set hostapd parameter ocv" in str(e):
             raise HwsimSkip("OCV not supported")
@@ -445,21 +414,9 @@ def test_wnm_sleep_mode_rsn_ocv_failure(dev, apdev):
 
 def test_wnm_sleep_mode_rsn_pmf_key_workaround(dev, apdev):
     """WNM Sleep Mode - RSN with PMF and GTK/IGTK workaround"""
-    params = hostapd.wpa2_params("test-wnm-rsn", "12345678")
-    params["wpa_key_mgmt"] = "WPA-PSK-SHA256"
-    params["ieee80211w"] = "2"
-    params["time_advertisement"] = "2"
-    params["time_zone"] = "EST5"
-    params["wnm_sleep_mode"] = "1"
-    params["wnm_sleep_mode_no_keys"] = "1"
-    params["bss_transition"] = "1"
-    hapd = hostapd.add_ap(apdev[0], params)
-
-    Wlantest.setup(hapd)
-    wt = Wlantest()
-    wt.flush()
-    wt.add_passphrase("12345678")
-
+    hapd = start_wnm_ap(apdev[0], rsn=True, wnm_sleep_mode=True,
+                        wnm_sleep_mode_no_keys=True,
+                        time_adv=True, ocv=True)
     dev[0].connect("test-wnm-rsn", psk="12345678", ieee80211w="2",
                    key_mgmt="WPA-PSK-SHA256", proto="WPA2", scan_freq="2412")
     ev = hapd.wait_event(["AP-STA-CONNECTED"], timeout=5)
@@ -469,8 +426,7 @@ def test_wnm_sleep_mode_rsn_pmf_key_workaround(dev, apdev):
 
 def test_wnm_sleep_mode_proto(dev, apdev):
     """WNM Sleep Mode - protocol testing"""
-    params = {"ssid": "test-wnm", "wnm_sleep_mode": "1"}
-    hapd = hostapd.add_ap(apdev[0], params)
+    hapd = start_wnm_ap(apdev[0], wnm_sleep_mode=True, bss_transition=False)
     bssid = hapd.own_addr()
     dev[0].connect("test-wnm", key_mgmt="NONE", scan_freq="2412")
     addr = dev[0].own_addr()
@@ -579,8 +535,7 @@ def mgmt_tx(dev, msg):
 @remote_compatible
 def test_wnm_bss_tm_req(dev, apdev):
     """BSS Transition Management Request"""
-    params = {"ssid": "test-wnm", "bss_transition": "1"}
-    hapd = hostapd.add_ap(apdev[0], params)
+    hapd = start_wnm_ap(apdev[0])
     dev[0].connect("test-wnm", key_mgmt="NONE", scan_freq="2412")
     addr = dev[0].own_addr()
 
@@ -741,10 +696,7 @@ def test_wnm_bss_tm_req(dev, apdev):
 @remote_compatible
 def test_wnm_bss_keep_alive(dev, apdev):
     """WNM keep-alive"""
-    params = {"ssid": "test-wnm",
-              "ap_max_inactivity": "1"}
-    hapd = hostapd.add_ap(apdev[0], params)
-
+    hapd = start_wnm_ap(apdev[0], bss_transition=False, ap_max_inactivity=1)
     addr = dev[0].p2p_interface_addr()
     dev[0].connect("test-wnm", key_mgmt="NONE", scan_freq="2412")
     start = hapd.get_sta(addr)
@@ -776,24 +728,12 @@ def test_wnm_bss_tm(dev, apdev):
     try:
         hapd = None
         hapd2 = None
-        params = {"ssid": "test-wnm",
-                  "country_code": "FI",
-                  "ieee80211d": "1",
-                  "hw_mode": "g",
-                  "channel": "1",
-                  "bss_transition": "1"}
-        hapd = hostapd.add_ap(apdev[0], params)
-
+        hapd = start_wnm_ap(apdev[0], country_code="FI")
         id = dev[0].connect("test-wnm", key_mgmt="NONE", scan_freq="2412")
         dev[0].set_network(id, "scan_freq", "")
 
-        params = {"ssid": "test-wnm",
-                  "country_code": "FI",
-                  "ieee80211d": "1",
-                  "hw_mode": "a",
-                  "channel": "36",
-                  "bss_transition": "1"}
-        hapd2 = hostapd.add_ap(apdev[1], params)
+        hapd2 = start_wnm_ap(apdev[1], country_code="FI", hw_mode="a",
+                             channel="36")
 
         addr = dev[0].p2p_interface_addr()
         dev[0].dump_monitor()
@@ -889,11 +829,7 @@ def test_wnm_bss_tm(dev, apdev):
 
 def test_wnm_bss_tm_errors(dev, apdev):
     """WNM BSS Transition Management errors"""
-    params = {"ssid": "test-wnm",
-              "hw_mode": "g",
-              "channel": "1",
-              "bss_transition": "1"}
-    hapd = hostapd.add_ap(apdev[0], params)
+    hapd = start_wnm_ap(apdev[0])
     id = dev[0].connect("test-wnm", key_mgmt="NONE", scan_freq="2412")
     addr = dev[0].own_addr()
 
@@ -932,11 +868,7 @@ def test_wnm_bss_tm_errors(dev, apdev):
 
 def test_wnm_bss_tm_termination(dev, apdev):
     """WNM BSS Transition Management and BSS termination"""
-    params = {"ssid": "test-wnm",
-              "hw_mode": "g",
-              "channel": "1",
-              "bss_transition": "1"}
-    hapd = hostapd.add_ap(apdev[0], params)
+    hapd = start_wnm_ap(apdev[0])
     id = dev[0].connect("test-wnm", key_mgmt="NONE", scan_freq="2412")
     addr = dev[0].own_addr()
 
@@ -980,29 +912,10 @@ def run_wnm_bss_tm_scan_not_needed(dev, apdev, ht=True, vht=False, hwmode='a',
     try:
         hapd = None
         hapd2 = None
-        params = {"ssid": "test-wnm",
-                  "country_code": "FI",
-                  "ieee80211d": "1",
-                  "hw_mode": "g",
-                  "channel": "1",
-                  "bss_transition": "1"}
-        hapd = hostapd.add_ap(apdev[0], params)
-
-        params = {"ssid": "test-wnm",
-                  "country_code": "FI",
-                  "ieee80211d": "1",
-                  "hw_mode": hwmode,
-                  "channel": channel,
-                  "bss_transition": "1"}
-        if not ht:
-            params['ieee80211n'] = '0'
-        if vht:
-            params['ieee80211ac'] = "1"
-            params["vht_oper_chwidth"] = "0"
-            params["vht_oper_centr_freq_seg0_idx"] = "0"
-
-        hapd2 = hostapd.add_ap(apdev[1], params)
-
+        hapd = start_wnm_ap(apdev[0], country_code="FI", hw_mode="g",
+                            channel="1")
+        hapd2 = start_wnm_ap(apdev[1], country_code="FI", hw_mode=hwmode,
+                             channel=channel, ht=ht, vht=vht)
         dev[0].scan_for_bss(apdev[1]['bssid'], freq)
 
         id = dev[0].connect("test-wnm", key_mgmt="NONE",
@@ -1038,21 +951,10 @@ def test_wnm_bss_tm_scan_needed(dev, apdev):
     try:
         hapd = None
         hapd2 = None
-        params = {"ssid": "test-wnm",
-                  "country_code": "FI",
-                  "ieee80211d": "1",
-                  "hw_mode": "g",
-                  "channel": "1",
-                  "bss_transition": "1"}
-        hapd = hostapd.add_ap(apdev[0], params)
-
-        params = {"ssid": "test-wnm",
-                  "country_code": "FI",
-                  "ieee80211d": "1",
-                  "hw_mode": "a",
-                  "channel": "36",
-                  "bss_transition": "1"}
-        hapd2 = hostapd.add_ap(apdev[1], params)
+        hapd = start_wnm_ap(apdev[0], country_code="FI", hw_mode="g",
+                            channel="1")
+        hapd2 = start_wnm_ap(apdev[1], country_code="FI", hw_mode="a",
+                             channel="36")
 
         dev[0].scan_for_bss(apdev[1]['bssid'], 5180)
 
@@ -1091,24 +993,10 @@ def test_wnm_bss_tm_scan_needed_e4(dev, apdev):
     try:
         hapd = None
         hapd2 = None
-        params = {"ssid": "test-wnm",
-                  "country_code": "FI",
-                  "country3": "0x04",
-                  "ieee80211d": "1",
-                  "hw_mode": "g",
-                  "channel": "1",
-                  "bss_transition": "1"}
-        hapd = hostapd.add_ap(apdev[0], params)
-
-        params = {"ssid": "test-wnm",
-                  "country_code": "FI",
-                  "country3": "0x04",
-                  "ieee80211d": "1",
-                  "hw_mode": "a",
-                  "channel": "36",
-                  "bss_transition": "1"}
-        hapd2 = hostapd.add_ap(apdev[1], params)
-
+        hapd = start_wnm_ap(apdev[0], country_code="FI", country3="0x04",
+                            hw_mode="g", channel="1")
+        hapd2 = start_wnm_ap(apdev[1], country_code="FI", country3="0x04",
+                             hw_mode="a", channel="36")
         id = dev[0].connect("test-wnm", key_mgmt="NONE",
                             bssid=apdev[0]['bssid'], scan_freq="2412")
         dev[0].set_network(id, "scan_freq", "")
@@ -1139,15 +1027,7 @@ def test_wnm_bss_tm_scan_needed_e4(dev, apdev):
         clear_regdom_state(dev, hapd, hapd2)
 
 def start_wnm_tm(ap, country, dev, country3=None):
-    params = {"ssid": "test-wnm",
-              "country_code": country,
-              "ieee80211d": "1",
-              "hw_mode": "g",
-              "channel": "1",
-              "bss_transition": "1"}
-    if country3 is not None:
-        params["country3"] = country3
-    hapd = hostapd.add_ap(ap, params)
+    hapd = start_wnm_ap(ap, country_code=country, country3=country3)
     id = dev.connect("test-wnm", key_mgmt="NONE", scan_freq="2412")
     wait_regdom_changes(dev)
     dev.dump_monitor()
@@ -1298,28 +1178,19 @@ def test_wnm_bss_tm_op_class_0(dev, apdev):
 
 def test_wnm_bss_tm_rsn(dev, apdev):
     """WNM BSS Transition Management with RSN"""
+    passphrase = "zxcvbnm,.-"
     try:
         hapd = None
         hapd2 = None
-        params = hostapd.wpa2_params(ssid="test-wnm", passphrase="zxcvbnm,.-")
-        params["country_code"] = "FI"
-        params["ieee80211d"] = "1"
-        params["hw_mode"] = "g"
-        params["channel"] = "1"
-        params["bss_transition"] = "1"
-        hapd = hostapd.add_ap(apdev[0], params)
-
-        params = hostapd.wpa2_params(ssid="test-wnm", passphrase="zxcvbnm,.-")
-        params["country_code"] = "FI"
-        params["ieee80211d"] = "1"
-        params["hw_mode"] = "a"
-        params["channel"] = "36"
-        params["bss_transition"] = "1"
-        hapd2 = hostapd.add_ap(apdev[1], params)
-
+        hapd = start_wnm_ap(apdev[0], country_code="FI", hw_mode="g",
+                            channel="1",
+                            rsn=True, pmf=False, passphrase=passphrase)
+        hapd2 = start_wnm_ap(apdev[1], country_code="FI", hw_mode="a",
+                             channel="36",
+                             rsn=True, pmf=False, passphrase=passphrase)
         dev[0].scan_for_bss(apdev[1]['bssid'], 5180)
 
-        id = dev[0].connect("test-wnm", psk="zxcvbnm,.-",
+        id = dev[0].connect("test-wnm-rsn", psk=passphrase,
                             bssid=apdev[0]['bssid'], scan_freq="2412")
         dev[0].set_network(id, "scan_freq", "")
         dev[0].set_network(id, "bssid", "")
@@ -1346,9 +1217,7 @@ def test_wnm_bss_tm_rsn(dev, apdev):
 
 def test_wnm_action_proto(dev, apdev):
     """WNM Action protocol testing"""
-    params = {"ssid": "test-wnm"}
-    params['wnm_sleep_mode'] = '1'
-    hapd = hostapd.add_ap(apdev[0], params)
+    hapd = start_wnm_ap(apdev[0], bss_transition=False, wnm_sleep_mode=True)
     bssid = apdev[0]['bssid']
     dev[0].connect("test-wnm", key_mgmt="NONE", scan_freq="2412")
     dev[0].request("WNM_SLEEP enter")
@@ -1547,11 +1416,7 @@ def test_wnm_action_proto(dev, apdev):
 def test_wnm_action_proto_pmf(dev, apdev):
     """WNM Action protocol testing (PMF enabled)"""
     ssid = "test-wnm-pmf"
-    params = hostapd.wpa2_params(ssid=ssid, passphrase="12345678")
-    params["wpa_key_mgmt"] = "WPA-PSK-SHA256"
-    params["ieee80211w"] = "2"
-    params['wnm_sleep_mode'] = '1'
-    hapd = hostapd.add_ap(apdev[0], params)
+    hapd = start_wnm_ap(apdev[0], rsn=True, wnm_sleep_mode=True, ssid=ssid)
     bssid = apdev[0]['bssid']
     dev[0].connect(ssid, psk="12345678", key_mgmt="WPA-PSK-SHA256",
                    proto="WPA2", ieee80211w="2", scan_freq="2412")
@@ -1652,9 +1517,8 @@ def test_wnm_action_proto_pmf(dev, apdev):
 def test_wnm_action_proto_no_pmf(dev, apdev):
     """WNM Action protocol testing (PMF disabled)"""
     ssid = "test-wnm-no-pmf"
-    params = hostapd.wpa2_params(ssid=ssid, passphrase="12345678")
-    params['wnm_sleep_mode'] = '1'
-    hapd = hostapd.add_ap(apdev[0], params)
+    hapd = start_wnm_ap(apdev[0], rsn=True, pmf=False, bss_transition=False,
+                        wnm_sleep_mode=True, ssid=ssid)
     bssid = apdev[0]['bssid']
     dev[0].connect(ssid, psk="12345678", key_mgmt="WPA-PSK",
                    proto="WPA2", ieee80211w="0", scan_freq="2412")
@@ -1698,9 +1562,7 @@ def test_wnm_action_proto_no_pmf(dev, apdev):
 def test_wnm_bss_tm_req_with_mbo_ie(dev, apdev):
     """WNM BSS transition request with MBO IE and reassociation delay attribute"""
     ssid = "test-wnm-mbo"
-    params = hostapd.wpa2_params(ssid=ssid, passphrase="12345678")
-    params['bss_transition'] = "1"
-    hapd = hostapd.add_ap(apdev[0], params)
+    hapd = start_wnm_ap(apdev[0], rsn=True, pmf=False, ssid=ssid)
     bssid = apdev[0]['bssid']
     if "OK" not in dev[0].request("SET mbo_cell_capa 1"):
         raise Exception("Failed to set STA as cellular data capable")
@@ -1760,9 +1622,7 @@ def test_wnm_bss_tm_req_with_mbo_ie(dev, apdev):
 @remote_compatible
 def test_wnm_bss_transition_mgmt_query(dev, apdev):
     """WNM BSS Transition Management query"""
-    params = {"ssid": "test-wnm",
-              "bss_transition": "1"}
-    hapd = hostapd.add_ap(apdev[0], params)
+    hapd = start_wnm_ap(apdev[0])
     params = {"ssid": "another"}
     hapd2 = hostapd.add_ap(apdev[1], params)
 
@@ -1784,22 +1644,9 @@ def test_wnm_bss_transition_mgmt_query(dev, apdev):
 @remote_compatible
 def test_wnm_bss_tm_security_mismatch(dev, apdev):
     """WNM BSS Transition Management and security mismatch"""
-    params = {"ssid": "test-wnm",
-              "wpa": "2",
-              "wpa_key_mgmt": "WPA-PSK",
-              "rsn_pairwise": "CCMP",
-              "wpa_passphrase": "12345678",
-              "hw_mode": "g",
-              "channel": "1",
-              "bss_transition": "1"}
-    hapd = hostapd.add_ap(apdev[0], params)
-
-    params = {"ssid": "test-wnm",
-              "hw_mode": "g",
-              "channel": "11",
-              "bss_transition": "1"}
-    hapd2 = hostapd.add_ap(apdev[1], params)
-
+    hapd = start_wnm_ap(apdev[0], hw_mode="g", channel="1", ssid="test-wnm",
+                        rsn=True, pmf=False)
+    hapd2 = start_wnm_ap(apdev[1], hw_mode="g", channel="11")
     dev[0].scan_for_bss(apdev[1]['bssid'], 2462)
 
     id = dev[0].connect("test-wnm", psk="12345678",
@@ -1821,17 +1668,8 @@ def test_wnm_bss_tm_security_mismatch(dev, apdev):
 
 def test_wnm_bss_tm_connect_cmd(dev, apdev):
     """WNM BSS Transition Management and cfg80211 connect command"""
-    params = {"ssid": "test-wnm",
-              "hw_mode": "g",
-              "channel": "1",
-              "bss_transition": "1"}
-    hapd = hostapd.add_ap(apdev[0], params)
-
-    params = {"ssid": "test-wnm",
-              "hw_mode": "g",
-              "channel": "11",
-              "bss_transition": "1"}
-    hapd2 = hostapd.add_ap(apdev[1], params)
+    hapd = start_wnm_ap(apdev[0], hw_mode="g", channel="1")
+    hapd2 = start_wnm_ap(apdev[1], hw_mode="g", channel="11")
 
     wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
     wpas.interface_add("wlan5", drv_params="force_connect_cmd=1")
@@ -1869,14 +1707,8 @@ def test_wnm_bss_tm_reject(dev, apdev):
     """WNM BSS Transition Management request getting rejected"""
     try:
         hapd = None
-        params = {"ssid": "test-wnm",
-                  "country_code": "FI",
-                  "ieee80211d": "1",
-                  "hw_mode": "g",
-                  "channel": "1",
-                  "bss_transition": "1"}
-        hapd = hostapd.add_ap(apdev[0], params)
-
+        hapd = start_wnm_ap(apdev[0], country_code="FI", hw_mode="g",
+                            channel="1")
         id = dev[0].connect("test-wnm", key_mgmt="NONE", scan_freq="2412")
         addr = dev[0].own_addr()
         dev[0].dump_monitor()
@@ -1905,8 +1737,7 @@ def test_wnm_bss_tm_reject(dev, apdev):
 
 def test_wnm_bss_tm_ap_proto(dev, apdev):
     """WNM BSS TM - protocol testing for AP message parsing"""
-    params = {"ssid": "test-wnm", "bss_transition": "1"}
-    hapd = hostapd.add_ap(apdev[0], params)
+    hapd = start_wnm_ap(apdev[0])
     bssid = hapd.own_addr()
     dev[0].connect("test-wnm", key_mgmt="NONE", scan_freq="2412")
     addr = dev[0].own_addr()
@@ -1936,10 +1767,7 @@ def test_wnm_bss_tm_ap_proto(dev, apdev):
 
 def test_wnm_bss_transition_mgmt_query_with_unknown_candidates(dev, apdev):
     """WNM BSS Transition Management query with unknown candidates"""
-    params = {"ssid": "test-wnm",
-              "bss_transition": "1"}
-    hapd = hostapd.add_ap(apdev[0], params)
-
+    hapd = start_wnm_ap(apdev[0])
     dev[0].scan_for_bss(apdev[0]['bssid'], 2412)
 
     dev[0].connect("test-wnm", key_mgmt="NONE", scan_freq="2412")
@@ -1964,9 +1792,8 @@ def test_wnm_time_adv_without_time_zone(dev, apdev):
 
 def test_wnm_coloc_intf_reporting(dev, apdev):
     """WNM Collocated Interference Reporting"""
-    params = {"ssid": "test-wnm",
-              "coloc_intf_reporting": "1"}
-    hapd = hostapd.add_ap(apdev[0], params)
+    hapd = start_wnm_ap(apdev[0], bss_transition=False,
+                        coloc_intf_reporting=True)
 
     no_intf = struct.pack("<BBBBBLLLLH", 96, 21, 0, 127, 0x0f, 0, 0, 0, 0, 0)