aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/wpa.c
diff options
context:
space:
mode:
authorJohannes Berg <johannes@sipsolutions.net>2007-12-18 09:27:47 -0500
committerDavid S. Miller <davem@davemloft.net>2008-01-28 17:59:53 -0500
commit176e4f84423af3105894a7d71b23c1a16678a6be (patch)
tree7f5103c2ca716bd2ab2bbdb68ae024d189d5c9d7 /net/mac80211/wpa.c
parent7bbdd2d987971f9d123a2db89ed921bf02e34f9a (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/wpa.c')
-rw-r--r--net/mac80211/wpa.c14
1 files changed, 0 insertions, 14 deletions
diff --git a/net/mac80211/wpa.c b/net/mac80211/wpa.c
index 20cec1cb956f..6f04311cf0a0 100644
--- a/net/mac80211/wpa.c
+++ b/net/mac80211/wpa.c
@@ -245,16 +245,9 @@ static int tkip_encrypt_skb(struct ieee80211_txrx_data *tx,
245ieee80211_txrx_result 245ieee80211_txrx_result
246ieee80211_crypto_tkip_encrypt(struct ieee80211_txrx_data *tx) 246ieee80211_crypto_tkip_encrypt(struct ieee80211_txrx_data *tx)
247{ 247{
248 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) tx->skb->data;
249 u16 fc;
250 struct sk_buff *skb = tx->skb; 248 struct sk_buff *skb = tx->skb;
251 int wpa_test = 0, test = 0; 249 int wpa_test = 0, test = 0;
252 250
253 fc = le16_to_cpu(hdr->frame_control);
254
255 if (!WLAN_FC_DATA_PRESENT(fc))
256 return TXRX_CONTINUE;
257
258 tx->u.tx.control->icv_len = TKIP_ICV_LEN; 251 tx->u.tx.control->icv_len = TKIP_ICV_LEN;
259 tx->u.tx.control->iv_len = TKIP_IV_LEN; 252 tx->u.tx.control->iv_len = TKIP_IV_LEN;
260 ieee80211_tx_set_iswep(tx); 253 ieee80211_tx_set_iswep(tx);
@@ -501,16 +494,9 @@ static int ccmp_encrypt_skb(struct ieee80211_txrx_data *tx,
501ieee80211_txrx_result 494ieee80211_txrx_result
502ieee80211_crypto_ccmp_encrypt(struct ieee80211_txrx_data *tx) 495ieee80211_crypto_ccmp_encrypt(struct ieee80211_txrx_data *tx)
503{ 496{
504 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) tx->skb->data;
505 u16 fc;
506 struct sk_buff *skb = tx->skb; 497 struct sk_buff *skb = tx->skb;
507 int test = 0; 498 int test = 0;
508 499
509 fc = le16_to_cpu(hdr->frame_control);
510
511 if (!WLAN_FC_DATA_PRESENT(fc))
512 return TXRX_CONTINUE;
513
514 tx->u.tx.control->icv_len = CCMP_MIC_LEN; 500 tx->u.tx.control->icv_len = CCMP_MIC_LEN;
515 tx->u.tx.control->iv_len = CCMP_HDR_LEN; 501 tx->u.tx.control->iv_len = CCMP_HDR_LEN;
516 ieee80211_tx_set_iswep(tx); 502 ieee80211_tx_set_iswep(tx);