diff --git a/server/site_tests/network_WiFi_AttenuatedPerf/control.ht40_ch006 b/server/site_tests/network_WiFi_AttenuatedPerf/control.ht40_ch006
deleted file mode 100644
index 6001511..0000000
--- a/server/site_tests/network_WiFi_AttenuatedPerf/control.ht40_ch006
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-AUTHOR = 'wiley, pstew, quiche'
-NAME = 'network_WiFi_AttenuatedPerf.ht40_ch006'
-ATTRIBUTES = "suite:wifi_atten_perf"
-TIME = 'SHORT'
-TEST_TYPE = 'Server'
-DEPENDENCIES = 'wificell'
-
-DOC = """
-This test uses netperf to measure the maximal receiving and transmitting
-throughput on a DUT with an open HT40 802.11n network across multiple
-attenuation levels.
-"""
-
-
-from autotest_lib.server.cros.network import hostap_config
-
-
-def run(machine):
-    host = hosts.create_host(machine)
-    ap_config = hostap_config.HostapConfig(
-            channel=6,
-            n_capabilities=[hostap_config.HostapConfig.N_CAPABILITY_HT40_PLUS],
-            mode=hostap_config.HostapConfig.MODE_11N_PURE)
-    attenuation_increment = 4
-    final_attenuation = 100
-    job.run_test('network_WiFi_AttenuatedPerf',
-                 tag=NAME.split('.')[1],
-                 host=host,
-                 raw_cmdline_args=args,
-                 additional_params=(ap_config, attenuation_increment, final_attenuation))
-
-
-parallel_simple(run, machines)
diff --git a/server/site_tests/network_WiFi_AttenuatedPerf/control.ht40_ch153 b/server/site_tests/network_WiFi_AttenuatedPerf/control.ht40_ch153
deleted file mode 100644
index bd389fc..0000000
--- a/server/site_tests/network_WiFi_AttenuatedPerf/control.ht40_ch153
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-AUTHOR = 'wiley, pstew, quiche'
-NAME = 'network_WiFi_AttenuatedPerf.ht40_ch153'
-ATTRIBUTES = "suite:wifi_atten_perf"
-TIME = 'SHORT'
-TEST_TYPE = 'Server'
-DEPENDENCIES = 'wificell'
-
-DOC = """
-This test uses netperf to measure the maximal receiving and transmitting
-throughput on a DUT with an open HT40 802.11n network across multiple
-attenuation levels.
-"""
-
-
-from autotest_lib.server.cros.network import hostap_config
-
-
-def run(machine):
-    host = hosts.create_host(machine)
-    ap_config = hostap_config.HostapConfig(
-            channel=153,
-            n_capabilities=[hostap_config.HostapConfig.N_CAPABILITY_HT40_MINUS],
-            mode=hostap_config.HostapConfig.MODE_11N_PURE)
-    attenuation_increment = 4
-    final_attenuation = 100
-    job.run_test('network_WiFi_AttenuatedPerf',
-                 tag=NAME.split('.')[1],
-                 host=host,
-                 raw_cmdline_args=args,
-                 additional_params=(ap_config, attenuation_increment, final_attenuation))
-
-
-parallel_simple(run, machines)
diff --git a/server/site_tests/network_WiFi_AttenuatedPerf/control.vht40_ch060 b/server/site_tests/network_WiFi_AttenuatedPerf/control.vht40_ch060
deleted file mode 100644
index f7e3ec4..0000000
--- a/server/site_tests/network_WiFi_AttenuatedPerf/control.vht40_ch060
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-AUTHOR = 'wiley, pstew, quiche'
-NAME = 'network_WiFi_AttenuatedPerf.vht40_ch060'
-ATTRIBUTES = "suite:wifi_atten_perf"
-TIME = 'SHORT'
-TEST_TYPE = 'Server'
-DEPENDENCIES = 'wificell'
-
-DOC = """
-This test uses netperf to measure the maximal receiving and transmitting
-throughput on a DUT with an open VHT40 802.11ac network across multiple
-attenuation levels.
-"""
-
-
-from autotest_lib.server.cros.network import hostap_config
-
-
-def run(machine):
-    host = hosts.create_host(machine)
-    ap_config = hostap_config.HostapConfig(
-            channel=60,
-            mode=hostap_config.HostapConfig.MODE_11AC_PURE,
-            n_capabilities=[hostap_config.HostapConfig.N_CAPABILITY_HT40],
-            vht_channel_width=hostap_config.HostapConfig.VHT_CHANNEL_WIDTH_40)
-    attenuation_increment = 6
-    final_attenuation = 100
-    job.run_test('network_WiFi_AttenuatedPerf',
-                 tag=NAME.split('.')[1],
-                 host=host,
-                 raw_cmdline_args=args,
-                 additional_params=(ap_config, attenuation_increment, final_attenuation))
-
-
-parallel_simple(run, machines)
diff --git a/server/site_tests/network_WiFi_AttenuatedPerf/control.vht40_ch157 b/server/site_tests/network_WiFi_AttenuatedPerf/control.vht40_ch157
deleted file mode 100644
index e45afcd..0000000
--- a/server/site_tests/network_WiFi_AttenuatedPerf/control.vht40_ch157
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-AUTHOR = 'wiley, pstew, quiche'
-NAME = 'network_WiFi_AttenuatedPerf.vht40_ch157'
-ATTRIBUTES = "suite:wifi_atten_perf"
-TIME = 'SHORT'
-TEST_TYPE = 'Server'
-DEPENDENCIES = 'wificell'
-
-DOC = """
-This test uses netperf to measure the maximal receiving and transmitting
-throughput on a DUT with an open VHT40 802.11ac network across multiple
-attenuation levels.
-"""
-
-
-from autotest_lib.server.cros.network import hostap_config
-
-
-def run(machine):
-    host = hosts.create_host(machine)
-    ap_config = hostap_config.HostapConfig(
-            channel=157,
-            mode=hostap_config.HostapConfig.MODE_11AC_PURE,
-            n_capabilities=[hostap_config.HostapConfig.N_CAPABILITY_HT40],
-            vht_channel_width=hostap_config.HostapConfig.VHT_CHANNEL_WIDTH_40)
-    attenuation_increment = 6
-    final_attenuation = 100
-    job.run_test('network_WiFi_AttenuatedPerf',
-                 tag=NAME.split('.')[1],
-                 host=host,
-                 raw_cmdline_args=args,
-                 additional_params=(ap_config, attenuation_increment, final_attenuation))
-
-
-parallel_simple(run, machines)
