diff --git a/acts/tests/google/wifi/WifiSoftApAcsTest.py b/acts/tests/google/wifi/WifiSoftApAcsTest.py
index 2c22d25..ad4403a 100755
--- a/acts/tests/google/wifi/WifiSoftApAcsTest.py
+++ b/acts/tests/google/wifi/WifiSoftApAcsTest.py
@@ -90,6 +90,7 @@
                 del self.user_params["open_network"]
         except:
             pass
+        self.access_points[0].close()
 
     def teardown_class(self):
         if hasattr(self, 'iperf_server'):
@@ -149,7 +150,7 @@
         softap_info = self.dut_client.droid.wifiGetConnectionInfo()
         self.log.debug("DUT is connected to softAP %s with details: %s" %
                        (softap[wutils.WifiEnums.SSID_KEY], softap_info))
-        frequency = softap_info['link_speed']
+        frequency = softap_info['frequency']
         return hostapd_constants.CHANNEL_MAP[frequency]
 
     def configure_ap(self, channel_2g=None, channel_5g=None):
diff --git a/acts/tests/google/wifi/WifiStressTest.py b/acts/tests/google/wifi/WifiStressTest.py
index d0bde8b..17d6c75 100755
--- a/acts/tests/google/wifi/WifiStressTest.py
+++ b/acts/tests/google/wifi/WifiStressTest.py
@@ -58,7 +58,7 @@
             req_param_names=req_params, opt_param_names=opt_param)
 
         if "AccessPoint" in self.user_params:
-            self.legacy_configure_ap_and_start()
+            self.legacy_configure_ap_and_start(ap_count=2)
 
         asserts.assert_true(
             len(self.reference_networks) > 0,
@@ -147,22 +147,22 @@
                4. Repeat 1-3.
 
         """
-        net_id = self.dut.droid.wifiAddNetwork(self.wpa_5g)
-        asserts.assert_true(net_id != -1, "Add network %r failed" % self.wpa_5g)
-        self.dut.droid.wifiEnableNetwork(net_id, 0)
         for count in range(self.stress_count):
+            net_id = self.dut.droid.wifiAddNetwork(self.wpa_5g)
+            asserts.assert_true(net_id != -1, "Add network %r failed" % self.wpa_5g)
+            self.dut.droid.wifiEnableNetwork(net_id, 0)
             self.scan_and_connect_by_id(self.wpa_5g, net_id)
             # Start IPerf traffic from phone to server.
             # Upload data for 10s.
             args = "-p {} -t {}".format(self.iperf_server.port, 10)
             self.log.info("Running iperf client {}".format(args))
             result, data = self.dut.run_iperf_client(self.iperf_server_address, args)
-            self.dut.droid.wifiDisconnect()
-            time.sleep(WAIT_BEFORE_CONNECTION)
             if not result:
                 self.log.debug("Error occurred in iPerf traffic.")
                 raise signals.TestFailure("Error occurred in iPerf traffic. Current"
                     " WiFi state = %d" % self.dut.droid.wifiCheckState())
+            wutils.wifi_forget_network(self.dut,self.wpa_5g[WifiEnums.SSID_KEY])
+            time.sleep(WAIT_BEFORE_CONNECTION)
 
     @test_tracker_info(uuid="e9827dff-0755-43ec-8b50-1f9756958460")
     def test_stress_connect_long_traffic_5g(self):
@@ -211,18 +211,21 @@
             time.sleep(WAIT_FOR_AUTO_CONNECT)
             cur_network = self.dut.droid.wifiGetConnectionInfo()
             cur_ssid = cur_network[WifiEnums.SSID_KEY]
+            self.log.debug("Cur_ssid = %s" % cur_ssid)
             for count in range(0,len(self.networks)):
                 self.log.debug("Forget network %s" % cur_ssid)
                 wutils.wifi_forget_network(self.dut, cur_ssid)
                 time.sleep(WAIT_FOR_AUTO_CONNECT)
                 cur_network = self.dut.droid.wifiGetConnectionInfo()
                 cur_ssid = cur_network[WifiEnums.SSID_KEY]
+                self.log.debug("Cur_ssid = %s" % cur_ssid)
                 if count == len(self.networks) - 1:
                     break
                 if cur_ssid not in ssids:
                     raise signals.TestFailure("Device did not failover to the "
                         "expected network. SSID = %s" % cur_ssid)
             network_config = self.dut.droid.wifiGetConfiguredNetworks()
+            self.log.debug("Network Config = %s" % network_config)
             if len(network_config):
                 raise signals.TestFailure("All the network configurations were not "
                         "removed. Configured networks = %s" % network_config)
