From 53606b105c6df3c2f3a154b055ac142d5c380251 Mon Sep 17 00:00:00 2001 From: Andrei Otcheretianski Date: Thu, 2 Jul 2015 16:14:53 +0300 Subject: [PATCH] tests: Wait for scan to complete on all interfaces in reset() When WpaSupplicant executes reset() it waits until all the ongoing scans are completed. However, it checks the status of the wlanX interface only. If a dedicated P2P device interface is used, scan may be still running on the P2P Device interface, e.g., due to P2P_FIND. This might affect subsequent tests. Fix this by waiting until the scan is done both on wlanX and P2P Device interfaces. Signed-off-by: Andrei Otcheretianski Reviewed-by: Ilan Peer --- tests/hwsim/wpasupplicant.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/tests/hwsim/wpasupplicant.py b/tests/hwsim/wpasupplicant.py index 4323ff502..d097645bc 100644 --- a/tests/hwsim/wpasupplicant.py +++ b/tests/hwsim/wpasupplicant.py @@ -138,8 +138,11 @@ class WpaSupplicant: iter = 0 while iter < 60: - state = self.get_driver_status_field("scan_state") - if "SCAN_STARTED" in state or "SCAN_REQUESTED" in state: + state1 = self.get_driver_status_field("scan_state") + p2pdev = "p2p-dev-" + self.ifname + state2 = self.get_driver_status_field("scan_state", ifname=p2pdev) + states = str(state1) + " " + str(state2) + if "SCAN_STARTED" in states or "SCAN_REQUESTED" in states: logger.info(self.ifname + ": Waiting for scan operation to complete before continuing") time.sleep(1) else: @@ -354,8 +357,11 @@ class WpaSupplicant: return vals[field] return None - def get_driver_status(self): - res = self.request("STATUS-DRIVER") + def get_driver_status(self, ifname=None): + if ifname is None: + res = self.request("STATUS-DRIVER") + else: + res = self.global_request("IFNAME=%s STATUS-DRIVER" % ifname) lines = res.splitlines() vals = dict() for l in lines: @@ -367,8 +373,8 @@ class WpaSupplicant: vals[name] = value return vals - def get_driver_status_field(self, field): - vals = self.get_driver_status() + def get_driver_status_field(self, field, ifname=None): + vals = self.get_driver_status(ifname) if field in vals: return vals[field] return None