Lines Matching refs:skb

36 	struct sk_buff *skb = tx->skb;  in ieee80211_tx_h_michael_mic_add()  local
37 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); in ieee80211_tx_h_michael_mic_add()
40 hdr = (struct ieee80211_hdr *)skb->data; in ieee80211_tx_h_michael_mic_add()
42 skb->len < 24 || !ieee80211_is_data_present(hdr->frame_control)) in ieee80211_tx_h_michael_mic_add()
46 if (skb->len < hdrlen) in ieee80211_tx_h_michael_mic_add()
49 data = skb->data + hdrlen; in ieee80211_tx_h_michael_mic_add()
50 data_len = skb->len - hdrlen; in ieee80211_tx_h_michael_mic_add()
69 if (WARN(skb_tailroom(skb) < tail || in ieee80211_tx_h_michael_mic_add()
70 skb_headroom(skb) < IEEE80211_TKIP_IV_LEN, in ieee80211_tx_h_michael_mic_add()
72 skb_headroom(skb), IEEE80211_TKIP_IV_LEN, in ieee80211_tx_h_michael_mic_add()
73 skb_tailroom(skb), tail)) in ieee80211_tx_h_michael_mic_add()
77 mic = skb_put(skb, MICHAEL_MIC_LEN); in ieee80211_tx_h_michael_mic_add()
93 struct sk_buff *skb = rx->skb; in ieee80211_rx_h_michael_mic_verify() local
94 struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); in ieee80211_rx_h_michael_mic_verify()
95 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; in ieee80211_rx_h_michael_mic_verify()
144 if (skb->len < hdrlen + MICHAEL_MIC_LEN) in ieee80211_rx_h_michael_mic_verify()
147 if (skb_linearize(rx->skb)) in ieee80211_rx_h_michael_mic_verify()
149 hdr = (void *)skb->data; in ieee80211_rx_h_michael_mic_verify()
151 data = skb->data + hdrlen; in ieee80211_rx_h_michael_mic_verify()
152 data_len = skb->len - hdrlen - MICHAEL_MIC_LEN; in ieee80211_rx_h_michael_mic_verify()
159 skb_trim(skb, skb->len - MICHAEL_MIC_LEN); in ieee80211_rx_h_michael_mic_verify()
179 (void *) skb->data, NULL, GFP_ATOMIC); in ieee80211_rx_h_michael_mic_verify()
184 static int tkip_encrypt_skb(struct ieee80211_tx_data *tx, struct sk_buff *skb) in tkip_encrypt_skb() argument
186 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; in tkip_encrypt_skb()
188 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); in tkip_encrypt_skb()
201 len = skb->len - hdrlen; in tkip_encrypt_skb()
208 if (WARN_ON(skb_tailroom(skb) < tail || in tkip_encrypt_skb()
209 skb_headroom(skb) < IEEE80211_TKIP_IV_LEN)) in tkip_encrypt_skb()
212 pos = skb_push(skb, IEEE80211_TKIP_IV_LEN); in tkip_encrypt_skb()
234 skb_put(skb, IEEE80211_TKIP_ICV_LEN); in tkip_encrypt_skb()
237 key, skb, pos, len); in tkip_encrypt_skb()
244 struct sk_buff *skb; in ieee80211_crypto_tkip_encrypt() local
248 skb_queue_walk(&tx->skbs, skb) { in ieee80211_crypto_tkip_encrypt()
249 if (tkip_encrypt_skb(tx, skb) < 0) in ieee80211_crypto_tkip_encrypt()
260 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) rx->skb->data; in ieee80211_crypto_tkip_decrypt()
263 struct sk_buff *skb = rx->skb; in ieee80211_crypto_tkip_decrypt() local
264 struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); in ieee80211_crypto_tkip_decrypt()
271 if (!rx->sta || skb->len - hdrlen < 12) in ieee80211_crypto_tkip_decrypt()
275 if (skb_linearize(rx->skb)) in ieee80211_crypto_tkip_decrypt()
277 hdr = (void *)skb->data; in ieee80211_crypto_tkip_decrypt()
288 key, skb->data + hdrlen, in ieee80211_crypto_tkip_decrypt()
289 skb->len - hdrlen, rx->sta->sta.addr, in ieee80211_crypto_tkip_decrypt()
297 skb_trim(skb, skb->len - IEEE80211_TKIP_ICV_LEN); in ieee80211_crypto_tkip_decrypt()
300 memmove(skb->data + IEEE80211_TKIP_IV_LEN, skb->data, hdrlen); in ieee80211_crypto_tkip_decrypt()
301 skb_pull(skb, IEEE80211_TKIP_IV_LEN); in ieee80211_crypto_tkip_decrypt()
307 static void ccmp_special_blocks(struct sk_buff *skb, u8 *pn, u8 *b_0, u8 *aad) in ccmp_special_blocks() argument
314 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; in ccmp_special_blocks()
398 static int ccmp_encrypt_skb(struct ieee80211_tx_data *tx, struct sk_buff *skb, in ccmp_encrypt_skb() argument
401 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; in ccmp_encrypt_skb()
403 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); in ccmp_encrypt_skb()
425 len = skb->len - hdrlen; in ccmp_encrypt_skb()
432 if (WARN_ON(skb_tailroom(skb) < tail || in ccmp_encrypt_skb()
433 skb_headroom(skb) < IEEE80211_CCMP_HDR_LEN)) in ccmp_encrypt_skb()
436 pos = skb_push(skb, IEEE80211_CCMP_HDR_LEN); in ccmp_encrypt_skb()
463 ccmp_special_blocks(skb, pn, b_0, aad); in ccmp_encrypt_skb()
465 skb_put(skb, mic_len), mic_len); in ccmp_encrypt_skb()
475 struct sk_buff *skb; in ieee80211_crypto_ccmp_encrypt() local
479 skb_queue_walk(&tx->skbs, skb) { in ieee80211_crypto_ccmp_encrypt()
480 if (ccmp_encrypt_skb(tx, skb, mic_len) < 0) in ieee80211_crypto_ccmp_encrypt()
492 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)rx->skb->data; in ieee80211_crypto_ccmp_decrypt()
495 struct sk_buff *skb = rx->skb; in ieee80211_crypto_ccmp_decrypt() local
496 struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); in ieee80211_crypto_ccmp_decrypt()
504 !ieee80211_is_robust_mgmt_frame(skb)) in ieee80211_crypto_ccmp_decrypt()
507 data_len = skb->len - hdrlen - IEEE80211_CCMP_HDR_LEN - mic_len; in ieee80211_crypto_ccmp_decrypt()
512 if (!pskb_may_pull(rx->skb, hdrlen + IEEE80211_CCMP_HDR_LEN)) in ieee80211_crypto_ccmp_decrypt()
515 if (skb_linearize(rx->skb)) in ieee80211_crypto_ccmp_decrypt()
519 ccmp_hdr2pn(pn, skb->data + hdrlen); in ieee80211_crypto_ccmp_decrypt()
532 ccmp_special_blocks(skb, pn, b_0, aad); in ieee80211_crypto_ccmp_decrypt()
536 skb->data + hdrlen + IEEE80211_CCMP_HDR_LEN, in ieee80211_crypto_ccmp_decrypt()
538 skb->data + skb->len - mic_len, mic_len)) in ieee80211_crypto_ccmp_decrypt()
545 if (pskb_trim(skb, skb->len - mic_len)) in ieee80211_crypto_ccmp_decrypt()
547 memmove(skb->data + IEEE80211_CCMP_HDR_LEN, skb->data, hdrlen); in ieee80211_crypto_ccmp_decrypt()
548 skb_pull(skb, IEEE80211_CCMP_HDR_LEN); in ieee80211_crypto_ccmp_decrypt()
553 static void gcmp_special_blocks(struct sk_buff *skb, u8 *pn, u8 *j_0, u8 *aad) in gcmp_special_blocks() argument
557 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; in gcmp_special_blocks()
624 static int gcmp_encrypt_skb(struct ieee80211_tx_data *tx, struct sk_buff *skb) in gcmp_encrypt_skb() argument
626 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; in gcmp_encrypt_skb()
628 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); in gcmp_encrypt_skb()
649 len = skb->len - hdrlen; in gcmp_encrypt_skb()
656 if (WARN_ON(skb_tailroom(skb) < tail || in gcmp_encrypt_skb()
657 skb_headroom(skb) < IEEE80211_GCMP_HDR_LEN)) in gcmp_encrypt_skb()
660 pos = skb_push(skb, IEEE80211_GCMP_HDR_LEN); in gcmp_encrypt_skb()
662 skb_set_network_header(skb, skb_network_offset(skb) + in gcmp_encrypt_skb()
689 gcmp_special_blocks(skb, pn, j_0, aad); in gcmp_encrypt_skb()
691 skb_put(skb, IEEE80211_GCMP_MIC_LEN)); in gcmp_encrypt_skb()
699 struct sk_buff *skb; in ieee80211_crypto_gcmp_encrypt() local
703 skb_queue_walk(&tx->skbs, skb) { in ieee80211_crypto_gcmp_encrypt()
704 if (gcmp_encrypt_skb(tx, skb) < 0) in ieee80211_crypto_gcmp_encrypt()
714 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)rx->skb->data; in ieee80211_crypto_gcmp_decrypt()
717 struct sk_buff *skb = rx->skb; in ieee80211_crypto_gcmp_decrypt() local
718 struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); in ieee80211_crypto_gcmp_decrypt()
726 !ieee80211_is_robust_mgmt_frame(skb)) in ieee80211_crypto_gcmp_decrypt()
729 data_len = skb->len - hdrlen - IEEE80211_GCMP_HDR_LEN - in ieee80211_crypto_gcmp_decrypt()
735 if (!pskb_may_pull(rx->skb, hdrlen + IEEE80211_GCMP_HDR_LEN)) in ieee80211_crypto_gcmp_decrypt()
738 if (skb_linearize(rx->skb)) in ieee80211_crypto_gcmp_decrypt()
742 gcmp_hdr2pn(pn, skb->data + hdrlen); in ieee80211_crypto_gcmp_decrypt()
755 gcmp_special_blocks(skb, pn, j_0, aad); in ieee80211_crypto_gcmp_decrypt()
759 skb->data + hdrlen + IEEE80211_GCMP_HDR_LEN, in ieee80211_crypto_gcmp_decrypt()
761 skb->data + skb->len - IEEE80211_GCMP_MIC_LEN)) in ieee80211_crypto_gcmp_decrypt()
768 if (pskb_trim(skb, skb->len - IEEE80211_GCMP_MIC_LEN)) in ieee80211_crypto_gcmp_decrypt()
770 memmove(skb->data + IEEE80211_GCMP_HDR_LEN, skb->data, hdrlen); in ieee80211_crypto_gcmp_decrypt()
771 skb_pull(skb, IEEE80211_GCMP_HDR_LEN); in ieee80211_crypto_gcmp_decrypt()
778 struct sk_buff *skb) in ieee80211_crypto_cs_encrypt() argument
780 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; in ieee80211_crypto_cs_encrypt()
782 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); in ieee80211_crypto_cs_encrypt()
792 if (unlikely(skb_headroom(skb) < iv_len && in ieee80211_crypto_cs_encrypt()
793 pskb_expand_head(skb, iv_len, 0, GFP_ATOMIC))) in ieee80211_crypto_cs_encrypt()
798 pos = skb_push(skb, iv_len); in ieee80211_crypto_cs_encrypt()
823 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)rx->skb->data; in ieee80211_crypto_cs_decrypt()
826 struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(rx->skb); in ieee80211_crypto_cs_decrypt()
841 data_len = rx->skb->len - hdrlen - cs->hdr_len; in ieee80211_crypto_cs_decrypt()
852 if (skb_linearize(rx->skb)) in ieee80211_crypto_cs_decrypt()
855 hdr = (struct ieee80211_hdr *)rx->skb->data; in ieee80211_crypto_cs_decrypt()
858 skb_pn = rx->skb->data + hdrlen + cs->pn_off; in ieee80211_crypto_cs_decrypt()
866 if (pskb_trim(rx->skb, rx->skb->len - cs->mic_len)) in ieee80211_crypto_cs_decrypt()
869 memmove(rx->skb->data + cs->hdr_len, rx->skb->data, hdrlen); in ieee80211_crypto_cs_decrypt()
870 skb_pull(rx->skb, cs->hdr_len); in ieee80211_crypto_cs_decrypt()
875 static void bip_aad(struct sk_buff *skb, u8 *aad) in bip_aad() argument
878 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; in bip_aad()
917 struct sk_buff *skb; in ieee80211_crypto_aes_cmac_encrypt() local
927 skb = skb_peek(&tx->skbs); in ieee80211_crypto_aes_cmac_encrypt()
929 info = IEEE80211_SKB_CB(skb); in ieee80211_crypto_aes_cmac_encrypt()
934 if (WARN_ON(skb_tailroom(skb) < sizeof(*mmie))) in ieee80211_crypto_aes_cmac_encrypt()
937 mmie = (struct ieee80211_mmie *) skb_put(skb, sizeof(*mmie)); in ieee80211_crypto_aes_cmac_encrypt()
947 bip_aad(skb, aad); in ieee80211_crypto_aes_cmac_encrypt()
953 skb->data + 24, skb->len - 24, mmie->mic); in ieee80211_crypto_aes_cmac_encrypt()
961 struct sk_buff *skb; in ieee80211_crypto_aes_cmac_256_encrypt() local
971 skb = skb_peek(&tx->skbs); in ieee80211_crypto_aes_cmac_256_encrypt()
973 info = IEEE80211_SKB_CB(skb); in ieee80211_crypto_aes_cmac_256_encrypt()
978 if (WARN_ON(skb_tailroom(skb) < sizeof(*mmie))) in ieee80211_crypto_aes_cmac_256_encrypt()
981 mmie = (struct ieee80211_mmie_16 *)skb_put(skb, sizeof(*mmie)); in ieee80211_crypto_aes_cmac_256_encrypt()
991 bip_aad(skb, aad); in ieee80211_crypto_aes_cmac_256_encrypt()
996 skb->data + 24, skb->len - 24, mmie->mic); in ieee80211_crypto_aes_cmac_256_encrypt()
1004 struct sk_buff *skb = rx->skb; in ieee80211_crypto_aes_cmac_decrypt() local
1005 struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); in ieee80211_crypto_aes_cmac_decrypt()
1009 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; in ieee80211_crypto_aes_cmac_decrypt()
1016 if (skb->len < 24 + sizeof(*mmie)) in ieee80211_crypto_aes_cmac_decrypt()
1020 (skb->data + skb->len - sizeof(*mmie)); in ieee80211_crypto_aes_cmac_decrypt()
1034 bip_aad(skb, aad); in ieee80211_crypto_aes_cmac_decrypt()
1036 skb->data + 24, skb->len - 24, mic); in ieee80211_crypto_aes_cmac_decrypt()
1046 skb_trim(skb, skb->len - sizeof(*mmie)); in ieee80211_crypto_aes_cmac_decrypt()
1054 struct sk_buff *skb = rx->skb; in ieee80211_crypto_aes_cmac_256_decrypt() local
1055 struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); in ieee80211_crypto_aes_cmac_256_decrypt()
1059 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; in ieee80211_crypto_aes_cmac_256_decrypt()
1066 if (skb->len < 24 + sizeof(*mmie)) in ieee80211_crypto_aes_cmac_256_decrypt()
1070 (skb->data + skb->len - sizeof(*mmie)); in ieee80211_crypto_aes_cmac_256_decrypt()
1084 bip_aad(skb, aad); in ieee80211_crypto_aes_cmac_256_decrypt()
1086 skb->data + 24, skb->len - 24, mic); in ieee80211_crypto_aes_cmac_256_decrypt()
1096 skb_trim(skb, skb->len - sizeof(*mmie)); in ieee80211_crypto_aes_cmac_256_decrypt()
1104 struct sk_buff *skb; in ieee80211_crypto_aes_gmac_encrypt() local
1116 skb = skb_peek(&tx->skbs); in ieee80211_crypto_aes_gmac_encrypt()
1118 info = IEEE80211_SKB_CB(skb); in ieee80211_crypto_aes_gmac_encrypt()
1123 if (WARN_ON(skb_tailroom(skb) < sizeof(*mmie))) in ieee80211_crypto_aes_gmac_encrypt()
1126 mmie = (struct ieee80211_mmie_16 *)skb_put(skb, sizeof(*mmie)); in ieee80211_crypto_aes_gmac_encrypt()
1136 bip_aad(skb, aad); in ieee80211_crypto_aes_gmac_encrypt()
1138 hdr = (struct ieee80211_hdr *)skb->data; in ieee80211_crypto_aes_gmac_encrypt()
1144 skb->data + 24, skb->len - 24, mmie->mic) < 0) in ieee80211_crypto_aes_gmac_encrypt()
1153 struct sk_buff *skb = rx->skb; in ieee80211_crypto_aes_gmac_decrypt() local
1154 struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); in ieee80211_crypto_aes_gmac_decrypt()
1158 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; in ieee80211_crypto_aes_gmac_decrypt()
1165 if (skb->len < 24 + sizeof(*mmie)) in ieee80211_crypto_aes_gmac_decrypt()
1169 (skb->data + skb->len - sizeof(*mmie)); in ieee80211_crypto_aes_gmac_decrypt()
1183 bip_aad(skb, aad); in ieee80211_crypto_aes_gmac_decrypt()
1189 skb->data + 24, skb->len - 24, in ieee80211_crypto_aes_gmac_decrypt()
1200 skb_trim(skb, skb->len - sizeof(*mmie)); in ieee80211_crypto_aes_gmac_decrypt()
1208 struct sk_buff *skb; in ieee80211_crypto_hw_encrypt() local
1212 skb_queue_walk(&tx->skbs, skb) { in ieee80211_crypto_hw_encrypt()
1213 info = IEEE80211_SKB_CB(skb); in ieee80211_crypto_hw_encrypt()
1220 res = ieee80211_crypto_cs_encrypt(tx, skb); in ieee80211_crypto_hw_encrypt()