Hello all, I am using compat-wireless-2012-04-17 in a OpenWrt box, client mode, kernel 2.6.33. I arrange to run an active background scan every second under some load (iperf UDP 40 Mbps). I observed that the probes can be delayed due to two events flagged as IEEE80211_STA_BEACON_POLL and IEEE80211_STA_CONNECTION_POLL. They make __ieee80211_start_scan() return early in mac80211/scan.c when it is called by ieee80211_request_scan(). When one of these events occurs, the function returns and __ieee80211_start_scan() is reentered later, called this time by ieee80211_scan_work(). Now if it finds the other event flagged, it returns early but will never be called again. As a result later scan requests result in a "EBUSY" error. I made a workaround by always returning an error, but I am pretty sure this is a wrong solution. I wonder if scan_work should not be rescheduled in this case. Here is my try: ================== --- a/mac80211/scan.c 2012-05-31 18:37:41.000000000 +0200 +++ b/mac80211/scan.c 2012-05-31 18:37:48.000000000 +0200 @@ -413,10 +413,7 @@ return -EBUSY; if (!ieee80211_can_scan(local, sdata)) { - /* wait for the work to finish/time out */ - local->scan_req = req; - local->scan_sdata = sdata; - return 0; + return -EAGAIN; } if (local->ops->hw_scan) { ================== Any thoughts / suggestions ? Thanks, Jean-Pierre Tosoni -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html