• Emmanuel Grumbach's avatar
    iwlwifi: mvm: fix the recovery flow while connecting · 6b28f978
    Emmanuel Grumbach authored
    In BSS mode in the disconnection flow, mac80211 removes
    the AP station before the vif is set to unassociated.
    Our firmware wants it the other way around: first set
    the vif as unassociated, and then remove the AP station.
    
    In order to bridge between those two different behaviors,
    iwlmvm doesn't remove the station from the firmware when
    mac80211 removes it, but only after the vif is set to
    unassociated. The implementation is in
    iwl_mvm_bss_info_changed_station:
    
    if (assoc state was modified && mvmvif->ap_sta_id is VALID
        && assoc state is now UNASSC)
    	remove_the_station_from_the_firmware()
    
    During the recovery flow, mac80211 re-adds the AP station
    and then reconfigures the vif. Since the vif is not
    associated, and then, we enter the if above (which was
    intended to be taken in the disconnection flow only) and
    remove the station we just added. This defeats the
    recovery flow.
    
    Fix this by not removing the AP station in this flow if
    we are in recovery flow.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarEmmanuel Grumbach <emmanuel.grumbach@intel.com>
    Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
    6b28f978
mac80211.c 121 KB