Browse Source

nl80211: do not block when driver aborts scan

Drivers may abort a scan by calling cfg80211_scan_done() with a struct
cfg80211_scan_info that sets aborted to true.

To avoid blocking forever consider both NL80211_CMD_NEW_SCAN_RESULTS
and NL80211_CMD_SCAN_ABORTED when waiting for scan results.

Tested with Broadcom's bcmdhd driver.

Signed-off-by: Olof Sivertsson <olof.sivertsson@zenterio.com>
[rebased on top of variadic nl80211_wait()]
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Olof Sivertsson 6 years ago
parent
commit
fb749bf51a
1 changed files with 2 additions and 1 deletions
  1. 2 1
      iwinfo_nl80211.c

+ 2 - 1
iwinfo_nl80211.c

@@ -2103,7 +2103,8 @@ static int nl80211_get_scanlist_nl(const char *ifname, char *buf, int *len)
 	if (nl80211_request(ifname, NL80211_CMD_TRIGGER_SCAN, 0, NULL, NULL))
 		goto out;
 
-	if (nl80211_wait("nl80211", "scan", NL80211_CMD_NEW_SCAN_RESULTS))
+	if (nl80211_wait("nl80211", "scan",
+	                 NL80211_CMD_NEW_SCAN_RESULTS, NL80211_CMD_SCAN_ABORTED))
 		goto out;
 
 	if (nl80211_request(ifname, NL80211_CMD_GET_SCAN, NLM_F_DUMP,