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.c32
1 files changed, 7 insertions, 25 deletions
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index b4a62fe3ccbd..7cd185e9dde4 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -19,7 +19,6 @@
19 19
20#include "ieee80211_i.h" 20#include "ieee80211_i.h"
21#include "ieee80211_led.h" 21#include "ieee80211_led.h"
22#include "ieee80211_common.h"
23#include "wep.h" 22#include "wep.h"
24#include "wpa.h" 23#include "wpa.h"
25#include "tkip.h" 24#include "tkip.h"
@@ -412,12 +411,7 @@ ieee80211_rx_h_check(struct ieee80211_txrx_data *rx)
412 return TXRX_DROP; 411 return TXRX_DROP;
413 } 412 }
414 413
415 if (!rx->local->apdev) 414 return TXRX_DROP;
416 return TXRX_DROP;
417
418 ieee80211_rx_mgmt(rx->local, rx->skb, rx->u.rx.status,
419 ieee80211_msg_sta_not_assoc);
420 return TXRX_QUEUED;
421 } 415 }
422 416
423 return TXRX_CONTINUE; 417 return TXRX_CONTINUE;
@@ -983,15 +977,8 @@ ieee80211_rx_h_802_1x_pae(struct ieee80211_txrx_data *rx)
983{ 977{
984 if (rx->sdata->eapol && ieee80211_is_eapol(rx->skb) && 978 if (rx->sdata->eapol && ieee80211_is_eapol(rx->skb) &&
985 rx->sdata->type != IEEE80211_IF_TYPE_STA && 979 rx->sdata->type != IEEE80211_IF_TYPE_STA &&
986 (rx->flags & IEEE80211_TXRXD_RXRA_MATCH)) { 980 (rx->flags & IEEE80211_TXRXD_RXRA_MATCH))
987 /* Pass both encrypted and unencrypted EAPOL frames to user 981 return TXRX_CONTINUE;
988 * space for processing. */
989 if (!rx->local->apdev)
990 return TXRX_DROP;
991 ieee80211_rx_mgmt(rx->local, rx->skb, rx->u.rx.status,
992 ieee80211_msg_normal);
993 return TXRX_QUEUED;
994 }
995 982
996 if (unlikely(rx->sdata->ieee802_1x && 983 if (unlikely(rx->sdata->ieee802_1x &&
997 (rx->fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_DATA && 984 (rx->fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_DATA &&
@@ -1233,15 +1220,11 @@ ieee80211_rx_h_mgmt(struct ieee80211_txrx_data *rx)
1233 sdata = IEEE80211_DEV_TO_SUB_IF(rx->dev); 1220 sdata = IEEE80211_DEV_TO_SUB_IF(rx->dev);
1234 if ((sdata->type == IEEE80211_IF_TYPE_STA || 1221 if ((sdata->type == IEEE80211_IF_TYPE_STA ||
1235 sdata->type == IEEE80211_IF_TYPE_IBSS) && 1222 sdata->type == IEEE80211_IF_TYPE_IBSS) &&
1236 !rx->local->user_space_mlme) { 1223 !rx->local->user_space_mlme)
1237 ieee80211_sta_rx_mgmt(rx->dev, rx->skb, rx->u.rx.status); 1224 ieee80211_sta_rx_mgmt(rx->dev, rx->skb, rx->u.rx.status);
1238 } else { 1225 else
1239 /* Management frames are sent to hostapd for processing */ 1226 return TXRX_DROP;
1240 if (!rx->local->apdev) 1227
1241 return TXRX_DROP;
1242 ieee80211_rx_mgmt(rx->local, rx->skb, rx->u.rx.status,
1243 ieee80211_msg_normal);
1244 }
1245 return TXRX_QUEUED; 1228 return TXRX_QUEUED;
1246} 1229}
1247 1230
@@ -1454,7 +1437,6 @@ static int prepare_for_handlers(struct ieee80211_sub_if_data *sdata,
1454 /* take everything */ 1437 /* take everything */
1455 break; 1438 break;
1456 case IEEE80211_IF_TYPE_INVALID: 1439 case IEEE80211_IF_TYPE_INVALID:
1457 case IEEE80211_IF_TYPE_MGMT:
1458 /* should never get here */ 1440 /* should never get here */
1459 WARN_ON(1); 1441 WARN_ON(1);
1460 break; 1442 break;