diff options
Diffstat (limited to 'net/mac80211/rx.c')
-rw-r--r-- | net/mac80211/rx.c | 9 |
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 | |||
2484 | ieee80211_rx_h_mgmt(struct ieee80211_rx_data *rx) | 2484 | ieee80211_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; |