aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorEliad Peller <eliad@wizery.com>2016-02-15 05:34:10 -0500
committerJohannes Berg <johannes.berg@intel.com>2016-02-24 03:04:39 -0500
commitca48ebbc7ea7e82e3ae4b55aacead0cdb54ff008 (patch)
treee46cb1aad0ae715f07cfbfc99902245c6425a93e /drivers
parent1ad4f639cc3e09d6c8402a0fcc592e2391683e31 (diff)
mac80211: remove ieee80211_get_key_tx_seq/ieee80211_set_key_tx_seq
Since the PNs of all the tx keys are now tracked in the public part of the key struct (with atomic counter), we no longer need these functions. dvm and vt665{5,6} are currently the only users of these functions, so update them accordingly. Signed-off-by: Eliad Peller <eliadx.peller@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/intel/iwlwifi/dvm/lib.c20
-rw-r--r--drivers/staging/vt6655/rxtx.c12
-rw-r--r--drivers/staging/vt6656/rxtx.c12
3 files changed, 24 insertions, 20 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/dvm/lib.c b/drivers/net/wireless/intel/iwlwifi/dvm/lib.c
index 4841be2aa499..1799469268ea 100644
--- a/drivers/net/wireless/intel/iwlwifi/dvm/lib.c
+++ b/drivers/net/wireless/intel/iwlwifi/dvm/lib.c
@@ -943,14 +943,16 @@ static void iwlagn_wowlan_program_keys(struct ieee80211_hw *hw,
943 switch (key->cipher) { 943 switch (key->cipher) {
944 case WLAN_CIPHER_SUITE_TKIP: 944 case WLAN_CIPHER_SUITE_TKIP:
945 if (sta) { 945 if (sta) {
946 u64 pn64;
947
946 tkip_sc = data->rsc_tsc->all_tsc_rsc.tkip.unicast_rsc; 948 tkip_sc = data->rsc_tsc->all_tsc_rsc.tkip.unicast_rsc;
947 tkip_tx_sc = &data->rsc_tsc->all_tsc_rsc.tkip.tsc; 949 tkip_tx_sc = &data->rsc_tsc->all_tsc_rsc.tkip.tsc;
948 950
949 rx_p1ks = data->tkip->rx_uni; 951 rx_p1ks = data->tkip->rx_uni;
950 952
951 ieee80211_get_key_tx_seq(key, &seq); 953 pn64 = atomic64_read(&key->tx_pn);
952 tkip_tx_sc->iv16 = cpu_to_le16(seq.tkip.iv16); 954 tkip_tx_sc->iv16 = cpu_to_le16(TKIP_PN_TO_IV16(pn64));
953 tkip_tx_sc->iv32 = cpu_to_le32(seq.tkip.iv32); 955 tkip_tx_sc->iv32 = cpu_to_le32(TKIP_PN_TO_IV32(pn64));
954 956
955 ieee80211_get_tkip_p1k_iv(key, seq.tkip.iv32, p1k); 957 ieee80211_get_tkip_p1k_iv(key, seq.tkip.iv32, p1k);
956 iwlagn_convert_p1k(p1k, data->tkip->tx.p1k); 958 iwlagn_convert_p1k(p1k, data->tkip->tx.p1k);
@@ -996,19 +998,13 @@ static void iwlagn_wowlan_program_keys(struct ieee80211_hw *hw,
996 break; 998 break;
997 case WLAN_CIPHER_SUITE_CCMP: 999 case WLAN_CIPHER_SUITE_CCMP:
998 if (sta) { 1000 if (sta) {
999 u8 *pn = seq.ccmp.pn; 1001 u64 pn64;
1000 1002
1001 aes_sc = data->rsc_tsc->all_tsc_rsc.aes.unicast_rsc; 1003 aes_sc = data->rsc_tsc->all_tsc_rsc.aes.unicast_rsc;
1002 aes_tx_sc = &data->rsc_tsc->all_tsc_rsc.aes.tsc; 1004 aes_tx_sc = &data->rsc_tsc->all_tsc_rsc.aes.tsc;
1003 1005
1004 ieee80211_get_key_tx_seq(key, &seq); 1006 pn64 = atomic64_read(&key->tx_pn);
1005 aes_tx_sc->pn = cpu_to_le64( 1007 aes_tx_sc->pn = cpu_to_le64(pn64);
1006 (u64)pn[5] |
1007 ((u64)pn[4] << 8) |
1008 ((u64)pn[3] << 16) |
1009 ((u64)pn[2] << 24) |
1010 ((u64)pn[1] << 32) |
1011 ((u64)pn[0] << 40));
1012 } else 1008 } else
1013 aes_sc = data->rsc_tsc->all_tsc_rsc.aes.multicast_rsc; 1009 aes_sc = data->rsc_tsc->all_tsc_rsc.aes.multicast_rsc;
1014 1010
diff --git a/drivers/staging/vt6655/rxtx.c b/drivers/staging/vt6655/rxtx.c
index b668db6a45fb..1a2dda09b69d 100644
--- a/drivers/staging/vt6655/rxtx.c
+++ b/drivers/staging/vt6655/rxtx.c
@@ -1210,7 +1210,7 @@ static void vnt_fill_txkey(struct ieee80211_hdr *hdr, u8 *key_buffer,
1210 struct sk_buff *skb, u16 payload_len, 1210 struct sk_buff *skb, u16 payload_len,
1211 struct vnt_mic_hdr *mic_hdr) 1211 struct vnt_mic_hdr *mic_hdr)
1212{ 1212{
1213 struct ieee80211_key_seq seq; 1213 u64 pn64;
1214 u8 *iv = ((u8 *)hdr + ieee80211_get_hdrlen_from_skb(skb)); 1214 u8 *iv = ((u8 *)hdr + ieee80211_get_hdrlen_from_skb(skb));
1215 1215
1216 /* strip header and icv len from payload */ 1216 /* strip header and icv len from payload */
@@ -1243,9 +1243,13 @@ static void vnt_fill_txkey(struct ieee80211_hdr *hdr, u8 *key_buffer,
1243 mic_hdr->payload_len = cpu_to_be16(payload_len); 1243 mic_hdr->payload_len = cpu_to_be16(payload_len);
1244 ether_addr_copy(mic_hdr->mic_addr2, hdr->addr2); 1244 ether_addr_copy(mic_hdr->mic_addr2, hdr->addr2);
1245 1245
1246 ieee80211_get_key_tx_seq(tx_key, &seq); 1246 pn64 = atomic64_read(&tx_key->tx_pn);
1247 1247 mic_hdr->ccmp_pn[5] = pn64;
1248 memcpy(mic_hdr->ccmp_pn, seq.ccmp.pn, IEEE80211_CCMP_PN_LEN); 1248 mic_hdr->ccmp_pn[4] = pn64 >> 8;
1249 mic_hdr->ccmp_pn[3] = pn64 >> 16;
1250 mic_hdr->ccmp_pn[2] = pn64 >> 24;
1251 mic_hdr->ccmp_pn[1] = pn64 >> 32;
1252 mic_hdr->ccmp_pn[0] = pn64 >> 40;
1249 1253
1250 if (ieee80211_has_a4(hdr->frame_control)) 1254 if (ieee80211_has_a4(hdr->frame_control))
1251 mic_hdr->hlen = cpu_to_be16(28); 1255 mic_hdr->hlen = cpu_to_be16(28);
diff --git a/drivers/staging/vt6656/rxtx.c b/drivers/staging/vt6656/rxtx.c
index efb54f53b4f9..76378d225b46 100644
--- a/drivers/staging/vt6656/rxtx.c
+++ b/drivers/staging/vt6656/rxtx.c
@@ -719,7 +719,7 @@ static void vnt_fill_txkey(struct vnt_usb_send_context *tx_context,
719 u16 payload_len, struct vnt_mic_hdr *mic_hdr) 719 u16 payload_len, struct vnt_mic_hdr *mic_hdr)
720{ 720{
721 struct ieee80211_hdr *hdr = tx_context->hdr; 721 struct ieee80211_hdr *hdr = tx_context->hdr;
722 struct ieee80211_key_seq seq; 722 u64 pn64;
723 u8 *iv = ((u8 *)hdr + ieee80211_get_hdrlen_from_skb(skb)); 723 u8 *iv = ((u8 *)hdr + ieee80211_get_hdrlen_from_skb(skb));
724 724
725 /* strip header and icv len from payload */ 725 /* strip header and icv len from payload */
@@ -752,9 +752,13 @@ static void vnt_fill_txkey(struct vnt_usb_send_context *tx_context,
752 mic_hdr->payload_len = cpu_to_be16(payload_len); 752 mic_hdr->payload_len = cpu_to_be16(payload_len);
753 ether_addr_copy(mic_hdr->mic_addr2, hdr->addr2); 753 ether_addr_copy(mic_hdr->mic_addr2, hdr->addr2);
754 754
755 ieee80211_get_key_tx_seq(tx_key, &seq); 755 pn64 = atomic64_read(&tx_key->tx_pn);
756 756 mic_hdr->ccmp_pn[5] = pn64;
757 memcpy(mic_hdr->ccmp_pn, seq.ccmp.pn, IEEE80211_CCMP_PN_LEN); 757 mic_hdr->ccmp_pn[4] = pn64 >> 8;
758 mic_hdr->ccmp_pn[3] = pn64 >> 16;
759 mic_hdr->ccmp_pn[2] = pn64 >> 24;
760 mic_hdr->ccmp_pn[1] = pn64 >> 32;
761 mic_hdr->ccmp_pn[0] = pn64 >> 40;
758 762
759 if (ieee80211_has_a4(hdr->frame_control)) 763 if (ieee80211_has_a4(hdr->frame_control))
760 mic_hdr->hlen = cpu_to_be16(28); 764 mic_hdr->hlen = cpu_to_be16(28);