wifi: iwlwifi: mvm: always update keys in D3 exit
authorShaul Triebitz <shaul.triebitz@intel.com>
Mon, 5 Feb 2024 19:21:12 +0000 (21:21 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Thu, 8 Feb 2024 14:00:48 +0000 (15:00 +0100)
If during D3 there was both a GTK rekey and a
disconnection, when waking up, we must first
update the new keys and then disconnect.

The reason is that when disconnecting we first need
to remove the keys.
Trying to remove invalid keys results in firmware
assert.

Signed-off-by: Shaul Triebitz <shaul.triebitz@intel.com>
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://msgid.link/20240205211151.68cf3974b5d7.Iac9b71a1906ab973aba9baadc9e923b63c0b4945@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/d3.c

index af449cb9f9679ac1783c3af60c0b192b9beadf8d..89030647e639ddea857703a9aa9001121033076d 100644 (file)
@@ -2100,7 +2100,6 @@ static bool iwl_mvm_setup_connection_keep(struct iwl_mvm *mvm,
                .status = status,
        };
        int i;
-
        u32 disconnection_reasons =
                IWL_WOWLAN_WAKEUP_BY_DISCONNECTION_ON_MISSED_BEACON |
                IWL_WOWLAN_WAKEUP_BY_DISCONNECTION_ON_DEAUTH;
@@ -2108,9 +2107,6 @@ static bool iwl_mvm_setup_connection_keep(struct iwl_mvm *mvm,
        if (!status || !vif->bss_conf.bssid)
                return false;
 
-       if (status->wakeup_reasons & disconnection_reasons)
-               return false;
-
        if (iwl_mvm_lookup_wowlan_status_ver(mvm) > 6 ||
            iwl_fw_lookup_notif_ver(mvm->fw, PROT_OFFLOAD_GROUP,
                                    WOWLAN_INFO_NOTIFICATION,
@@ -2171,6 +2167,9 @@ out:
                mvmvif->seqno = status->non_qos_seq_ctr + 0x10;
        }
 
+       if (status->wakeup_reasons & disconnection_reasons)
+               return false;
+
        return true;
 }