Merge tag 'xfs-5.20-merge-6' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux
[linux-2.6-microblaze.git] / net / mac80211 / wpa.c
index 5fd8a3e..93ec2f3 100644 (file)
@@ -3,7 +3,7 @@
  * Copyright 2002-2004, Instant802 Networks, Inc.
  * Copyright 2008, Jouni Malinen <j@w1.fi>
  * Copyright (C) 2016-2017 Intel Deutschland GmbH
- * Copyright (C) 2020-2021 Intel Corporation
+ * Copyright (C) 2020-2022 Intel Corporation
  */
 
 #include <linux/netdevice.h>
@@ -778,102 +778,6 @@ ieee80211_crypto_gcmp_decrypt(struct ieee80211_rx_data *rx)
        return RX_CONTINUE;
 }
 
-static ieee80211_tx_result
-ieee80211_crypto_cs_encrypt(struct ieee80211_tx_data *tx,
-                           struct sk_buff *skb)
-{
-       struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
-       struct ieee80211_key *key = tx->key;
-       struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
-       int hdrlen;
-       u8 *pos, iv_len = key->conf.iv_len;
-
-       if (info->control.hw_key &&
-           !(info->control.hw_key->flags & IEEE80211_KEY_FLAG_PUT_IV_SPACE)) {
-               /* hwaccel has no need for preallocated head room */
-               return TX_CONTINUE;
-       }
-
-       if (unlikely(skb_headroom(skb) < iv_len &&
-                    pskb_expand_head(skb, iv_len, 0, GFP_ATOMIC)))
-               return TX_DROP;
-
-       hdrlen = ieee80211_hdrlen(hdr->frame_control);
-
-       pos = skb_push(skb, iv_len);
-       memmove(pos, pos + iv_len, hdrlen);
-
-       return TX_CONTINUE;
-}
-
-static inline int ieee80211_crypto_cs_pn_compare(u8 *pn1, u8 *pn2, int len)
-{
-       int i;
-
-       /* pn is little endian */
-       for (i = len - 1; i >= 0; i--) {
-               if (pn1[i] < pn2[i])
-                       return -1;
-               else if (pn1[i] > pn2[i])
-                       return 1;
-       }
-
-       return 0;
-}
-
-static ieee80211_rx_result
-ieee80211_crypto_cs_decrypt(struct ieee80211_rx_data *rx)
-{
-       struct ieee80211_key *key = rx->key;
-       struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)rx->skb->data;
-       const struct ieee80211_cipher_scheme *cs = NULL;
-       int hdrlen = ieee80211_hdrlen(hdr->frame_control);
-       struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(rx->skb);
-       int data_len;
-       u8 *rx_pn;
-       u8 *skb_pn;
-       u8 qos_tid;
-
-       if (!rx->sta || !rx->sta->cipher_scheme ||
-           !(status->flag & RX_FLAG_DECRYPTED))
-               return RX_DROP_UNUSABLE;
-
-       if (!ieee80211_is_data(hdr->frame_control))
-               return RX_CONTINUE;
-
-       cs = rx->sta->cipher_scheme;
-
-       data_len = rx->skb->len - hdrlen - cs->hdr_len;
-
-       if (data_len < 0)
-               return RX_DROP_UNUSABLE;
-
-       if (ieee80211_is_data_qos(hdr->frame_control))
-               qos_tid = ieee80211_get_tid(hdr);
-       else
-               qos_tid = 0;
-
-       if (skb_linearize(rx->skb))
-               return RX_DROP_UNUSABLE;
-
-       rx_pn = key->u.gen.rx_pn[qos_tid];
-       skb_pn = rx->skb->data + hdrlen + cs->pn_off;
-
-       if (ieee80211_crypto_cs_pn_compare(skb_pn, rx_pn, cs->pn_len) <= 0)
-               return RX_DROP_UNUSABLE;
-
-       memcpy(rx_pn, skb_pn, cs->pn_len);
-
-       /* remove security header and MIC */
-       if (pskb_trim(rx->skb, rx->skb->len - cs->mic_len))
-               return RX_DROP_UNUSABLE;
-
-       memmove(rx->skb->data + cs->hdr_len, rx->skb->data, hdrlen);
-       skb_pull(rx->skb, cs->hdr_len);
-
-       return RX_CONTINUE;
-}
-
 static void bip_aad(struct sk_buff *skb, u8 *aad)
 {
        __le16 mask_fc;
@@ -1212,38 +1116,3 @@ ieee80211_crypto_aes_gmac_decrypt(struct ieee80211_rx_data *rx)
 
        return RX_CONTINUE;
 }
-
-ieee80211_tx_result
-ieee80211_crypto_hw_encrypt(struct ieee80211_tx_data *tx)
-{
-       struct sk_buff *skb;
-       struct ieee80211_tx_info *info = NULL;
-       ieee80211_tx_result res;
-
-       skb_queue_walk(&tx->skbs, skb) {
-               info  = IEEE80211_SKB_CB(skb);
-
-               /* handle hw-only algorithm */
-               if (!info->control.hw_key)
-                       return TX_DROP;
-
-               if (tx->key->flags & KEY_FLAG_CIPHER_SCHEME) {
-                       res = ieee80211_crypto_cs_encrypt(tx, skb);
-                       if (res != TX_CONTINUE)
-                               return res;
-               }
-       }
-
-       ieee80211_tx_set_protected(tx);
-
-       return TX_CONTINUE;
-}
-
-ieee80211_rx_result
-ieee80211_crypto_hw_decrypt(struct ieee80211_rx_data *rx)
-{
-       if (rx->sta && rx->sta->cipher_scheme)
-               return ieee80211_crypto_cs_decrypt(rx);
-
-       return RX_DROP_UNUSABLE;
-}