Commit c39e3a0d authored by Johannes Berg's avatar Johannes Berg Committed by David S. Miller

[MAC80211]: remove TKIP mixing for hw accel again

The TKIP mixing code was added for the benefit of Intel's ipw3945
chipset but that code ended up not using it. We have previously
identified many problems with this code and it crystallized that
library functions for mixing are likely to handle this in much
more generality and might allow b43 to take advantage of hardware
acceleration for TKIP.

Due to these reasons, remove the TKIP mixing for hardware
accelerated crypto operations.
Signed-off-by: default avatarJohannes Berg <johannes@sipsolutions.net>
Acked-by: default avatarMichael Buesch <mb@bu3sch.de>
Acked-by: default avatarMichael Wu <flamingice@sourmilk.net>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 6a7664d4
...@@ -189,7 +189,6 @@ struct ieee80211_tx_control { ...@@ -189,7 +189,6 @@ struct ieee80211_tx_control {
#define IEEE80211_TXCTL_REQUEUE (1<<7) #define IEEE80211_TXCTL_REQUEUE (1<<7)
#define IEEE80211_TXCTL_FIRST_FRAGMENT (1<<8) /* this is a first fragment of #define IEEE80211_TXCTL_FIRST_FRAGMENT (1<<8) /* this is a first fragment of
* the frame */ * the frame */
#define IEEE80211_TXCTL_TKIP_NEW_PHASE1_KEY (1<<9)
#define IEEE80211_TXCTL_LONG_RETRY_LIMIT (1<<10) /* this frame should be send #define IEEE80211_TXCTL_LONG_RETRY_LIMIT (1<<10) /* this frame should be send
* using the through * using the through
* set_retry_limit configured * set_retry_limit configured
...@@ -205,7 +204,6 @@ struct ieee80211_tx_control { ...@@ -205,7 +204,6 @@ struct ieee80211_tx_control {
u8 antenna_sel_tx; /* 0 = default/diversity, 1 = Ant0, 2 = Ant1 */ u8 antenna_sel_tx; /* 0 = default/diversity, 1 = Ant0, 2 = Ant1 */
u8 icv_len; /* length of the ICV/MIC field in octets */ u8 icv_len; /* length of the ICV/MIC field in octets */
u8 iv_len; /* length of the IV field in octets */ u8 iv_len; /* length of the IV field in octets */
u8 tkip_key[16]; /* generated phase2/phase1 key for hw TKIP */
u8 queue; /* hardware queue to use for this frame; u8 queue; /* hardware queue to use for this frame;
* 0 = highest, hw->queues-1 = lowest */ * 0 = highest, hw->queues-1 = lowest */
u8 sw_retry_attempt; /* number of times hw has tried to u8 sw_retry_attempt; /* number of times hw has tried to
...@@ -565,13 +563,6 @@ struct ieee80211_hw { ...@@ -565,13 +563,6 @@ struct ieee80211_hw {
* specified in the device's EEPROM */ * specified in the device's EEPROM */
#define IEEE80211_HW_DEFAULT_REG_DOMAIN_CONFIGURED (1<<11) #define IEEE80211_HW_DEFAULT_REG_DOMAIN_CONFIGURED (1<<11)
/* Do TKIP phase1 key mixing in stack to support cards only do
* phase2 key mixing when doing hwcrypto */
#define IEEE80211_HW_TKIP_REQ_PHASE1_KEY (1<<13)
/* Do TKIP phase1 and phase2 key mixing in stack and send the generated
* per-packet RC4 key with each TX frame when doing hwcrypto */
#define IEEE80211_HW_TKIP_REQ_PHASE2_KEY (1<<14)
u32 flags; /* hardware flags defined above */ u32 flags; /* hardware flags defined above */
/* Set to the size of a needed device specific skb headroom for TX skbs. */ /* Set to the size of a needed device specific skb headroom for TX skbs. */
......
...@@ -214,7 +214,6 @@ static int tkip_encrypt_skb(struct ieee80211_txrx_data *tx, ...@@ -214,7 +214,6 @@ static int tkip_encrypt_skb(struct ieee80211_txrx_data *tx,
key->u.tkip.iv32++; key->u.tkip.iv32++;
if (tx->key->flags & KEY_FLAG_UPLOADED_TO_HARDWARE) { if (tx->key->flags & KEY_FLAG_UPLOADED_TO_HARDWARE) {
u32 flags = tx->local->hw.flags;
hdr = (struct ieee80211_hdr *)skb->data; hdr = (struct ieee80211_hdr *)skb->data;
/* hwaccel - with preallocated room for IV */ /* hwaccel - with preallocated room for IV */
...@@ -224,22 +223,6 @@ static int tkip_encrypt_skb(struct ieee80211_txrx_data *tx, ...@@ -224,22 +223,6 @@ static int tkip_encrypt_skb(struct ieee80211_txrx_data *tx,
0x7f), 0x7f),
(u8) key->u.tkip.iv16); (u8) key->u.tkip.iv16);
if (flags & IEEE80211_HW_TKIP_REQ_PHASE2_KEY)
ieee80211_tkip_gen_rc4key(key, hdr->addr2,
tx->u.tx.control->tkip_key);
else if (flags & IEEE80211_HW_TKIP_REQ_PHASE1_KEY) {
if (key->u.tkip.iv16 == 0 ||
!key->u.tkip.tx_initialized) {
ieee80211_tkip_gen_phase1key(key, hdr->addr2,
(u16 *)tx->u.tx.control->tkip_key);
key->u.tkip.tx_initialized = 1;
tx->u.tx.control->flags |=
IEEE80211_TXCTL_TKIP_NEW_PHASE1_KEY;
} else
tx->u.tx.control->flags &=
~IEEE80211_TXCTL_TKIP_NEW_PHASE1_KEY;
}
tx->u.tx.control->key_idx = tx->key->conf.hw_key_idx; tx->u.tx.control->key_idx = tx->key->conf.hw_key_idx;
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment