From: Emmanuel Grumbach <emmanuel.grumbach@xxxxxxxxx> This patch makes the mac80211 able to send a ready phase2 key to the low level driver for TKIP encryption. Iwlwifi needs to get a phase2 key to encrypt TX packets in HW. Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@xxxxxxxxx> Signed-off-by: Tomas Winkler <tomas.winkler@xxxxxxxxx> --- include/net/mac80211.h | 5 +++++ net/mac80211/wpa.c | 3 +++ 2 files changed, 8 insertions(+), 0 deletions(-) diff --git a/include/net/mac80211.h b/include/net/mac80211.h index 5ab6a35..a0c7cd7 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h @@ -287,6 +287,7 @@ struct ieee80211_tx_control { u8 iv_len; /* length of the IV field in octets */ u8 queue; /* hardware queue to use for this frame; * 0 = highest, hw->queues-1 = lowest */ + u8 tkip_key[16]; /* generated phase2/phase1 key for hw TKIP */ int type; /* internal */ }; @@ -586,11 +587,15 @@ enum ieee80211_key_alg { * @IEEE80211_KEY_FLAG_GENERATE_MMIC: This flag should be set by * the driver for a TKIP key if it requires Michael MIC * generation in software. + * @IEEE80211_KEY_FLAG_TKIP_REQ_TX_P2_KEY: This flag should be set by + * the driver for a TKIP key if it requires a phase2 TX key generation + * in SW. The key will be attached to each packet. */ enum ieee80211_key_flags { IEEE80211_KEY_FLAG_WMM_STA = 1<<0, IEEE80211_KEY_FLAG_GENERATE_IV = 1<<1, IEEE80211_KEY_FLAG_GENERATE_MMIC= 1<<2, + IEEE80211_KEY_FLAG_TKIP_REQ_TX_P2_KEY = 1<<3, }; /** diff --git a/net/mac80211/wpa.c b/net/mac80211/wpa.c index db6b72b..ee9c5cf 100644 --- a/net/mac80211/wpa.c +++ b/net/mac80211/wpa.c @@ -224,6 +224,9 @@ static int tkip_encrypt_skb(struct ieee80211_tx_data *tx, /* hwaccel - with preallocated room for IV */ ieee80211_tkip_add_iv(pos, key); + if (key->conf.flags & IEEE80211_KEY_FLAG_TKIP_REQ_TX_P2_KEY) + ieee80211_tkip_gen_rc4key(key, hdr->addr2, + tx->control->tkip_key); tx->control->key_idx = tx->key->conf.hw_key_idx; return 0; } -- 1.5.3.4 -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html