aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/rx.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/mac80211/rx.c')
-rw-r--r--net/mac80211/rx.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index 8d6fa674f53e..2b5b1194dfc2 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -2484,14 +2484,9 @@ static ieee80211_rx_result debug_noinline
2484ieee80211_rx_h_mgmt(struct ieee80211_rx_data *rx) 2484ieee80211_rx_h_mgmt(struct ieee80211_rx_data *rx)
2485{ 2485{
2486 struct ieee80211_sub_if_data *sdata = rx->sdata; 2486 struct ieee80211_sub_if_data *sdata = rx->sdata;
2487 ieee80211_rx_result rxs;
2488 struct ieee80211_mgmt *mgmt = (void *)rx->skb->data; 2487 struct ieee80211_mgmt *mgmt = (void *)rx->skb->data;
2489 __le16 stype; 2488 __le16 stype;
2490 2489
2491 rxs = ieee80211_work_rx_mgmt(rx->sdata, rx->skb);
2492 if (rxs != RX_CONTINUE)
2493 return rxs;
2494
2495 stype = mgmt->frame_control & cpu_to_le16(IEEE80211_FCTL_STYPE); 2490 stype = mgmt->frame_control & cpu_to_le16(IEEE80211_FCTL_STYPE);
2496 2491
2497 if (!ieee80211_vif_is_mesh(&sdata->vif) && 2492 if (!ieee80211_vif_is_mesh(&sdata->vif) &&
@@ -2500,10 +2495,13 @@ ieee80211_rx_h_mgmt(struct ieee80211_rx_data *rx)
2500 return RX_DROP_MONITOR; 2495 return RX_DROP_MONITOR;
2501 2496
2502 switch (stype) { 2497 switch (stype) {
2498 case cpu_to_le16(IEEE80211_STYPE_AUTH):
2503 case cpu_to_le16(IEEE80211_STYPE_BEACON): 2499 case cpu_to_le16(IEEE80211_STYPE_BEACON):
2504 case cpu_to_le16(IEEE80211_STYPE_PROBE_RESP): 2500 case cpu_to_le16(IEEE80211_STYPE_PROBE_RESP):
2505 /* process for all: mesh, mlme, ibss */ 2501 /* process for all: mesh, mlme, ibss */
2506 break; 2502 break;
2503 case cpu_to_le16(IEEE80211_STYPE_ASSOC_RESP):
2504 case cpu_to_le16(IEEE80211_STYPE_REASSOC_RESP):
2507 case cpu_to_le16(IEEE80211_STYPE_DEAUTH): 2505 case cpu_to_le16(IEEE80211_STYPE_DEAUTH):
2508 case cpu_to_le16(IEEE80211_STYPE_DISASSOC): 2506 case cpu_to_le16(IEEE80211_STYPE_DISASSOC):
2509 if (is_multicast_ether_addr(mgmt->da) && 2507 if (is_multicast_ether_addr(mgmt->da) &&
@@ -2515,7 +2513,6 @@ ieee80211_rx_h_mgmt(struct ieee80211_rx_data *rx)
2515 return RX_DROP_MONITOR; 2513 return RX_DROP_MONITOR;
2516 break; 2514 break;
2517 case cpu_to_le16(IEEE80211_STYPE_PROBE_REQ): 2515 case cpu_to_le16(IEEE80211_STYPE_PROBE_REQ):
2518 case cpu_to_le16(IEEE80211_STYPE_AUTH):
2519 /* process only for ibss */ 2516 /* process only for ibss */
2520 if (sdata->vif.type != NL80211_IFTYPE_ADHOC) 2517 if (sdata->vif.type != NL80211_IFTYPE_ADHOC)
2521 return RX_DROP_MONITOR; 2518 return RX_DROP_MONITOR;