diff mbox

[v4,28/29] tests/remote: Add TP tests for AP STA.

Message ID 1456479524-14185-29-git-send-email-janusz.dziedzic@tieto.com
State Superseded
Headers show

Commit Message

Janusz.Dziedzic@tieto.com Feb. 26, 2016, 9:38 a.m. UTC
Allow to run TP tests for STA and AP for
open/tkip/ccmp/web encryption.
This can be also run as a standalone script.

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
---
 tests/remote/test_ap_sta_tp.py | 1034 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 1034 insertions(+)
 create mode 100755 tests/remote/test_ap_sta_tp.py
diff mbox

Patch

diff --git a/tests/remote/test_ap_sta_tp.py b/tests/remote/test_ap_sta_tp.py
new file mode 100755
index 0000000..0fa5008
--- /dev/null
+++ b/tests/remote/test_ap_sta_tp.py
@@ -0,0 +1,1034 @@ 
+#!/usr/bin/env python
+#
+# TP tests for STA/AP open/tkip/ccmp/wep
+# Copyright (c) 2016, Tieto Corporation
+#
+# This software may be distributed under the terms of the BSD license.
+# See README for more details.
+"USAGE: %s --dut=<dut_name> [--ref=<ref_name>] [--test_type=<>] [--dut_type=<ap|sta>] [--channel=<>] [--bw=<>] [--country=<>] [--test_time=<>] [--parallel=<>] [--qos=<be|bk|vi|vo>] [--security=<>] [--verbose]"
+import time
+import traceback
+import config
+import os
+import sys
+import getopt
+
+import logging
+logger = logging.getLogger()
+
+scriptsdir = os.path.dirname(os.path.realpath(sys.modules[__name__].__file__))
+sys.path.append(os.path.join(scriptsdir, '..', '..', 'wpaspy'))
+sys.path.append(os.path.join(scriptsdir, '..', 'hwsim'))
+
+import utils
+import wpaspy
+from wpasupplicant import WpaSupplicant
+import hostapd
+
+def run_ap_sta(devices, setup_params, ref, dut, dut_type="ap"):
+    if dut_type == "ap":
+        ref_flags = "STA_VHT80"
+    elif dut_type == "sta":
+        ref_flags = "AP_VHT80"
+    else:
+        raise Exception("Unknown dut_type", dut_type)
+
+    ref_dev = config.get_device(devices, name=ref, flags=ref_flags)
+    if ref_dev is None:
+        raise Exception("Could not get reference device")
+
+    dut_dev = config.get_dut(devices, dut)
+    if dut_dev is None:
+        config.put_device(ref_dev)
+        raise Exception("Could not get DUT device")
+
+    logger.debug("ref_dev: " + ref_dev['name'])
+    logger.debug("dut_dev: " + dut_dev['name'])
+
+    if dut_type == "ap":
+        ap, ap_log = utils.run_hostapd(dut_dev, setup_params)
+        sta, sta_log = utils.run_wpasupplicant(ref_dev, setup_params)
+    elif dut_type == "sta":
+        ap, ap_log = utils.run_hostapd(ref_dev, setup_params)
+        sta, sta_log = utils.run_wpasupplicant(dut_dev, setup_params)
+    else:
+        raise Exception("Unknown dut_type", dut_type)
+
+    return sta, ap, sta_log, ap_log
+
+def run_tp_test(server, client, l3="ipv4", iperf="iperf", l4="tcp", test_time="10", parallel="5",
+                qos="be", bw="30M", ifname=None, port="5001"):
+    client_res = []
+    server_res = []
+
+    server_ip = utils.get_ip(server, l3)
+    time.sleep(1)
+    server_thread, client_thread = utils.iperf_run(server, client, server_ip, client_res, server_res,
+                                                   l3=l3, iperf=iperf, l4=l4, test_time=test_time,
+                                                   parallel=parallel, qos=qos, bw=bw, ifname=ifname,
+                                                   port=port)
+    utils.iperf_wait(server, client, server_thread, client_thread, iperf=iperf, timeout=int(test_time) + 10)
+
+    if client_res[0] != 0:
+        raise Exception(iperf + " client: " + client_res[1])
+    if server_res[0] != 0:
+        raise Exception(iperf + " server: " + server_res[1])
+    if client_res[1] is None:
+        raise Exception(iperf + " client result issue")
+    if server_res[1] is None:
+        raise Exception(iperf + " server result issue")
+
+    if iperf == "iperf":
+          result = server_res[1]
+    if iperf == "iperf3":
+          result = client_res[1]
+
+    speed = utils.get_iperf_speed(result)
+    return speed
+
+def get_ap_params(channel="1", bw="HT20", country="US", security="open"):
+    ssid = "test_" + channel + "_" + security + "_" + bw
+
+    if bw == "b_only":
+        params = hostapd.b_only_params(channel, ssid, country)
+    elif bw == "g_only":
+        params = hostapd.g_only_params(channel, ssid, country)
+    elif bw == "g_only_wmm":
+        params = hostapd.g_only_params(channel, ssid, country)
+        params['wmm_enabled'] = "1"
+    elif bw == "a_only":
+        params = hostapd.a_only_params(channel, ssid, country)
+    elif bw == "a_only_wmm":
+        params = hostapd.a_only_params(channel, ssid, country)
+        params['wmm_enabled'] = "1"
+    elif bw == "HT20":
+        params = hostapd.ht20_params(channel, ssid, country)
+    elif bw == "HT40+":
+        params = hostapd.ht40_plus_params(channel, ssid, country)
+    elif bw == "HT40-":
+        params = hostapd.ht40_minus_params(channel, ssid, country)
+    elif bw == "VHT80":
+        params = hostapd.ht40_plus_params(channel, ssid, country)
+        params['ieee80211ac'] = "1"
+        params['vht_oper_chwidth'] = "1"
+        params['vht_oper_centr_freq_seg0_idx'] = str(int(channel) + 6)
+    else:
+        params = {} 
+
+    # now setup security params
+    if security == "tkip":
+        sec_params = hostapd.wpa_params(passphrase="testtest")
+    elif security == "ccmp":
+        sec_params = hostapd.wpa2_params(passphrase="testtest")
+    elif security == "mixed":
+        sec_params = hostapd.wpa_mixed_params(passphrase="testtest")
+    elif security == "wep":
+        sec_params = { "wep_key0" : "123456789a",
+                       "wep_default_key" : "0",
+                       "auth_algs" : "1"}
+    elif security == "wep_shared":
+        sec_params = { "wep_key0" : "123456789a",
+                       "wep_default_key" : "0",
+                       "auth_algs" : "2" }
+    else:
+        sec_params = {}
+
+    params.update(sec_params)
+
+    return params
+
+def get_iperf_bw(bw, parallel, spacial_streams=2):
+    if bw == "b_only":
+        max_tp = 11
+    elif bw == "g_only" or bw == "g_only_wmm" or bw == "a_only" or bw == "a_only_wmm":
+        max_tp = 54
+    elif bw == "HT20":
+        max_tp = 72 * spacial_streams
+    elif bw == "HT40+" or bw == "HT40-":
+        max_tp = 150 * spacial_streams
+    elif bw == "VHT80":
+        max_tp = 433 * spacial_streams
+    else:
+        max_tp = 150
+
+    max_tp = 1.1 * max_tp
+
+    return str(int(max_tp/int(parallel))) + "M"
+
+def ap_sta_test(devices, setup_params, ref=None, dut=None, test_type="ipv4_ping",
+                channel="1", bw="HT20", country=None, test_time="10", parallel="5", qos="be",
+                security="open", dut_type="ap"):
+    try:
+        sta = None
+        ap = None
+        hapd = None
+        wpas = None
+        sta_log = None
+        ap_log = None
+
+        local_log_dir = setup_params['local_log_dir']
+
+        # setup country code
+        if country is None:
+            try:
+                country = setup_params['country']
+            except:
+                country = "00"
+
+        # run hostapd/wpa_supplicant
+        sta, ap, sta_log, ap_log = run_ap_sta(devices, setup_params, ref, dut, dut_type)
+        ap_params = get_ap_params(channel, bw, country, security)
+        iperf_bw = get_iperf_bw(bw, parallel)
+
+        # setup AP/STA
+        hapd = hostapd.add_ap(ap.ifname, ap_params, hostname = ap.host, port = ap.port)
+        freq = hapd.get_status_field("freq")
+        wpas = WpaSupplicant(hostname = sta.host, global_iface="udp", global_port = sta.port)
+        wpas.interface_add(sta.ifname)
+
+        if security == "open":
+            wpas.connect(ap_params['ssid'], key_mgmt="NONE", scan_freq=freq)
+        elif security == "wep":
+            wpas.connect(ap_params['ssid'], key_mgmt="NONE", wep_key0=ap_params['wep_key0'], wep_default_key="0", scan_freq=freq)
+        elif security == "wep_shared":
+            wpas.connect(ap_params['ssid'], key_mgmt="NONE", wep_key0=ap_params['wep_key0'], wep_default_key="0", auth_alg="SHARED", scan_freq=freq)
+        else:
+            wpas.connect(ap_params['ssid'], key_mgmt=ap_params['wpa_key_mgmt'], psk=ap_params['wpa_passphrase'], scan_req=freq)
+
+        ev = hapd.wait_event([ "AP-STA-CONNECTED" ], timeout=5)
+        if ev is None:
+            raise Exception("No connection event received from hostapd")
+
+        # setup ip network
+        ap.execute("ifconfig " + ap.ifname + " " + utils.get_ipv4_addr(setup_params, 1))
+        sta.execute("ifconfig " + sta.ifname + " " + utils.get_ipv4_addr(setup_params, 2))
+
+        # dispatch test_type
+        if test_type == "ipv4_tcp_download":
+            speed = run_tp_test(ap, sta, "ipv4", setup_params['iperf'], l4="tcp",
+                                test_time=test_time, parallel=parallel, qos=qos,
+                                bw=iperf_bw)
+            append = speed
+        elif test_type == "ipv4_tcp_upload":
+            speed = run_tp_test(sta, ap, "ipv4", setup_params['iperf'], l4="tcp",
+                                test_time=test_time, parallel=parallel, qos=qos,
+                                bw=iperf_bw)
+            append = speed
+        elif test_type == "ipv6_tcp_download":
+            speed = run_tp_test(ap, sta, "ipv6", setup_params['iperf'], l4="tcp",
+                                test_time=test_time, parallel=parallel, qos=qos,
+                                bw=iperf_bw)
+            append = speed
+        elif test_type == "ipv6_tcp_upload":
+            speed = run_tp_test(sta, ap, "ipv6", setup_params['iperf'], l4="tcp",
+                                test_time=test_time, parallel=parallel, qos=qos,
+                                bw=iperf_bw)
+            append = speed
+        elif test_type == "ipv4_udp_download":
+            speed = run_tp_test(ap, sta, "ipv4", setup_params['iperf'], l4="udp",
+                                test_time=test_time, parallel=parallel, qos=qos,
+                                bw=iperf_bw)
+            append = speed
+        elif test_type == "ipv4_udp_upload":
+            speed = run_tp_test(sta, ap, "ipv4", setup_params['iperf'], l4="udp",
+                                test_time=test_time, parallel=parallel, qos=qos,
+                                bw=iperf_bw)
+            append = speed
+        elif test_type == "ipv6_udp_download":
+            speed = run_tp_test(ap, sta, "ipv6", setup_params['iperf'], l4="udp",
+                                test_time=test_time, parallel=parallel, qos=qos,
+                                bw=iperf_bw)
+            append = speed
+        elif test_type == "ipv6_udp_upload":
+            speed = run_tp_test(sta, ap, "ipv6", setup_params['iperf'], l4="udp",
+                                test_time=test_time, parallel=parallel, qos=qos,
+                                bw=iperf_bw)
+            append = speed
+        elif test_type == "ipv4_ping":
+            ap_sta, sta_ap = utils.check_connectivity(ap, sta, "ipv4")
+            append = "packet_loss: " + ap_sta + ", " + sta_ap
+        elif test_type == "ipv6_ping":
+            ap_sta, sta_ap = utils.check_connectivity(ap, sta, "ipv6")
+            append = "packet_loss: " + ap_sta + ", " + sta_ap
+        else:
+            raise Exception("Unknown ap_open test_type:", test_type)
+
+        wpas.request("DISCONNECT")
+        ev = hapd.wait_event([ "AP-STA-DISCONNECTED" ], timeout=5)
+        if ev is None:
+            raise Exception("No disconnection event received from hostapd")
+
+        sta.execute("ifconfig " + sta.ifname + " 0.0.0.0")
+        ap.execute("ifconfig " + ap.ifname + " 0.0.0.0")
+
+        wpas.interface_remove(sta.ifname)
+        wpas.terminate()
+
+        hapd.close_ctrl()
+        hostapd.remove_bss(ap.ifname, ap.host, ap.port)
+        hostapd.terminate(ap.host, ap.port)
+
+        if sta_log:
+#            sta.local_execute("scp root@[" + sta.host + "]:" + sta_log + " " + local_log_dir)
+            sta.execute("rm " + sta_log)
+        if ap_log:
+#            ap.local_execute("scp root@[" + ap.host + "]:" + ap_log + " " + local_log_dir)
+            ap.execute("rm " + ap_log)
+
+        config.put_device(devices, ap.name)
+        config.put_device(devices, sta.name)
+
+        return 0, append
+    except:
+        logger.info(traceback.format_exc())
+        if wpas:
+            try:
+                wpas.interface_remove(sta.ifname)
+                wpas.terminate()
+            except:
+                pass
+        if hapd:
+            try:
+                hapd.close_ctrl()
+                hostapd.remove_bss(ap.ifname, ap.host, ap.port)
+                hostapd.terminate(ap.host, ap.port)
+            except:
+                pass
+        if sta:
+            sta.execute("ifconfig " + sta.ifname + " 0.0.0.0")
+            sta.execute("killall wpa_supplicant")
+            sta.execute("killall iperf")
+            if sta_log:
+                sta.local_execute("scp root@[" + sta.host + "]:" + sta_log + " " + local_log_dir)
+                sta.execute("rm " + sta_log)
+            config.put_device(devices, sta.name)
+        if ap:
+            ap.execute("ifconfig " + ap.ifname + " 0.0.0.0")
+            ap.execute("killall hostapd")
+            ap.execute("killall iperf")
+            if ap_log:
+                ap.local_execute("scp root@[" + ap.host + "]:" + ap_log + " " + local_log_dir)
+                ap.execute("rm " + ap_log)
+            config.put_device(devices, sta.name)
+        raise
+
+# basic sanity tests
+def test_sanity_ap_open_ipv4_ping(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration IPv4 ping"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_ping")
+
+def test_sanity_ap_open_ipv6_ping(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration IPv6"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_ping")
+
+def test_sanity_sta_open_ipv4_ping(devices, setup_params, ref=None, dut=None):
+    """STA with open mode (no security) configuration IPv4 ping"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_ping", dut_type="sta")
+
+def test_sanity_sta_open_ipv6_ping(devices, setup_params, ref=None, dut=None):
+    """STA with open mode (no security) configuration IPv6"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_ping", dut_type="sta")
+
+def test_sanity_ap_ccmp_ipv4_ping(devices, setup_params, ref=None, dut=None):
+    """AP with CCMP configuration IPv4 ping"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_ping", security="ccmp")
+
+def test_sanity_ap_ccmp_ipv6_ping(devices, setup_params, ref=None, dut=None):
+    """AP with CCMP configuration IPv6"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_ping", security="ccmp")
+
+def test_sanity_sta_ccmp_ipv4_ping(devices, setup_params, ref=None, dut=None):
+    """STA with CCMP configuration IPv4 ping"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_ping", dut_type="sta", security="ccmp")
+
+def test_sanity_sta_ccmp_ipv6_ping(devices, setup_params, ref=None, dut=None):
+    """STA with CCMP configuration IPv6"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_ping", dut_type="sta", security="ccmp")
+
+def test_sanity_ap_mixed_ipv4_ping(devices, setup_params, ref=None, dut=None):
+    """AP with mixed TKIP/CCMP configuration IPv4 ping"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_ping", security="mixed")
+
+def test_sanity_ap_mixed_ipv6_ping(devices, setup_params, ref=None, dut=None):
+    """AP with mixed TKIP/CCMP configuration IPv6"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_ping", security="mixed")
+
+def test_sanity_sta_mixed_ipv4_ping(devices, setup_params, ref=None, dut=None):
+    """STA with mixed TKIP/CCMP configuration IPv4 ping"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_ping", dut_type="sta", security="mixed")
+
+def test_sanity_sta_mixed_ipv6_ping(devices, setup_params, ref=None, dut=None):
+    """STA with mixed TKIP/CCMP configuration IPv6"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_ping", dut_type="sta", security="mixed")
+
+def test_sanity_ap_tkip_ipv4_ping(devices, setup_params, ref=None, dut=None):
+    """AP with TKIP configuration IPv4 ping"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_ping", security="tkip")
+
+def test_sanity_ap_tkip_ipv6_ping(devices, setup_params, ref=None, dut=None):
+    """AP with TKIP configuration IPv6"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_ping", security="tkip")
+
+def test_sanity_sta_tkip_ipv4_ping(devices, setup_params, ref=None, dut=None):
+    """STA with TKIP configuration IPv4 ping"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_ping", dut_type="sta", security="tkip")
+
+def test_sanity_sta_tkip_ipv6_ping(devices, setup_params, ref=None, dut=None):
+    """STA with TKIP configuration IPv6"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_ping", dut_type="sta", security="tkip")
+
+def test_sanity_ap_wep_ipv4_ping(devices, setup_params, ref=None, dut=None):
+    """AP with WEP configuration IPv4 ping"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_ping", security="wep")
+
+def test_sanity_ap_wep_ipv6_ping(devices, setup_params, ref=None, dut=None):
+    """AP with WEP configuration IPv6"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_ping", security="wep")
+
+def test_sanity_sta_wep_ipv4_ping(devices, setup_params, ref=None, dut=None):
+    """STA with WEP configuration IPv4 ping"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_ping", dut_type="sta", security="wep")
+
+def test_sanity_sta_wep_ipv6_ping(devices, setup_params, ref=None, dut=None):
+    """STA with WEP configuration IPv6"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_ping", dut_type="sta", security="wep")
+
+def test_sanity_ap_wep_shared_ipv4_ping(devices, setup_params, ref=None, dut=None):
+    """AP with WEP shared configuration IPv4 ping"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_ping", security="wep_shared")
+
+def test_sanity_ap_wep_shared_ipv6_ping(devices, setup_params, ref=None, dut=None):
+    """AP with WEP shared configuration IPv6"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_ping", security="wep_shared")
+
+def test_sanity_sta_wep_shared_ipv4_ping(devices, setup_params, ref=None, dut=None):
+    """STA with WEP shared configuration IPv4 ping"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_ping", dut_type="sta", security="wep_shared")
+
+def test_sanity_sta_wep_shared_ipv6_ping(devices, setup_params, ref=None, dut=None):
+    """STA with WEP shared configuration IPv6"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_ping", dut_type="sta", security="wep_shared")
+
+# B-only
+def test_ap_open_2412_b_only_ipv4_udp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2412 B-only IPv4 udp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_udp_upload", channel="1", bw="b_only")
+
+def test_ap_open_2412_b_only_ipv4_udp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2412 B-only IPv4 udp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_udp_download", channel="1", bw="b_only")
+
+def test_ap_open_2412_b_only_ipv4_tcp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2412 B-only IPv4 tcp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_tcp_upload", channel="1", bw="b_only")
+
+def test_ap_open_2412_b_only_ipv4_tcp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2412 B-only IPv4 tcp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_tcp_download", channel="1", bw="b_only")
+
+def test_ap_open_2412_b_only_ipv6_udp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2412 B-only IPv6 udp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_udp_upload", channel="1", bw="b_only")
+
+def test_ap_open_2412_b_only_ipv6_udp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2412 B-only IPv6 udp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_udp_download", channel="1", bw="b_only")
+
+def test_ap_open_2412_b_only_ipv6_tcp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2412 B-only IPv6 tcp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_tcp_upload", channel="1", bw="b_only")
+
+def test_ap_open_2412_b_only_ipv6_tcp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2412 B-only IPv6 tcp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_tcp_download", channel="1", bw="b_only")
+def test_ap_open_all_chan_b_only_ipv4_ping(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration all channels B-only IPv4 ping"""
+    try:
+        country = setup_params['country']
+    except:
+        country = "US"
+
+    chan = 1
+    append = country + " "
+    while chan < 15:
+        try:
+            status, buf = ap_sta_test(devices, setup_params, ref, dut, "ipv4_ping", channel=str(chan),
+                                  bw="b_only", country = country)
+            if status == 0:
+                append = append + str(chan) + ": OK "
+            else:
+                append = append + str(chan) + ": FAILED <" + buf + ">"
+        except:
+            append = append + str(chan) + ": FAILED "
+        chan = chan + 1
+
+    return 0, append
+
+
+# G-only
+def test_ap_open_2462_g_only_ipv4_udp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 G-only IPv4 udp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_udp_upload", channel="11", bw="g_only")
+
+def test_ap_open_2462_g_only_ipv4_udp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 G-only IPv4 udp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_udp_download", channel="11", bw="g_only")
+
+def test_ap_open_2462_g_only_ipv4_tcp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 G-only IPv4 tcp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_tcp_upload", channel="11", bw="g_only")
+
+def test_ap_open_2462_g_only_ipv4_tcp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 G-only IPv4 tcp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_tcp_download", channel="11", bw="g_only")
+
+def test_ap_open_2462_g_only_ipv6_udp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 G-only IPv6 udp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_udp_upload", channel="11", bw="g_only")
+
+def test_ap_open_2462_g_only_ipv6_udp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 G-only IPv6 udp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_udp_download", channel="11", bw="g_only")
+
+def test_ap_open_2462_g_only_ipv6_tcp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 G-only IPv6 tcp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_tcp_upload", channel="11", bw="g_only")
+
+def test_ap_open_2462_g_only_ipv6_tcp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 G-only IPv6 tcp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_tcp_download", channel="11", bw="g_only")
+
+# G-only + WMM
+def test_ap_open_2412_g_only_wmm_ipv4_udp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 G-only WMM IPv4 udp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_udp_upload", channel="1", bw="g_only_wmm")
+
+def test_ap_open_2412_g_only_wmm_ipv4_udp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 G-only WMM IPv4 udp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_udp_download", channel="1", bw="g_only_wmm")
+
+def test_ap_open_2412_g_only_wmm_ipv4_tcp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 G-only WMM IPv4 tcp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_tcp_upload", channel="1", bw="g_only_wmm")
+
+def test_ap_open_2412_g_only_wmm_ipv4_tcp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 G-only WMM IPv4 tcp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_tcp_download", channel="1", bw="g_only_wmm")
+
+def test_ap_open_2412_g_only_wmm_ipv6_udp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 G-only WMM IPv6 udp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_udp_upload", channel="1", bw="g_only_wmm")
+
+def test_ap_open_2412_g_only_wmm_ipv6_udp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 G-only WMM IPv6 udp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_udp_download", channel="1", bw="g_only_wmm")
+
+def test_ap_open_2412_g_only_wmm_ipv6_tcp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 G-only WMM IPv6 tcp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_tcp_upload", channel="1", bw="g_only_wmm")
+
+def test_ap_open_2412_g_only_wmm_ipv6_tcp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 G-only WMM IPv6 tcp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_tcp_download", channel="1", bw="g_only_wmm")
+
+
+# A-only
+def test_ap_open_5180_a_only_ipv4_udp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 A-only IPv4 udp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_udp_upload", channel="36", bw="a_only")
+
+def test_ap_open_5180_a_only_ipv4_udp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 A-only IPv4 udp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_udp_download", channel="36", bw="a_only")
+
+def test_ap_open_5180_a_only_ipv4_tcp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 A-only IPv4 tcp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_tcp_upload", channel="36", bw="a_only")
+
+def test_ap_open_5180_a_only_ipv4_tcp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 A-only IPv4 tcp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_tcp_download", channel="36", bw="a_only")
+
+def test_ap_open_5180_a_only_ipv6_udp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 A-only IPv6 udp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_udp_upload", channel="36", bw="a_only")
+
+def test_ap_open_5180_a_only_ipv6_udp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 A-only IPv6 udp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_udp_download", channel="36", bw="a_only")
+
+def test_ap_open_5180_a_only_ipv6_tcp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 A-only IPv6 tcp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_tcp_upload", channel="36", bw="a_only")
+
+def test_ap_open_5180_a_only_ipv6_tcp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 A-only IPv6 tcp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_tcp_download", channel="36", bw="a_only")
+
+
+# A-only + WMM
+def test_ap_open_5180_a_only_wmm_ipv4_udp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 A-only WMM IPv4 udp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_udp_upload", channel="36", bw="a_only_wmm")
+
+def test_ap_open_5180_a_only_wmm_ipv4_udp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 A-only WMM IPv4 udp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_udp_download", channel="36", bw="a_only_wmm")
+
+def test_ap_open_5180_a_only_wmm_ipv4_tcp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 A-only WMM IPv4 tcp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_tcp_upload", channel="36", bw="a_only_wmm")
+
+def test_ap_open_5180_a_only_wmm_ipv4_tcp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 A-only WMM IPv4 tcp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_tcp_download", channel="36", bw="a_only_wmm")
+
+def test_ap_open_5180_a_only_wmm_ipv6_udp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 A-only WMM IPv6 udp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_udp_upload", channel="36", bw="a_only_wmm")
+
+def test_ap_open_5180_a_only_wmm_ipv6_udp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 A-only WMM IPv6 udp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_udp_download", channel="36", bw="a_only_wmm")
+
+def test_ap_open_5180_a_only_wmm_ipv6_tcp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 A-only WMM IPv6 tcp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_tcp_upload", channel="36", bw="a_only_wmm")
+
+def test_ap_open_5180_a_only_wmm_ipv6_tcp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 A-only WMM IPv6 tcp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_tcp_download", channel="36", bw="a_only_wmm")
+
+
+# HT20 - 2G
+def test_ap_open_2437_HT20_ipv4_tcp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2437 HT20 IPv4 tcp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_tcp_download", channel="6", bw="HT20")
+
+def test_ap_open_2437_HT20_ipv4_tcp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2437 HT20 IPv4 tcp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_tcp_upload", channel="6", bw="HT20")
+
+def test_ap_open_2437_HT20_ipv4_udp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2437 HT20 IPv4 udp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_udp_download", channel="6", bw="HT20")
+
+def test_ap_open_2437_HT20_ipv4_udp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2437 HT20 IPv4 dup upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_udp_upload", channel="6", bw="HT20")
+
+def test_ap_open_2437_HT20_ipv6_tcp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2437 HT20 IPv6 tcp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_tcp_download", channel="6", bw="HT20")
+
+def test_ap_open_2437_HT20_ipv6_tcp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2437 HT20 IPv6 tcp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_tcp_upload", channel="6", bw="HT20")
+
+def test_ap_open_2437_HT20_ipv6_udp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2437 HT20 IPv6 udp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_udp_download", channel="6", bw="HT20")
+
+def test_ap_open_2437_HT20_ipv6_udp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2437 HT20 IPv6 dup upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_udp_upload", channel="6", bw="HT20")
+
+
+# HT40- 2G
+def test_ap_open_2462_HT40_ipv4_tcp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 HT40- IPv4 tcp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_tcp_download", channel="11", bw="HT40-")
+
+def test_ap_open_2462_HT40_ipv4_tcp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 HT40- IPv4 tcp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_tcp_upload", channel="11", bw="HT40-")
+
+def test_ap_open_2462_HT40_ipv4_udp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 HT40- IPv4 udp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_udp_download", channel="11", bw="HT40-")
+
+def test_ap_open_2462_HT40_ipv4_udp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 HT40- IPv4 udp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_udp_upload", channel="11", bw="HT40-")
+
+def test_ap_open_2462_HT40_ipv6_tcp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 HT40- IPv6 tcp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_tcp_download", channel="11", bw="HT40-")
+
+def test_ap_open_2462_HT40_ipv6_tcp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 HT40- IPv6 tcp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_tcp_upload", channel="11", bw="HT40-")
+
+def test_ap_open_2462_HT40_ipv6_udp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 HT40- IPv6 udp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_udp_download", channel="11", bw="HT40-")
+
+def test_ap_open_2462_HT40_ipv6_udp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 HT40- IPv6 udp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_udp_upload", channel="11", bw="HT40-")
+
+
+# HT40+ 2G
+def test_ap_open_2412_HT40_ipv4_tcp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2412 HT40+ IPv4 tcp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_tcp_download", channel="1", bw="HT40+")
+
+def test_ap_open_2412_HT40_ipv4_tcp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2412 HT40+ IPv4 tcp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_tcp_upload", channel="1", bw="HT40+")
+
+def test_ap_open_2412_HT40_ipv4_udp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2412 HT40+ IPv4 udp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_udp_download", channel="1", bw="HT40+")
+
+def test_ap_open_2412_HT40_ipv4_udp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2412 HT40+ IPv4 udp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_udp_upload", channel="1", bw="HT40+")
+
+def test_ap_open_2412_HT40_ipv6_tcp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2412 HT40+ IPv6 tcp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_tcp_download", channel="1", bw="HT40+")
+
+def test_ap_open_2412_HT40_ipv6_tcp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2412 HT40+ IPv6 tcp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_tcp_upload", channel="1", bw="HT40+")
+
+def test_ap_open_2412_HT40_ipv6_udp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2412 HT40+ IPv6 udp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_udp_download", channel="1", bw="HT40+")
+
+def test_ap_open_2412_HT40_ipv6_udp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2412 HT40+ IPv6 udp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_udp_upload", channel="1", bw="HT40+")
+
+
+# HT20 - 5G
+def test_ap_open_5180_HT20_ipv4_udp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 HT20 IPv4 udp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_udp_upload", channel="40", bw="HT20")
+
+def test_ap_open_5180_HT20_ipv4_udp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 HT20 IPv4 udp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_udp_upload", channel="40", bw="HT20")
+
+def test_ap_open_5180_HT20_ipv4_tcp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 HT20 IPv4 tcp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_tcp_upload", channel="40", bw="HT20")
+
+def test_ap_open_5180_HT20_ipv4_tcp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 HT20 IPv4 tcp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_tcp_upload", channel="40", bw="HT20")
+
+def test_ap_open_5180_HT20_ipv6_udp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 HT20 IPv6 udp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_udp_upload", channel="40", bw="HT20")
+
+def test_ap_open_5180_HT20_ipv6_udp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 HT20 IPv6 udp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_udp_upload", channel="40", bw="HT20")
+
+def test_ap_open_5180_HT20_ipv6_tcp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 HT20 IPv6 tcp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_tcp_upload", channel="40", bw="HT20")
+
+def test_ap_open_5180_HT20_ipv6_tcp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 HT20 IPv6 tcp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_tcp_upload", channel="40", bw="HT20")
+
+# HT40+ 5G
+def test_ap_open_5180_HT40_ipv4_udp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 HT40 IPv4 udp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_udp_upload", channel="36", bw="HT40+")
+
+def test_ap_open_5180_HT40_ipv4_udp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 HT40 IPv4 udp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_udp_upload", channel="36", bw="HT40+")
+
+def test_ap_open_5180_HT40_ipv4_tcp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 HT40 IPv4 tcp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_tcp_upload", channel="36", bw="HT40+")
+
+def test_ap_open_5180_HT40_ipv4_tcp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 HT40 IPv4 tcp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_tcp_upload", channel="36", bw="HT40+")
+
+def test_ap_open_5180_HT40_ipv6_udp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 HT40 IPv6 udp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_udp_upload", channel="36", bw="HT40+")
+
+def test_ap_open_5180_HT40_ipv6_udp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 HT40 IPv6 udp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_udp_upload", channel="36", bw="HT40+")
+
+def test_ap_open_5180_HT40_ipv6_tcp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 HT40 IPv6 tcp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_tcp_upload", channel="36", bw="HT40+")
+
+def test_ap_open_5180_HT40_ipv6_tcp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 HT40 IPv6 tcp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_tcp_upload", channel="36", bw="HT40+")
+
+# HT40+ 5G 149
+def test_ap_open_5745_HT40_ipv4_udp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5745 HT40 IPv4 udp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_udp_upload", channel="149", bw="HT40+")
+
+def test_ap_open_5745_HT40_ipv4_udp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5745 HT40 IPv4 udp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_udp_download", channel="149", bw="HT40+")
+
+def test_ap_open_5745_HT40_ipv4_tcp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5745 HT40 IPv4 tcp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_tcp_upload", channel="149", bw="HT40+")
+
+def test_ap_open_5745_HT40_ipv4_tcp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5745 HT40 IPv4 tcp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_tcp_download", channel="149", bw="HT40+")
+
+def test_ap_open_5745_HT40_ipv6_udp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5745 HT40 IPv6 udp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_udp_upload", channel="149", bw="HT40+")
+
+def test_ap_open_5745_HT40_ipv6_udp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5745 HT40 IPv6 udp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_udp_download", channel="149", bw="HT40+")
+
+def test_ap_open_5745_HT40_ipv6_tcp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5745 HT40 IPv6 tcp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_tcp_upload", channel="149", bw="HT40+")
+
+def test_ap_open_5745_HT40_ipv6_tcp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5745 HT40 IPv6 tcp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_tcp_download", channel="149", bw="HT40+")
+
+# VHT80
+def test_ap_open_5180_VHT80_ipv4_tcp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 VHT80 IPv4 tcp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_tcp_download", channel="36", bw="VHT80")
+
+def test_ap_open_5180_VHT80_ipv4_tcp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 VHT80 IPv4 tcp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_tcp_upload", channel="36", bw="VHT80")
+
+def test_ap_open_5180_VHT80_ipv4_udp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 VHT80 IPv4 udp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_udp_download", channel="36", bw="VHT80")
+
+def test_ap_open_5180_VHT80_ipv4_udp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 VHT80 IPv4 udp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_udp_upload", channel="36", bw="VHT80")
+
+def test_ap_open_5180_VHT80_ipv6_tcp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 VHT80 IPv6 tcp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_tcp_download", channel="36", bw="VHT80")
+
+def test_ap_open_5180_VHT80_ipv6_tcp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 VHT80 IPv6 tcp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_tcp_upload", channel="36", bw="VHT80")
+
+def test_ap_open_5180_VHT80_ipv6_udp_download(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 VHT80 IPv6 udp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_udp_download", channel="36", bw="VHT80")
+
+def test_ap_open_5180_VHT80_ipv6_udp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 VHT80 IPv6 udp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_udp_upload", channel="36", bw="VHT80")
+
+# 5G HT40 CCMP
+def test_ap_ccmp_5180_HT40_ipv4_udp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with CCMP configuration 5180 HT40 IPv4 udp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_udp_upload", channel="36", bw="HT40+", security="ccmp")
+
+def test_ap_ccmp_5180_HT40_ipv4_udp_download(devices, setup_params, ref=None, dut=None):
+    """AP with CCMP configuration 5180 HT40 IPv4 udp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_udp_download", channel="36", bw="HT40+", security="ccmp")
+
+def test_ap_ccmp_5180_HT40_ipv4_tcp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with CCMP configuration 5180 HT40 IPv4 tcp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_tcp_upload", channel="36", bw="HT40+", security="ccmp")
+
+def test_ap_ccmp_5180_HT40_ipv4_tcp_download(devices, setup_params, ref=None, dut=None):
+    """AP with CCMP configuration 5180 HT40 IPv4 tcp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_tcp_download", channel="36", bw="HT40+", security="ccmp")
+
+def test_ap_ccmp_5180_HT40_ipv6_udp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with CCMP configuration 5180 HT40 IPv6 udp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_udp_upload", channel="36", bw="HT40+", security="ccmp")
+
+def test_ap_ccmp_5180_HT40_ipv6_udp_download(devices, setup_params, ref=None, dut=None):
+    """AP with CCMP configuration 5180 HT40 IPv6 udp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_udp_download", channel="36", bw="HT40+", security="ccmp")
+
+def test_ap_ccmp_5180_HT40_ipv6_tcp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with CCMP configuration 5180 HT40 IPv6 tcp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_tcp_upload", channel="36", bw="HT40+", security="ccmp")
+
+def test_ap_ccmp_5180_HT40_ipv6_tcp_download(devices, setup_params, ref=None, dut=None):
+    """AP with CCMP configuration 5180 HT40 IPv6 tcp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_tcp_download", channel="36", bw="HT40+", security="ccmp")
+
+# VHT80 CCMP
+def test_ap_ccmp_5745_VHT80_ipv4_udp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with CCMP configuration 5745 VHT80 IPv4 udp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_udp_upload", channel="149", bw="VHT80", security="ccmp")
+
+def test_ap_ccmp_5745_VHT80_ipv4_udp_download(devices, setup_params, ref=None, dut=None):
+    """AP with CCMP configuration 5745 VHT80 IPv4 udp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_udp_download", channel="149", bw="VHT80", security="ccmp")
+
+def test_ap_ccmp_5745_VHT80_ipv4_tcp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with CCMP configuration 5745 VHT80 IPv4 tcp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_tcp_upload", channel="149", bw="VHT80", security="ccmp")
+
+def test_ap_ccmp_5745_VHT80_ipv4_tcp_download(devices, setup_params, ref=None, dut=None):
+    """AP with CCMP configuration 5745 VHT80 IPv4 tcp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_tcp_download", channel="149", bw="VHT80", security="ccmp")
+
+def test_ap_ccmp_5745_VHT80_ipv6_udp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with CCMP configuration 5745 VHT80 IPv6 udp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_udp_upload", channel="149", bw="VHT80", security="ccmp")
+
+def test_ap_ccmp_5745_VHT80_ipv6_udp_download(devices, setup_params, ref=None, dut=None):
+    """AP with CCMP configuration 5745 VHT80 IPv6 udp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_udp_download", channel="149", bw="VHT80", security="ccmp")
+
+def test_ap_ccmp_5745_VHT80_ipv4_tcp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with CCMP configuration 5745 VHT80 IPv6 tcp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_tcp_upload", channel="149", bw="VHT80", security="ccmp")
+
+def test_ap_ccmp_5745_VHT80_ipv6_tcp_download(devices, setup_params, ref=None, dut=None):
+    """AP with CCMP configuration 5745 VHT80 IPv6 tcp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv6_tcp_download", channel="149", bw="VHT80", security="ccmp")
+
+# 5G HT40 TKIP
+def test_ap_tkip_5745_HT40_ipv4_udp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with TKIP configuration 5745 HT40 IPv4 udp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_udp_upload", channel="149", bw="HT40+", security="tkip")
+
+def test_ap_tkip_5745_HT40_ipv4_udp_download(devices, setup_params, ref=None, dut=None):
+    """AP with TKIP configuration 5745 HT40 IPv4 udp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_udp_download", channel="149", bw="HT40+", security="tkip")
+
+
+# 2G G-only WEP open
+def test_ap_wep_2462_g_only_ipv4_udp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with WEP open configuration 2462 G-only IPv4 udp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_udp_upload", channel="11", bw="g_only", security="wep")
+
+def test_ap_wep_2462_g_only_ipv4_udp_download(devices, setup_params, ref=None, dut=None):
+    """AP with WEP open configuration 2462 G-only IPv4 udp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_udp_download", channel="11", bw="g_only", security="wep")
+
+# 2G G-only WEP shared
+def test_ap_wep_shared_2462_g_only_ipv4_udp_upload(devices, setup_params, ref=None, dut=None):
+    """AP with WEP shared configuration 2462 G-only IPv4 udp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_udp_upload", channel="11", bw="g_only", security="wep_shared")
+
+def test_ap_wep_shared_2462_g_only_ipv4_udp_download(devices, setup_params, ref=None, dut=None):
+    """AP with WEP shared configuration 2462 G-only IPv4 udp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_udp_download", channel="11", bw="g_only", security="wep_shared")
+
+# 5G STA open test
+def test_sta_open_5180_VHT80_ipv4_udp_download(devices, setup_params, ref=None, dut=None):
+    """STA with open mode (no security) configuration 5180 VHT80 IPv4 udp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_udp_download", channel="36", bw="VHT80", dut_type="sta")
+
+def test_sta_open_5180_VHT80_ipv4_udp_upload(devices, setup_params, ref=None, dut=None):
+    """STA with open mode (no security) configuration 5180 VHT80 IPv4 tcp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_udp_upload", channel="36", bw="VHT80", dut_type="sta")
+
+def test_sta_open_5180_VHT80_ipv4_tcp_download(devices, setup_params, ref=None, dut=None):
+    """STA with open mode (no security) configuration 5180 VHT80 IPv4 tcp download"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_tcp_download", channel="36", bw="VHT80", dut_type="sta")
+
+def test_sta_open_5180_VHT80_ipv4_tcp_upload(devices, setup_params, ref=None, dut=None):
+    """STA with open mode (no security) configuration 5180 VHT80 IPv4 tcp upload"""
+    return ap_sta_test(devices, setup_params, ref, dut, "ipv4_tcp_upload", channel="36", bw="VHT80", dut_type="sta")
+
+
+# This will allow to run tests directly - useful when need to run all combinations
+def main():
+    setup_params = config.get_setup_params()
+    devices = config.get_devices()
+
+    setup_params['local_log_dir'] = "/tmp/"
+
+    ref = None
+    dut = None
+    test_type = "ipv4_ping"
+    channel = "1"
+    bw = "HT20"
+    country = "PL"
+    test_time="10"
+    parallel="1"
+    qos="be"
+    security="open"
+    dut_type="sta"
+    verbose = False
+
+    # parse input parameters
+    try:
+        opts, args = getopt.getopt(sys.argv[1:], "", ["ref=", "dut=", "test_type=", "dut_type=", "channel=", "bw=", "country=", "test_time=", "parallel=", "qos=", "security=", "verbose"])
+    except getopt.GetoptError as err:
+        print(err)
+        print __doc__ %sys.argv[0]
+        sys.exit(2)
+
+    for option, argument in opts:
+        if option == "--verbose":
+            verbose = True
+        elif option == "--dut":
+            dut = argument
+        elif option ==  "--ref":
+            ref = argument
+        elif option == "--test_type":
+            test_type = argument
+        elif option == "--dut_type":
+            dut_type = argument
+        elif option == "--channel":
+            channel = argument
+        elif option == "--bw":
+            bw = argument
+        elif option == "--country":
+            country = argument
+        elif option == "--test_time":
+            test_time = argument
+        elif option == "--parallel":
+            parallel = argument
+        elif option == "--qos":
+            qos = argument
+        elif option == "--security":
+            security = argument
+        else:
+            assert False, "unhandled option"
+
+    if dut is None:
+        print __doc__ %sys.argv[0]
+        sys.exit(2)
+
+    logger.setLevel(logging.DEBUG)
+    stdout_handler = logging.StreamHandler()
+    stdout_handler.setLevel(logging.WARNING)
+    if verbose:
+        stdout_handler.setLevel(logging.DEBUG)
+    logger.addHandler(stdout_handler)
+
+    cmd = ""
+    for arg in sys.argv:
+        cmd = cmd + " " + arg
+    logger.warning("START: " + cmd)
+
+    try:
+        res, append = ap_sta_test(devices=devices, setup_params=setup_params, ref=ref, dut=dut,
+                                  test_type=test_type, channel=channel, bw=bw, country=country,
+                                  test_time=test_time, parallel=parallel, qos=qos,
+                                  security=security, dut_type=dut_type)
+        if res == 0:
+            logger.warning("PASS (" + append + ")")
+        else:
+            logger.warning("FAILED")
+    except:
+        logger.warning("FAILED")
+
+if __name__ == "__main__":
+    main()