• Johannes Berg's avatar
    mac80211: lock rate control · 35c347ac
    Johannes Berg authored
    Both minstrel (reported by Sven Eckelmann) and the iwlwifi rate
    control aren't properly taking concurrency into account. It's
    likely that the same is true for other rate control algorithms.
    
    In the case of minstrel this manifests itself in crashes when an
    update and other data access are run concurrently, for example
    when the stations change bandwidth or similar. In iwlwifi, this
    can cause firmware crashes.
    
    Since fixing all rate control algorithms will be very difficult,
    just provide locking for invocations. This protects the internal
    data structures the algorithms maintain.
    
    I've manipulated hostapd to test this, by having it change its
    advertised bandwidth roughly ever 150ms. At the same time, I'm
    running a flood ping between the client and the AP, which causes
    this race of update vs. get_rate/status to easily happen on the
    client. With this change, the system survives this test.
    Reported-by: default avatarSven Eckelmann <sven@open-mesh.com>
    Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
    35c347ac
rate.c 19.2 KB