iwlwifi: mvm: update rate scale in moving back to assoc state
authorMordechay Goodstein <mordechay.goodstein@intel.com>
Sat, 4 Dec 2021 11:10:48 +0000 (13:10 +0200)
committerLuca Coelho <luciano.coelho@intel.com>
Tue, 7 Dec 2021 18:06:41 +0000 (20:06 +0200)
In assoc state we only use narrow bandwidth, due to phy/radio not
configured to max bandwidth.

Signed-off-by: Mordechay Goodstein <mordechay.goodstein@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Link: https://lore.kernel.org/r/iwlwifi.20211204130722.139d74d2b063.I4cfbb594c110ea9b250e2306c30601f847db2c1a@changeid
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c

index 4344f5d94b09ddcc6f03a697a74cfb7e70d6380e..82f7c98ea3bf92317101b5d6717f7c2f5858d36e 100644 (file)
@@ -3383,6 +3383,11 @@ static int iwl_mvm_mac_sta_state(struct ieee80211_hw *hw,
                                     true);
        } else if (old_state == IEEE80211_STA_AUTHORIZED &&
                   new_state == IEEE80211_STA_ASSOC) {
+               /* once we move into assoc state, need to update rate scale to
+                * disable using wide bandwidth
+                */
+               iwl_mvm_rs_rate_init(mvm, sta, mvmvif->phy_ctxt->channel->band,
+                                    false);
                if (!sta->tdls) {
                        /* Multicast data frames are no longer allowed */
                        iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL);
index 958702403a45dbc45974bf71aa0b09c6501a4c67..970b92fd7042a645209b2f655dc011b5f5253930 100644 (file)
@@ -291,8 +291,12 @@ void iwl_mvm_tlc_update_notif(struct iwl_mvm *mvm,
        notif = (void *)pkt->data;
        sta = rcu_dereference(mvm->fw_id_to_mac_id[notif->sta_id]);
        if (IS_ERR_OR_NULL(sta)) {
-               IWL_ERR(mvm, "Invalid sta id (%d) in FW TLC notification\n",
-                       notif->sta_id);
+               /* can happen in remove station flow where mvm removed internally
+                * the station before removing from FW
+                */
+               IWL_DEBUG_RATE(mvm,
+                              "Invalid mvm RCU pointer for sta id (%d) in TLC notification\n",
+                              notif->sta_id);
                goto out;
        }