mac80211: internally clear failed scans properly
When the IBSS code wants to scan, but that fails, we can get stuck in a situation where you can never scan again. Fix this by properly notifying ourselves when the scan request has failed. Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
committed by
John W. Linville
parent
9ccebe6148
commit
2d72289095
@@ -439,7 +439,8 @@ static void ieee80211_sta_merge_ibss(struct ieee80211_sub_if_data *sdata)
|
|||||||
memcpy(sdata->local->int_scan_req.ssids[0].ssid,
|
memcpy(sdata->local->int_scan_req.ssids[0].ssid,
|
||||||
ifibss->ssid, IEEE80211_MAX_SSID_LEN);
|
ifibss->ssid, IEEE80211_MAX_SSID_LEN);
|
||||||
sdata->local->int_scan_req.ssids[0].ssid_len = ifibss->ssid_len;
|
sdata->local->int_scan_req.ssids[0].ssid_len = ifibss->ssid_len;
|
||||||
ieee80211_request_scan(sdata, &sdata->local->int_scan_req);
|
if (ieee80211_request_scan(sdata, &sdata->local->int_scan_req))
|
||||||
|
ieee80211_scan_failed(sdata->local);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ieee80211_sta_create_ibss(struct ieee80211_sub_if_data *sdata)
|
static void ieee80211_sta_create_ibss(struct ieee80211_sub_if_data *sdata)
|
||||||
@@ -560,7 +561,8 @@ static void ieee80211_sta_find_ibss(struct ieee80211_sub_if_data *sdata)
|
|||||||
ifibss->ssid, IEEE80211_MAX_SSID_LEN);
|
ifibss->ssid, IEEE80211_MAX_SSID_LEN);
|
||||||
local->int_scan_req.ssids[0].ssid_len =
|
local->int_scan_req.ssids[0].ssid_len =
|
||||||
ifibss->ssid_len;
|
ifibss->ssid_len;
|
||||||
ieee80211_request_scan(sdata, &local->int_scan_req);
|
if (ieee80211_request_scan(sdata, &local->int_scan_req))
|
||||||
|
ieee80211_scan_failed(local);
|
||||||
} else if (ifibss->state != IEEE80211_IBSS_MLME_JOINED) {
|
} else if (ifibss->state != IEEE80211_IBSS_MLME_JOINED) {
|
||||||
int interval = IEEE80211_SCAN_INTERVAL;
|
int interval = IEEE80211_SCAN_INTERVAL;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user