aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
Diffstat (limited to 'net')
-rw-r--r--net/mac80211/rx.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index 2a85fdfebde2..7d226417ef46 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -2797,10 +2797,17 @@ static int prepare_for_handlers(struct ieee80211_rx_data *rx,
2797 return 0; 2797 return 0;
2798 } else if (!ieee80211_bssid_match(bssid, 2798 } else if (!ieee80211_bssid_match(bssid,
2799 sdata->vif.addr)) { 2799 sdata->vif.addr)) {
2800 /*
2801 * Accept public action frames even when the
2802 * BSSID doesn't match, this is used for P2P
2803 * and location updates. Note that mac80211
2804 * itself never looks at these frames.
2805 */
2806 if (!(status->rx_flags & IEEE80211_RX_IN_SCAN) &&
2807 ieee80211_is_public_action(hdr, skb->len))
2808 return 1;
2800 if (!(status->rx_flags & IEEE80211_RX_IN_SCAN) && 2809 if (!(status->rx_flags & IEEE80211_RX_IN_SCAN) &&
2801 !ieee80211_is_beacon(hdr->frame_control) && 2810 !ieee80211_is_beacon(hdr->frame_control))
2802 !(ieee80211_is_action(hdr->frame_control) &&
2803 sdata->vif.p2p))
2804 return 0; 2811 return 0;
2805 status->rx_flags &= ~IEEE80211_RX_RA_MATCH; 2812 status->rx_flags &= ~IEEE80211_RX_RA_MATCH;
2806 } 2813 }