wifi: iwlwifi: mvm: indicate HW decrypt for beacon protection
authorJohannes Berg <johannes.berg@intel.com>
Tue, 20 Jun 2023 10:04:01 +0000 (13:04 +0300)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 21 Jun 2023 12:02:16 +0000 (14:02 +0200)
We've already done the 'decryption' here, so tell
mac80211 it need not do it again.

Fixes: b1fdc2505abc ("iwlwifi: mvm: advertise BIGTK client support if available")
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Gregory Greenman <gregory.greenman@intel.com>
Link: https://lore.kernel.org/r/20230620125813.a50cf68fbf2e.Ieceacbe3789d81ea02ae085ad8d1f8813a33c31b@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c

index 9dbe71d..8d1e44f 100644 (file)
@@ -279,7 +279,8 @@ static void iwl_mvm_get_signal_strength(struct iwl_mvm *mvm,
 static int iwl_mvm_rx_mgmt_prot(struct ieee80211_sta *sta,
                                struct ieee80211_hdr *hdr,
                                struct iwl_rx_mpdu_desc *desc,
-                               u32 status)
+                               u32 status,
+                               struct ieee80211_rx_status *stats)
 {
        struct iwl_mvm_sta *mvmsta;
        struct iwl_mvm_vif *mvmvif;
@@ -308,8 +309,10 @@ static int iwl_mvm_rx_mgmt_prot(struct ieee80211_sta *sta,
 
        /* good cases */
        if (likely(status & IWL_RX_MPDU_STATUS_MIC_OK &&
-                  !(status & IWL_RX_MPDU_STATUS_REPLAY_ERROR)))
+                  !(status & IWL_RX_MPDU_STATUS_REPLAY_ERROR))) {
+               stats->flag |= RX_FLAG_DECRYPTED;
                return 0;
+       }
 
        if (!sta)
                return -1;
@@ -378,7 +381,7 @@ static int iwl_mvm_rx_crypto(struct iwl_mvm *mvm, struct ieee80211_sta *sta,
 
        if (unlikely(ieee80211_is_mgmt(hdr->frame_control) &&
                     !ieee80211_has_protected(hdr->frame_control)))
-               return iwl_mvm_rx_mgmt_prot(sta, hdr, desc, status);
+               return iwl_mvm_rx_mgmt_prot(sta, hdr, desc, status, stats);
 
        if (!ieee80211_has_protected(hdr->frame_control) ||
            (status & IWL_RX_MPDU_STATUS_SEC_MASK) ==