]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
wifi: iwlwifi: mvm: update IGTK in mvmvif upon D3 resume
authorYedidya Benshimol <yedidya.ben.shimol@intel.com>
Tue, 17 Oct 2023 09:16:48 +0000 (12:16 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 20 Nov 2023 10:56:53 +0000 (11:56 +0100)
[ Upstream commit ac0c6fdc4c56b669abc1c4a323f1c7a3a1422dd2 ]

During the D3 resume flow, all new rekeys are passed from the FW.
Because the FW supports only one IGTK at a time, every IGTK rekey
update should be done by removing the last IGTK. The mvmvif holds a
pointer to the last IGTK for that reason and thus should be updated
when a new IGTK is passed upon resume.

Fixes: 04f78e242fff ("wifi: iwlwifi: mvm: Add support for IGTK in D3 resume flow")
Signed-off-by: Yedidya Benshimol <yedidya.ben.shimol@intel.com>
Signed-off-by: Gregory Greenman <gregory.greenman@intel.com>
Link: https://lore.kernel.org/r/20231017115047.8ceaf7e5ece7.Ief444f6a2703ed76648b4d414f12bb4130bab36e@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/wireless/intel/iwlwifi/mvm/d3.c

index f6488b4bbe68bcc3ae236949a6e85146b37cd853..be2602d8c5bfa9f3920f97f56c80db087316e2b7 100644 (file)
@@ -2012,6 +2012,16 @@ iwl_mvm_d3_igtk_bigtk_rekey_add(struct iwl_wowlan_status_data *status,
        if (IS_ERR(key_config))
                return false;
        ieee80211_set_key_rx_seq(key_config, 0, &seq);
+
+       if (key_config->keyidx == 4 || key_config->keyidx == 5) {
+               struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif);
+               int link_id = vif->active_links ? __ffs(vif->active_links) : 0;
+               struct iwl_mvm_vif_link_info *mvm_link =
+                       mvmvif->link[link_id];
+
+               mvm_link->igtk = key_config;
+       }
+
        return true;
 }