I've made another pass at things responding to much of the great input Johannes has given. I've removed the silly ancient locking in nl80211, redone the workqueue to go under mlme which has the advantage of not requiring an interface walk every time. I've also documented the bit rate a bit better, used a caching table (could do a completely static one if that is preferred -- 64 bytes isn't that much), and fixed a small bug with legacy rates being reported incorrectly. I also merged the mac80211 bits and cfg80211 bits so that there are only two patches, which should have them compilable (second dependent on the first). I did a test run on a constant walk around a floor of my building under the conditions: * wpa_supplicant using bgscan_learn (using only rssi to trigger roaming -- unmodified from the perspective of this new change) * ath9k using ath9k_rate_control * Youtube running constantly (plenty of TCP ack traffic). * Walked round plenty of metal building features, so RSSI varied significantly * Test lasted 360 seconds. * RSSI monitoring was triggered 21 times (again, due only to RSSI) * Scan triggered 10 times, roughly every 36 seconds on average. In total, the calculate routine was called 755 times, averaging about 2 times a second. The notifier on the other hand was called 57 times. I don't think that load is excessive, for user-space applications that elect to pull this information. I'll throttle it down if folks would like, but I have not done so yet. -- 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