• Ohad Ben-Cohen's avatar
    wl12xx: fix roaming · c5745187
    Ohad Ben-Cohen authored
    The wl12xx device normally drops all frames coming from BSSID
    it is not joined with.
    
    This behavior is configured today by the wl12xx driver in response
    to a handful of ieee80211_bss_change and ieee80211_conf_changed
    notification flags, such as BSS_CHANGED_ASSOC, BSS_CHANGED_BSSID,
    IEEE80211_CONF_CHANGE_IDLE, etc..
    
    This breaks when we roam to a new BSSID, where authentication frames
    are sent before any BSS_CHANGED/CONF_CHANGED flags are received.
    When this happens the hardware silently drops the authentication
    responses, and the roaming fails.
    
    Ideally this aggressive filtering behavior of the device should be disabled
    upon a notification from mac80211. Such notification will take place
    after multi-channel support will be added: mac80211 will likely send a
    remain-on-channel notification to drivers when entering sensitive
    states (like authentication), otherwise the firmware might jump to
    different channels (to serve a different role).
    
    Until those notifications materialize, disable the hw BSSID filter
    when authentication requests are sent, so roaming would work.
    Signed-off-by: default avatarOhad Ben-Cohen <ohad@wizery.com>
    Reviewed-by: default avatarLuciano Coelho <coelho@ti.com>
    Signed-off-by: default avatarLuciano Coelho <coelho@ti.com>
    c5745187
io.h 5.11 KB