summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortb <tb@openbsd.org>2017-08-13 15:04:47 +0000
committertb <tb@openbsd.org>2017-08-13 15:04:47 +0000
commit9ae6b9a25954c58fcf64adfd307196c0f15b62a4 (patch)
tree5642b95e8fd26e445b53debfc1f2d8a1f1eece93
parentWhen iwm_stop() releases the scan lock wake processes sleeping on it. (diff)
downloadwireguard-openbsd-9ae6b9a25954c58fcf64adfd307196c0f15b62a4.tar.xz
wireguard-openbsd-9ae6b9a25954c58fcf64adfd307196c0f15b62a4.zip
When iwn_stop() releases the scan lock wake processes sleeping on it.
Fixes ifconfig scan hanging after resume if system suspended during a scan. ok stsp
-rw-r--r--sys/dev/pci/if_iwn.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/dev/pci/if_iwn.c b/sys/dev/pci/if_iwn.c
index 7cb8932b6ec..3db2dab5b7a 100644
--- a/sys/dev/pci/if_iwn.c
+++ b/sys/dev/pci/if_iwn.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_iwn.c,v 1.190 2017/06/02 11:18:16 stsp Exp $ */
+/* $OpenBSD: if_iwn.c,v 1.191 2017/08/13 15:04:47 tb Exp $ */
/*-
* Copyright (c) 2007-2010 Damien Bergamini <damien.bergamini@free.fr>
@@ -6510,6 +6510,8 @@ iwn_stop(struct ifnet *ifp, int disable)
ifq_clr_oactive(&ifp->if_snd);
/* In case we were scanning, release the scan "lock". */
+ if (ic->ic_scan_lock & IEEE80211_SCAN_REQUEST)
+ wakeup(&ic->ic_scan_lock);
ic->ic_scan_lock = IEEE80211_SCAN_UNLOCKED;
ieee80211_new_state(ic, IEEE80211_S_INIT, -1);