mac80211: do not monitor the connection while scanning
authorChristian Lamparter <chunkeey@web.de>
Sun, 19 Jul 2009 20:09:32 +0000 (22:09 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Fri, 24 Jul 2009 19:05:27 +0000 (15:05 -0400)
mac80211 constantly monitors the connection to the associated AP
in order to check if it is out of reach/dead.

This is absolutely fine most of the time.
Except when there is a scheduled scan for the whole neighborhood.
After all this path could trigger while scanning on different channel.
Or even worse: this AP probing triggers a WARN_ON in rate_lowest_index
when the scan code did a band transition!
( http://www.kerneloops.org/raw.php?rawid=449304 )

Reported-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: Christian Lamparter <chunkeey@web.de>
Tested-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/mac80211/mlme.c

index e3b3156aca9e7f59f655621ca8dd87820d74a95f..523c0d994d15432c66bfd9cda81e4b33f03dd6c9 100644 (file)
@@ -2213,6 +2213,9 @@ static void ieee80211_sta_monitor_work(struct work_struct *work)
                container_of(work, struct ieee80211_sub_if_data,
                             u.mgd.monitor_work);
 
+       if (sdata->local->sw_scanning || sdata->local->hw_scanning)
+               return;
+
        ieee80211_mgd_probe_ap(sdata, false);
 }