mirror of
https://github.com/freebsd/freebsd-src
synced 2024-10-15 04:43:53 +00:00
net80211: introduce two extra ieee80211_notify_scan_done()
We have multiple problems with scanning currently, one being that an initial scan restarts itself and we are unable to start another scan. wpa_supplicant in that case never shows scan results. Starting wpa_cli you may see: <3>CTRL-EVENT-SCAN-FAILED ret=-1 retry=1 messages. Add two extra calls to ieee80211_notify_scan_done() at the end of scans (before possible restarts). That will get wpa_supplicant to get scan results and possibly start associating to a BSSID and get us out of scan. This is kind-of a bandaid but on short notice may help to improve the situation for some. Based on analysis by: enweiwu Submitted by: enweiwu (initial version) Sponsored by: The FreeBSD Foundation MFC after: 3 days Tested by: cy, (others I cannot find email/PR for anymore) Reviewed by: cy Differential Revision: https://reviews.freebsd.org/D38661
This commit is contained in:
parent
af6aaa9005
commit
3f382eb23b
|
@ -388,9 +388,10 @@ ieee80211_swscan_bg_scan(const struct ieee80211_scanner *scan,
|
||||||
* scan_start method to populate it.
|
* scan_start method to populate it.
|
||||||
*/
|
*/
|
||||||
ss->ss_next = 0;
|
ss->ss_next = 0;
|
||||||
if (ss->ss_last != 0)
|
if (ss->ss_last != 0) {
|
||||||
|
ieee80211_notify_scan_done(vap);
|
||||||
ss->ss_ops->scan_restart(ss, vap);
|
ss->ss_ops->scan_restart(ss, vap);
|
||||||
else {
|
} else {
|
||||||
ss->ss_ops->scan_start(ss, vap);
|
ss->ss_ops->scan_start(ss, vap);
|
||||||
#ifdef IEEE80211_DEBUG
|
#ifdef IEEE80211_DEBUG
|
||||||
if (ieee80211_msg_scan(vap))
|
if (ieee80211_msg_scan(vap))
|
||||||
|
@ -857,6 +858,7 @@ scan_end(struct ieee80211_scan_state *ss, int scandone)
|
||||||
else
|
else
|
||||||
vap->iv_stats.is_scan_passive++;
|
vap->iv_stats.is_scan_passive++;
|
||||||
|
|
||||||
|
ieee80211_notify_scan_done(vap);
|
||||||
ss->ss_ops->scan_restart(ss, vap); /* XXX? */
|
ss->ss_ops->scan_restart(ss, vap); /* XXX? */
|
||||||
ieee80211_runtask(ic, &ss_priv->ss_scan_start);
|
ieee80211_runtask(ic, &ss_priv->ss_scan_start);
|
||||||
IEEE80211_UNLOCK(ic);
|
IEEE80211_UNLOCK(ic);
|
||||||
|
|
Loading…
Reference in a new issue