Răsfoiți Sursa

mac80211: dont set REQ_RUN when scan finishes

The timer restart is done wrongly, we shouldn't set the REQ_RUN
bit when the scan has finished if it hadn't been set before the
scan started. If the timer fires during the scan, it will set
REQ_RUN and then we can run the work for it, if it didn't fire
then we shouldn't run its work either.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Johannes Berg 16 ani în urmă
părinte
comite
7c95069522
1 a modificat fișierele cu 2 adăugiri și 1 ștergeri
  1. 2 1
      net/mac80211/mlme.c

+ 2 - 1
net/mac80211/mlme.c

@@ -2598,7 +2598,8 @@ static void ieee80211_restart_sta_timer(struct ieee80211_sub_if_data *sdata)
 {
 {
 	if (sdata->vif.type == IEEE80211_IF_TYPE_STA ||
 	if (sdata->vif.type == IEEE80211_IF_TYPE_STA ||
 	    ieee80211_vif_is_mesh(&sdata->vif))
 	    ieee80211_vif_is_mesh(&sdata->vif))
-		ieee80211_sta_timer((unsigned long)sdata);
+		queue_work(sdata->local->hw.workqueue,
+			   &sdata->u.sta.work);
 }
 }
 
 
 void ieee80211_mlme_notify_scan_completed(struct ieee80211_local *local)
 void ieee80211_mlme_notify_scan_completed(struct ieee80211_local *local)