wifi: iwlwifi: mvm: don't drop unencrypted MCAST frames
authorAyala Beker <ayala.beker@intel.com>
Thu, 13 Apr 2023 18:40:22 +0000 (21:40 +0300)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 14 Apr 2023 11:14:49 +0000 (13:14 +0200)
MCAST frames are filtered out by the driver if we are not
authorized yet.
Fix it to filter out only protected frames.

Fixes: 147eb05f24e6 ("iwlwifi: mvm: always tell the firmware to accept MCAST frames in BSS")
Signed-off-by: Ayala Beker <ayala.beker@intel.com>
Signed-off-by: Gregory Greenman <gregory.greenman@intel.com>
Link: https://lore.kernel.org/r/20230413213309.9cedcc27db60.I8fb7057981392660da482dd215e85c15946d3f4b@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/rx.c

index e08dca8..b38b242 100644 (file)
@@ -383,9 +383,10 @@ void iwl_mvm_rx_rx_mpdu(struct iwl_mvm *mvm, struct napi_struct *napi,
                 * Don't even try to decrypt a MCAST frame that was received
                 * before the managed vif is authorized, we'd fail anyway.
                 */
-               if (vif->type == NL80211_IFTYPE_STATION &&
+               if (is_multicast_ether_addr(hdr->addr1) &&
+                   vif->type == NL80211_IFTYPE_STATION &&
                    !mvmvif->authorized &&
-                   is_multicast_ether_addr(hdr->addr1)) {
+                   ieee80211_has_protected(hdr->frame_control)) {
                        IWL_DEBUG_DROP(mvm, "MCAST before the vif is authorized\n");
                        kfree_skb(skb);
                        rcu_read_unlock();