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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 11 May 2023 14:03:23 +0000 (23:03 +0900)
[ Upstream commit 8e5a26360cbe29b896b6758518280d41c3704d43 ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/wireless/intel/iwlwifi/mvm/rx.c

index 49ca1e168fc5bc10d50c2360921e88f0f5ace07b..eee98cebbb46a99cd1aa73f8e10598f76156a927 100644 (file)
@@ -384,9 +384,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();