wifi: iwlwifi: mvm: fix the TLC command after ADD_STA
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Mon, 29 Jan 2024 19:21:59 +0000 (21:21 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 2 Feb 2024 13:04:43 +0000 (14:04 +0100)
ADD_STA resets the link quality data inside the firmware. This is not
supposed to happen and has been fixed for newer devices. For older
devices (AX201 and down), this makes us send frames with rates that are
not in the TLC table.

Fixes: 5a86dcb4a908 ("wifi: iwlwifi: mvm: update station's MFP flag after association")
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Reviewed-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://msgid.link/20240129211905.1deca7eaff14.I597abd7aab36fdab4aa8311a48c98a3d5bd433ba@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c

index fa8d144..36a5932 100644 (file)
@@ -3802,13 +3802,17 @@ iwl_mvm_sta_state_assoc_to_authorized(struct iwl_mvm *mvm,
 
        mvm_sta->authorized = true;
 
-       iwl_mvm_rs_rate_init_all_links(mvm, vif, sta);
-
        /* MFP is set by default before the station is authorized.
         * Clear it here in case it's not used.
         */
-       if (!sta->mfp)
-               return callbacks->update_sta(mvm, vif, sta);
+       if (!sta->mfp) {
+               int ret = callbacks->update_sta(mvm, vif, sta);
+
+               if (ret)
+                       return ret;
+       }
+
+       iwl_mvm_rs_rate_init_all_links(mvm, vif, sta);
 
        return 0;
 }