36 lines
1.4 KiB
Diff
36 lines
1.4 KiB
Diff
|
From: Jouni Malinen <jouni@qca.qualcomm.com>
|
||
|
Date: Tue, 1 Mar 2016 00:29:00 +0200
|
||
|
Subject: [PATCH] mac80211: Fix Public Action frame RX in AP mode
|
||
|
|
||
|
Public Action frames use special rules for how the BSSID field (Address
|
||
|
3) is set. A wildcard BSSID is used in cases where the transmitter and
|
||
|
recipient are not members of the same BSS. As such, we need to accept
|
||
|
Public Action frames with wildcard BSSID.
|
||
|
|
||
|
Commit db8e17324553 ("mac80211: ignore frames between TDLS peers when
|
||
|
operating as AP") added a rule that drops Action frames to TDLS-peers
|
||
|
based on an Action frame having different DA (Address 1) and BSSID
|
||
|
(Address 3) values. This is not correct since it misses the possibility
|
||
|
of BSSID being a wildcard BSSID in which case the Address 1 would not
|
||
|
necessarily match.
|
||
|
|
||
|
Fix this by allowing mac80211 to accept wildcard BSSID in an Action
|
||
|
frame when in AP mode.
|
||
|
|
||
|
Fixes: db8e17324553 ("mac80211: ignore frames between TDLS peers when operating as AP")
|
||
|
Cc: stable@vger.kernel.org
|
||
|
Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
|
||
|
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||
|
---
|
||
|
|
||
|
--- a/net/mac80211/rx.c
|
||
|
+++ b/net/mac80211/rx.c
|
||
|
@@ -3374,6 +3374,7 @@ static bool ieee80211_accept_frame(struc
|
||
|
return false;
|
||
|
/* ignore action frames to TDLS-peers */
|
||
|
if (ieee80211_is_action(hdr->frame_control) &&
|
||
|
+ !is_broadcast_ether_addr(bssid) &&
|
||
|
!ether_addr_equal(bssid, hdr->addr1))
|
||
|
return false;
|
||
|
}
|