diff options
author | Johannes Berg <johannes@sipsolutions.net> | 2007-12-18 09:27:47 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-01-28 17:59:53 -0500 |
commit | 176e4f84423af3105894a7d71b23c1a16678a6be (patch) | |
tree | 7f5103c2ca716bd2ab2bbdb68ae024d189d5c9d7 /net/mac80211/wep.c | |
parent | 7bbdd2d987971f9d123a2db89ed921bf02e34f9a (diff) |
mac80211: move tx crypto decision
This patch moves the decision making about whether a frame is encrypted
with a certain algorithm up into the TX handlers rather than having it
in the crypto algorithm implementation.
This fixes a problem with the radiotap injection code where injecting
a non-data packet and requesting encryption could end up asking the
driver to encrypt a packet without giving it a key.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/mac80211/wep.c')
-rw-r--r-- | net/mac80211/wep.c | 10 |
1 files changed, 0 insertions, 10 deletions
diff --git a/net/mac80211/wep.c b/net/mac80211/wep.c index b5f3413403bd..a0cff72a580b 100644 --- a/net/mac80211/wep.c +++ b/net/mac80211/wep.c | |||
@@ -349,16 +349,6 @@ static int wep_encrypt_skb(struct ieee80211_txrx_data *tx, struct sk_buff *skb) | |||
349 | ieee80211_txrx_result | 349 | ieee80211_txrx_result |
350 | ieee80211_crypto_wep_encrypt(struct ieee80211_txrx_data *tx) | 350 | ieee80211_crypto_wep_encrypt(struct ieee80211_txrx_data *tx) |
351 | { | 351 | { |
352 | struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) tx->skb->data; | ||
353 | u16 fc; | ||
354 | |||
355 | fc = le16_to_cpu(hdr->frame_control); | ||
356 | |||
357 | if (((fc & IEEE80211_FCTL_FTYPE) != IEEE80211_FTYPE_DATA && | ||
358 | ((fc & IEEE80211_FCTL_FTYPE) != IEEE80211_FTYPE_MGMT || | ||
359 | (fc & IEEE80211_FCTL_STYPE) != IEEE80211_STYPE_AUTH))) | ||
360 | return TXRX_CONTINUE; | ||
361 | |||
362 | tx->u.tx.control->iv_len = WEP_IV_LEN; | 352 | tx->u.tx.control->iv_len = WEP_IV_LEN; |
363 | tx->u.tx.control->icv_len = WEP_ICV_LEN; | 353 | tx->u.tx.control->icv_len = WEP_ICV_LEN; |
364 | ieee80211_tx_set_iswep(tx); | 354 | ieee80211_tx_set_iswep(tx); |