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()
187 static int tkip_encrypt_skb(struct ieee80211_tx_data *tx, struct sk_buff *skb) in tkip_encrypt_skb() argument
189 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; in tkip_encrypt_skb()
191 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); in tkip_encrypt_skb()
204 len = skb->len - hdrlen; in tkip_encrypt_skb()
211 if (WARN_ON(skb_tailroom(skb) < tail || in tkip_encrypt_skb()
212 skb_headroom(skb) < IEEE80211_TKIP_IV_LEN)) in tkip_encrypt_skb()
215 pos = skb_push(skb, IEEE80211_TKIP_IV_LEN); in tkip_encrypt_skb()
237 skb_put(skb, IEEE80211_TKIP_ICV_LEN); in tkip_encrypt_skb()
240 key, skb, pos, len); in tkip_encrypt_skb()
247 struct sk_buff *skb; in ieee80211_crypto_tkip_encrypt() local
251 skb_queue_walk(&tx->skbs, skb) { in ieee80211_crypto_tkip_encrypt()
252 if (tkip_encrypt_skb(tx, skb) < 0) in ieee80211_crypto_tkip_encrypt()
263 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) rx->skb->data; in ieee80211_crypto_tkip_decrypt()
266 struct sk_buff *skb = rx->skb; in ieee80211_crypto_tkip_decrypt() local
267 struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); in ieee80211_crypto_tkip_decrypt()
274 if (!rx->sta || skb->len - hdrlen < 12) in ieee80211_crypto_tkip_decrypt()
278 if (skb_linearize(rx->skb)) in ieee80211_crypto_tkip_decrypt()
280 hdr = (void *)skb->data; in ieee80211_crypto_tkip_decrypt()
291 key, skb->data + hdrlen, in ieee80211_crypto_tkip_decrypt()
292 skb->len - hdrlen, rx->sta->sta.addr, in ieee80211_crypto_tkip_decrypt()
300 skb_trim(skb, skb->len - IEEE80211_TKIP_ICV_LEN); in ieee80211_crypto_tkip_decrypt()
303 memmove(skb->data + IEEE80211_TKIP_IV_LEN, skb->data, hdrlen); in ieee80211_crypto_tkip_decrypt()
304 skb_pull(skb, IEEE80211_TKIP_IV_LEN); in ieee80211_crypto_tkip_decrypt()
310 static void ccmp_special_blocks(struct sk_buff *skb, u8 *pn, u8 *b_0, u8 *aad) in ccmp_special_blocks() argument
317 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; in ccmp_special_blocks()
401 static int ccmp_encrypt_skb(struct ieee80211_tx_data *tx, struct sk_buff *skb, in ccmp_encrypt_skb() argument
404 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; in ccmp_encrypt_skb()
406 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); in ccmp_encrypt_skb()
428 len = skb->len - hdrlen; in ccmp_encrypt_skb()
435 if (WARN_ON(skb_tailroom(skb) < tail || in ccmp_encrypt_skb()
436 skb_headroom(skb) < IEEE80211_CCMP_HDR_LEN)) in ccmp_encrypt_skb()
439 pos = skb_push(skb, IEEE80211_CCMP_HDR_LEN); in ccmp_encrypt_skb()
466 ccmp_special_blocks(skb, pn, b_0, aad); in ccmp_encrypt_skb()
468 skb_put(skb, mic_len), mic_len); in ccmp_encrypt_skb()
478 struct sk_buff *skb; in ieee80211_crypto_ccmp_encrypt() local
482 skb_queue_walk(&tx->skbs, skb) { in ieee80211_crypto_ccmp_encrypt()
483 if (ccmp_encrypt_skb(tx, skb, mic_len) < 0) in ieee80211_crypto_ccmp_encrypt()
495 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)rx->skb->data; in ieee80211_crypto_ccmp_decrypt()
498 struct sk_buff *skb = rx->skb; in ieee80211_crypto_ccmp_decrypt() local
499 struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); in ieee80211_crypto_ccmp_decrypt()
507 !ieee80211_is_robust_mgmt_frame(skb)) in ieee80211_crypto_ccmp_decrypt()
510 data_len = skb->len - hdrlen - IEEE80211_CCMP_HDR_LEN - mic_len; in ieee80211_crypto_ccmp_decrypt()
515 if (!pskb_may_pull(rx->skb, hdrlen + IEEE80211_CCMP_HDR_LEN)) in ieee80211_crypto_ccmp_decrypt()
518 if (skb_linearize(rx->skb)) in ieee80211_crypto_ccmp_decrypt()
523 ccmp_hdr2pn(pn, skb->data + hdrlen); in ieee80211_crypto_ccmp_decrypt()
537 ccmp_special_blocks(skb, pn, b_0, aad); in ieee80211_crypto_ccmp_decrypt()
541 skb->data + hdrlen + IEEE80211_CCMP_HDR_LEN, in ieee80211_crypto_ccmp_decrypt()
543 skb->data + skb->len - mic_len, mic_len)) in ieee80211_crypto_ccmp_decrypt()
551 if (pskb_trim(skb, skb->len - mic_len)) in ieee80211_crypto_ccmp_decrypt()
553 memmove(skb->data + IEEE80211_CCMP_HDR_LEN, skb->data, hdrlen); in ieee80211_crypto_ccmp_decrypt()
554 skb_pull(skb, IEEE80211_CCMP_HDR_LEN); in ieee80211_crypto_ccmp_decrypt()
559 static void gcmp_special_blocks(struct sk_buff *skb, u8 *pn, u8 *j_0, u8 *aad) in gcmp_special_blocks() argument
563 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; in gcmp_special_blocks()
630 static int gcmp_encrypt_skb(struct ieee80211_tx_data *tx, struct sk_buff *skb) in gcmp_encrypt_skb() argument
632 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; in gcmp_encrypt_skb()
634 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); in gcmp_encrypt_skb()
655 len = skb->len - hdrlen; in gcmp_encrypt_skb()
662 if (WARN_ON(skb_tailroom(skb) < tail || in gcmp_encrypt_skb()
663 skb_headroom(skb) < IEEE80211_GCMP_HDR_LEN)) in gcmp_encrypt_skb()
666 pos = skb_push(skb, IEEE80211_GCMP_HDR_LEN); in gcmp_encrypt_skb()
668 skb_set_network_header(skb, skb_network_offset(skb) + in gcmp_encrypt_skb()
695 gcmp_special_blocks(skb, pn, j_0, aad); in gcmp_encrypt_skb()
697 skb_put(skb, IEEE80211_GCMP_MIC_LEN)); in gcmp_encrypt_skb()
705 struct sk_buff *skb; in ieee80211_crypto_gcmp_encrypt() local
709 skb_queue_walk(&tx->skbs, skb) { in ieee80211_crypto_gcmp_encrypt()
710 if (gcmp_encrypt_skb(tx, skb) < 0) in ieee80211_crypto_gcmp_encrypt()
720 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)rx->skb->data; in ieee80211_crypto_gcmp_decrypt()
723 struct sk_buff *skb = rx->skb; in ieee80211_crypto_gcmp_decrypt() local
724 struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); in ieee80211_crypto_gcmp_decrypt()
732 !ieee80211_is_robust_mgmt_frame(skb)) in ieee80211_crypto_gcmp_decrypt()
735 data_len = skb->len - hdrlen - IEEE80211_GCMP_HDR_LEN - in ieee80211_crypto_gcmp_decrypt()
741 if (!pskb_may_pull(rx->skb, hdrlen + IEEE80211_GCMP_HDR_LEN)) in ieee80211_crypto_gcmp_decrypt()
744 if (skb_linearize(rx->skb)) in ieee80211_crypto_gcmp_decrypt()
749 gcmp_hdr2pn(pn, skb->data + hdrlen); in ieee80211_crypto_gcmp_decrypt()
763 gcmp_special_blocks(skb, pn, j_0, aad); in ieee80211_crypto_gcmp_decrypt()
767 skb->data + hdrlen + IEEE80211_GCMP_HDR_LEN, in ieee80211_crypto_gcmp_decrypt()
769 skb->data + skb->len - in ieee80211_crypto_gcmp_decrypt()
778 if (pskb_trim(skb, skb->len - IEEE80211_GCMP_MIC_LEN)) in ieee80211_crypto_gcmp_decrypt()
780 memmove(skb->data + IEEE80211_GCMP_HDR_LEN, skb->data, hdrlen); in ieee80211_crypto_gcmp_decrypt()
781 skb_pull(skb, IEEE80211_GCMP_HDR_LEN); in ieee80211_crypto_gcmp_decrypt()
788 struct sk_buff *skb) in ieee80211_crypto_cs_encrypt() argument
790 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; in ieee80211_crypto_cs_encrypt()
792 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); in ieee80211_crypto_cs_encrypt()
802 if (unlikely(skb_headroom(skb) < iv_len && in ieee80211_crypto_cs_encrypt()
803 pskb_expand_head(skb, iv_len, 0, GFP_ATOMIC))) in ieee80211_crypto_cs_encrypt()
808 pos = skb_push(skb, iv_len); in ieee80211_crypto_cs_encrypt()
833 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)rx->skb->data; in ieee80211_crypto_cs_decrypt()
836 struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(rx->skb); in ieee80211_crypto_cs_decrypt()
851 data_len = rx->skb->len - hdrlen - cs->hdr_len; in ieee80211_crypto_cs_decrypt()
862 if (skb_linearize(rx->skb)) in ieee80211_crypto_cs_decrypt()
865 hdr = (struct ieee80211_hdr *)rx->skb->data; in ieee80211_crypto_cs_decrypt()
868 skb_pn = rx->skb->data + hdrlen + cs->pn_off; in ieee80211_crypto_cs_decrypt()
876 if (pskb_trim(rx->skb, rx->skb->len - cs->mic_len)) in ieee80211_crypto_cs_decrypt()
879 memmove(rx->skb->data + cs->hdr_len, rx->skb->data, hdrlen); in ieee80211_crypto_cs_decrypt()
880 skb_pull(rx->skb, cs->hdr_len); in ieee80211_crypto_cs_decrypt()
885 static void bip_aad(struct sk_buff *skb, u8 *aad) in bip_aad() argument
888 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; in bip_aad()
927 struct sk_buff *skb; in ieee80211_crypto_aes_cmac_encrypt() local
937 skb = skb_peek(&tx->skbs); in ieee80211_crypto_aes_cmac_encrypt()
939 info = IEEE80211_SKB_CB(skb); in ieee80211_crypto_aes_cmac_encrypt()
944 if (WARN_ON(skb_tailroom(skb) < sizeof(*mmie))) in ieee80211_crypto_aes_cmac_encrypt()
947 mmie = (struct ieee80211_mmie *) skb_put(skb, sizeof(*mmie)); in ieee80211_crypto_aes_cmac_encrypt()
957 bip_aad(skb, aad); in ieee80211_crypto_aes_cmac_encrypt()
963 skb->data + 24, skb->len - 24, mmie->mic); in ieee80211_crypto_aes_cmac_encrypt()
971 struct sk_buff *skb; in ieee80211_crypto_aes_cmac_256_encrypt() local
981 skb = skb_peek(&tx->skbs); in ieee80211_crypto_aes_cmac_256_encrypt()
983 info = IEEE80211_SKB_CB(skb); in ieee80211_crypto_aes_cmac_256_encrypt()
988 if (WARN_ON(skb_tailroom(skb) < sizeof(*mmie))) in ieee80211_crypto_aes_cmac_256_encrypt()
991 mmie = (struct ieee80211_mmie_16 *)skb_put(skb, sizeof(*mmie)); in ieee80211_crypto_aes_cmac_256_encrypt()
1001 bip_aad(skb, aad); in ieee80211_crypto_aes_cmac_256_encrypt()
1006 skb->data + 24, skb->len - 24, mmie->mic); in ieee80211_crypto_aes_cmac_256_encrypt()
1014 struct sk_buff *skb = rx->skb; in ieee80211_crypto_aes_cmac_decrypt() local
1015 struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); in ieee80211_crypto_aes_cmac_decrypt()
1019 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; in ieee80211_crypto_aes_cmac_decrypt()
1026 if (skb->len < 24 + sizeof(*mmie)) in ieee80211_crypto_aes_cmac_decrypt()
1030 (skb->data + skb->len - sizeof(*mmie)); in ieee80211_crypto_aes_cmac_decrypt()
1044 bip_aad(skb, aad); in ieee80211_crypto_aes_cmac_decrypt()
1046 skb->data + 24, skb->len - 24, mic); in ieee80211_crypto_aes_cmac_decrypt()
1056 skb_trim(skb, skb->len - sizeof(*mmie)); in ieee80211_crypto_aes_cmac_decrypt()
1064 struct sk_buff *skb = rx->skb; in ieee80211_crypto_aes_cmac_256_decrypt() local
1065 struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); in ieee80211_crypto_aes_cmac_256_decrypt()
1069 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; in ieee80211_crypto_aes_cmac_256_decrypt()
1076 if (skb->len < 24 + sizeof(*mmie)) in ieee80211_crypto_aes_cmac_256_decrypt()
1080 (skb->data + skb->len - sizeof(*mmie)); in ieee80211_crypto_aes_cmac_256_decrypt()
1094 bip_aad(skb, aad); in ieee80211_crypto_aes_cmac_256_decrypt()
1096 skb->data + 24, skb->len - 24, mic); in ieee80211_crypto_aes_cmac_256_decrypt()
1106 skb_trim(skb, skb->len - sizeof(*mmie)); in ieee80211_crypto_aes_cmac_256_decrypt()
1114 struct sk_buff *skb; in ieee80211_crypto_aes_gmac_encrypt() local
1126 skb = skb_peek(&tx->skbs); in ieee80211_crypto_aes_gmac_encrypt()
1128 info = IEEE80211_SKB_CB(skb); in ieee80211_crypto_aes_gmac_encrypt()
1133 if (WARN_ON(skb_tailroom(skb) < sizeof(*mmie))) in ieee80211_crypto_aes_gmac_encrypt()
1136 mmie = (struct ieee80211_mmie_16 *)skb_put(skb, sizeof(*mmie)); in ieee80211_crypto_aes_gmac_encrypt()
1146 bip_aad(skb, aad); in ieee80211_crypto_aes_gmac_encrypt()
1148 hdr = (struct ieee80211_hdr *)skb->data; in ieee80211_crypto_aes_gmac_encrypt()
1154 skb->data + 24, skb->len - 24, mmie->mic) < 0) in ieee80211_crypto_aes_gmac_encrypt()
1163 struct sk_buff *skb = rx->skb; in ieee80211_crypto_aes_gmac_decrypt() local
1164 struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); in ieee80211_crypto_aes_gmac_decrypt()
1168 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; in ieee80211_crypto_aes_gmac_decrypt()
1175 if (skb->len < 24 + sizeof(*mmie)) in ieee80211_crypto_aes_gmac_decrypt()
1179 (skb->data + skb->len - sizeof(*mmie)); in ieee80211_crypto_aes_gmac_decrypt()
1193 bip_aad(skb, aad); in ieee80211_crypto_aes_gmac_decrypt()
1199 skb->data + 24, skb->len - 24, in ieee80211_crypto_aes_gmac_decrypt()
1210 skb_trim(skb, skb->len - sizeof(*mmie)); in ieee80211_crypto_aes_gmac_decrypt()
1218 struct sk_buff *skb; in ieee80211_crypto_hw_encrypt() local
1222 skb_queue_walk(&tx->skbs, skb) { in ieee80211_crypto_hw_encrypt()
1223 info = IEEE80211_SKB_CB(skb); in ieee80211_crypto_hw_encrypt()
1230 res = ieee80211_crypto_cs_encrypt(tx, skb); in ieee80211_crypto_hw_encrypt()