diff options
Diffstat (limited to 'net/mac80211/tx.c')
-rw-r--r-- | net/mac80211/tx.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c index 50ab4b2de1e9..12c15588af68 100644 --- a/net/mac80211/tx.c +++ b/net/mac80211/tx.c | |||
@@ -420,7 +420,6 @@ ieee80211_tx_h_unicast_ps_buf(struct ieee80211_txrx_data *tx) | |||
420 | return TXRX_CONTINUE; | 420 | return TXRX_CONTINUE; |
421 | } | 421 | } |
422 | 422 | ||
423 | |||
424 | static ieee80211_txrx_result | 423 | static ieee80211_txrx_result |
425 | ieee80211_tx_h_ps_buf(struct ieee80211_txrx_data *tx) | 424 | ieee80211_tx_h_ps_buf(struct ieee80211_txrx_data *tx) |
426 | { | 425 | { |
@@ -433,13 +432,15 @@ ieee80211_tx_h_ps_buf(struct ieee80211_txrx_data *tx) | |||
433 | return ieee80211_tx_h_multicast_ps_buf(tx); | 432 | return ieee80211_tx_h_multicast_ps_buf(tx); |
434 | } | 433 | } |
435 | 434 | ||
436 | |||
437 | |||
438 | |||
439 | static ieee80211_txrx_result | 435 | static ieee80211_txrx_result |
440 | ieee80211_tx_h_select_key(struct ieee80211_txrx_data *tx) | 436 | ieee80211_tx_h_select_key(struct ieee80211_txrx_data *tx) |
441 | { | 437 | { |
442 | struct ieee80211_key *key; | 438 | struct ieee80211_key *key; |
439 | const struct ieee80211_hdr *hdr; | ||
440 | u16 fc; | ||
441 | |||
442 | hdr = (const struct ieee80211_hdr *) tx->skb->data; | ||
443 | fc = le16_to_cpu(hdr->frame_control); | ||
443 | 444 | ||
444 | if (unlikely(tx->u.tx.control->flags & IEEE80211_TXCTL_DO_NOT_ENCRYPT)) | 445 | if (unlikely(tx->u.tx.control->flags & IEEE80211_TXCTL_DO_NOT_ENCRYPT)) |
445 | tx->key = NULL; | 446 | tx->key = NULL; |
@@ -448,7 +449,8 @@ ieee80211_tx_h_select_key(struct ieee80211_txrx_data *tx) | |||
448 | else if ((key = rcu_dereference(tx->sdata->default_key))) | 449 | else if ((key = rcu_dereference(tx->sdata->default_key))) |
449 | tx->key = key; | 450 | tx->key = key; |
450 | else if (tx->sdata->drop_unencrypted && | 451 | else if (tx->sdata->drop_unencrypted && |
451 | !(tx->sdata->eapol && ieee80211_is_eapol(tx->skb))) { | 452 | !(tx->sdata->eapol && |
453 | ieee80211_is_eapol(tx->skb, ieee80211_get_hdrlen(fc)))) { | ||
452 | I802_DEBUG_INC(tx->local->tx_handlers_drop_unencrypted); | 454 | I802_DEBUG_INC(tx->local->tx_handlers_drop_unencrypted); |
453 | return TXRX_DROP; | 455 | return TXRX_DROP; |
454 | } else { | 456 | } else { |