mac80211: upgrade to a new unofficial snapshot based on wireless-testing+wireless-2.6
[openwrt-10.03/.git] / package / mac80211 / patches / 530-mac80211_work_fix.patch
diff --git a/package/mac80211/patches/530-mac80211_work_fix.patch b/package/mac80211/patches/530-mac80211_work_fix.patch
new file mode 100644 (file)
index 0000000..339a52d
--- /dev/null
@@ -0,0 +1,30 @@
+--- a/net/mac80211/scan.c
++++ b/net/mac80211/scan.c
+@@ -284,6 +284,7 @@ void ieee80211_scan_completed(struct iee
+       ieee80211_mlme_notify_scan_completed(local);
+       ieee80211_ibss_notify_scan_completed(local);
+       ieee80211_mesh_notify_scan_completed(local);
++      ieee80211_queue_work(&local->hw, &local->work_work);
+ }
+ EXPORT_SYMBOL(ieee80211_scan_completed);
+--- a/net/mac80211/work.c
++++ b/net/mac80211/work.c
+@@ -818,6 +818,7 @@ static void ieee80211_work_work(struct w
+                   wk->chan == local->tmp_channel &&
+                   wk->chan_type == local->tmp_channel_type) {
+                       wk->started = true;
++                      wk->timeout = jiffies;
+               }
+               if (!wk->started && !local->tmp_channel) {
+@@ -935,6 +936,9 @@ void ieee80211_add_work(struct ieee80211
+       if (WARN_ON(!wk->done))
+               return;
++      if (WARN_ON(!ieee80211_sdata_running(wk->sdata)))
++              return;
++
+       wk->started = false;
+       local = wk->sdata->local;