Lines Matching refs:msdu
1849 static void ath12k_dp_rx_h_csum_offload(struct ath12k *ar, struct sk_buff *msdu) in ath12k_dp_rx_h_csum_offload() argument
1851 struct ath12k_skb_rxcb *rxcb = ATH12K_SKB_RXCB(msdu); in ath12k_dp_rx_h_csum_offload()
1858 msdu->ip_summed = (ip_csum_fail || l4_csum_fail) ? in ath12k_dp_rx_h_csum_offload()
1943 struct sk_buff *msdu, in ath12k_dp_rx_h_undecap_nwifi() argument
1948 struct ath12k_skb_rxcb *rxcb = ATH12K_SKB_RXCB(msdu); in ath12k_dp_rx_h_undecap_nwifi()
1956 hdr = (struct ieee80211_hdr *)msdu->data; in ath12k_dp_rx_h_undecap_nwifi()
1958 skb_pull(msdu, hdr_len); in ath12k_dp_rx_h_undecap_nwifi()
1978 crypto_hdr = skb_push(msdu, ath12k_dp_rx_crypto_param_len(ar, enctype)); in ath12k_dp_rx_h_undecap_nwifi()
1984 memcpy(skb_push(msdu, in ath12k_dp_rx_h_undecap_nwifi()
1987 memcpy(skb_push(msdu, hdr_len), decap_hdr, hdr_len); in ath12k_dp_rx_h_undecap_nwifi()
1990 static void ath12k_dp_rx_h_undecap_raw(struct ath12k *ar, struct sk_buff *msdu, in ath12k_dp_rx_h_undecap_raw() argument
1995 struct ath12k_skb_rxcb *rxcb = ATH12K_SKB_RXCB(msdu); in ath12k_dp_rx_h_undecap_raw()
2006 skb_trim(msdu, msdu->len - FCS_LEN); in ath12k_dp_rx_h_undecap_raw()
2011 hdr = (void *)msdu->data; in ath12k_dp_rx_h_undecap_raw()
2015 skb_trim(msdu, msdu->len - in ath12k_dp_rx_h_undecap_raw()
2018 skb_trim(msdu, msdu->len - in ath12k_dp_rx_h_undecap_raw()
2023 skb_trim(msdu, msdu->len - in ath12k_dp_rx_h_undecap_raw()
2028 skb_trim(msdu, msdu->len - in ath12k_dp_rx_h_undecap_raw()
2036 skb_trim(msdu, msdu->len - IEEE80211_CCMP_MIC_LEN); in ath12k_dp_rx_h_undecap_raw()
2043 memmove(msdu->data + crypto_len, msdu->data, hdr_len); in ath12k_dp_rx_h_undecap_raw()
2044 skb_pull(msdu, crypto_len); in ath12k_dp_rx_h_undecap_raw()
2049 struct sk_buff *msdu, in ath12k_get_dot11_hdr_from_rx_desc() argument
2064 crypto_hdr = skb_push(msdu, crypto_len); in ath12k_get_dot11_hdr_from_rx_desc()
2070 skb_push(msdu, hdr_len); in ath12k_get_dot11_hdr_from_rx_desc()
2071 hdr = (struct ieee80211_hdr *)msdu->data; in ath12k_get_dot11_hdr_from_rx_desc()
2087 memcpy(msdu->data + (hdr_len - IEEE80211_QOS_CTL_LEN), in ath12k_get_dot11_hdr_from_rx_desc()
2093 struct sk_buff *msdu, in ath12k_dp_rx_h_undecap_eth() argument
2101 struct ath12k_skb_rxcb *rxcb = ATH12K_SKB_RXCB(msdu); in ath12k_dp_rx_h_undecap_eth()
2104 eth = (struct ethhdr *)msdu->data; in ath12k_dp_rx_h_undecap_eth()
2108 skb_pull(msdu, sizeof(*eth)); in ath12k_dp_rx_h_undecap_eth()
2109 memcpy(skb_push(msdu, sizeof(rfc)), &rfc, in ath12k_dp_rx_h_undecap_eth()
2111 ath12k_get_dot11_hdr_from_rx_desc(ar, msdu, rxcb, status, enctype); in ath12k_dp_rx_h_undecap_eth()
2116 hdr = (struct ieee80211_hdr *)msdu->data; in ath12k_dp_rx_h_undecap_eth()
2121 static void ath12k_dp_rx_h_undecap(struct ath12k *ar, struct sk_buff *msdu, in ath12k_dp_rx_h_undecap() argument
2135 ath12k_dp_rx_h_undecap_nwifi(ar, msdu, enctype, status); in ath12k_dp_rx_h_undecap()
2138 ath12k_dp_rx_h_undecap_raw(ar, msdu, enctype, status, in ath12k_dp_rx_h_undecap()
2142 ehdr = (struct ethhdr *)msdu->data; in ath12k_dp_rx_h_undecap()
2146 ATH12K_SKB_RXCB(msdu)->is_eapol = true; in ath12k_dp_rx_h_undecap()
2147 ath12k_dp_rx_h_undecap_eth(ar, msdu, enctype, status); in ath12k_dp_rx_h_undecap()
2154 if (ATH12K_SKB_RXCB(msdu)->is_mcbc && decrypted) in ath12k_dp_rx_h_undecap()
2155 ath12k_dp_rx_h_undecap_eth(ar, msdu, enctype, status); in ath12k_dp_rx_h_undecap()
2164 ath12k_dp_rx_h_find_peer(struct ath12k_base *ab, struct sk_buff *msdu) in ath12k_dp_rx_h_find_peer() argument
2166 struct ath12k_skb_rxcb *rxcb = ATH12K_SKB_RXCB(msdu); in ath12k_dp_rx_h_find_peer()
2188 struct sk_buff *msdu, in ath12k_dp_rx_h_mpdu() argument
2202 rxcb = ATH12K_SKB_RXCB(msdu); in ath12k_dp_rx_h_mpdu()
2210 peer = ath12k_dp_rx_h_find_peer(ar->ab, msdu); in ath12k_dp_rx_h_mpdu()
2248 ath12k_dp_rx_h_csum_offload(ar, msdu); in ath12k_dp_rx_h_mpdu()
2249 ath12k_dp_rx_h_undecap(ar, msdu, rx_desc, in ath12k_dp_rx_h_mpdu()
2257 hdr = (void *)msdu->data; in ath12k_dp_rx_h_mpdu()
2377 struct sk_buff *msdu, in ath12k_dp_rx_deliver_msdu() argument
2390 struct ath12k_skb_rxcb *rxcb = ATH12K_SKB_RXCB(msdu); in ath12k_dp_rx_deliver_msdu()
2397 he = skb_push(msdu, sizeof(known)); in ath12k_dp_rx_deliver_msdu()
2406 peer = ath12k_dp_rx_h_find_peer(ab, msdu); in ath12k_dp_rx_deliver_msdu()
2414 msdu, in ath12k_dp_rx_deliver_msdu()
2415 msdu->len, in ath12k_dp_rx_deliver_msdu()
2437 msdu->data, msdu->len); in ath12k_dp_rx_deliver_msdu()
2439 rx_status = IEEE80211_SKB_RXCB(msdu); in ath12k_dp_rx_deliver_msdu()
2453 ieee80211_rx_napi(ar->hw, pubsta, msdu, napi); in ath12k_dp_rx_deliver_msdu()
2457 struct sk_buff *msdu, in ath12k_dp_rx_process_msdu() argument
2470 last_buf = ath12k_dp_rx_get_msdu_last_buf(msdu_list, msdu); in ath12k_dp_rx_process_msdu()
2478 rx_desc = (struct hal_rx_desc *)msdu->data; in ath12k_dp_rx_process_msdu()
2486 rxcb = ATH12K_SKB_RXCB(msdu); in ath12k_dp_rx_process_msdu()
2492 skb_pull(msdu, hal_rx_desc_sz); in ath12k_dp_rx_process_msdu()
2501 skb_put(msdu, hal_rx_desc_sz + l3_pad_bytes + msdu_len); in ath12k_dp_rx_process_msdu()
2502 skb_pull(msdu, hal_rx_desc_sz + l3_pad_bytes); in ath12k_dp_rx_process_msdu()
2505 msdu, last_buf, in ath12k_dp_rx_process_msdu()
2515 ath12k_dp_rx_h_mpdu(ar, msdu, rx_desc, rx_status); in ath12k_dp_rx_process_msdu()
2532 struct sk_buff *msdu; in ath12k_dp_rx_process_received_packets() local
2542 while ((msdu = __skb_dequeue(msdu_list))) { in ath12k_dp_rx_process_received_packets()
2543 rxcb = ATH12K_SKB_RXCB(msdu); in ath12k_dp_rx_process_received_packets()
2547 dev_kfree_skb_any(msdu); in ath12k_dp_rx_process_received_packets()
2552 dev_kfree_skb_any(msdu); in ath12k_dp_rx_process_received_packets()
2556 ret = ath12k_dp_rx_process_msdu(ar, msdu, msdu_list, &rx_status); in ath12k_dp_rx_process_received_packets()
2560 dev_kfree_skb_any(msdu); in ath12k_dp_rx_process_received_packets()
2564 ath12k_dp_rx_deliver_msdu(ar, napi, msdu, &rx_status); in ath12k_dp_rx_process_received_packets()
2582 struct sk_buff *msdu; in ath12k_dp_rx_process() local
2622 msdu = desc_info->skb; in ath12k_dp_rx_process()
2629 rxcb = ATH12K_SKB_RXCB(msdu); in ath12k_dp_rx_process()
2631 msdu->len + skb_tailroom(msdu), in ath12k_dp_rx_process()
2640 dev_kfree_skb_any(msdu); in ath12k_dp_rx_process()
2657 __skb_queue_tail(&msdu_list, msdu); in ath12k_dp_rx_process()
2789 struct sk_buff *msdu) in ath12k_dp_rx_h_verify_tkip_mic() argument
2792 struct hal_rx_desc *rx_desc = (struct hal_rx_desc *)msdu->data; in ath12k_dp_rx_h_verify_tkip_mic()
2793 struct ieee80211_rx_status *rxs = IEEE80211_SKB_RXCB(msdu); in ath12k_dp_rx_h_verify_tkip_mic()
2806 hdr = (struct ieee80211_hdr *)(msdu->data + hal_rx_desc_sz); in ath12k_dp_rx_h_verify_tkip_mic()
2818 data = msdu->data + head_len; in ath12k_dp_rx_h_verify_tkip_mic()
2819 data_len = msdu->len - head_len - tail_len; in ath12k_dp_rx_h_verify_tkip_mic()
2829 (ATH12K_SKB_RXCB(msdu))->is_first_msdu = true; in ath12k_dp_rx_h_verify_tkip_mic()
2830 (ATH12K_SKB_RXCB(msdu))->is_last_msdu = true; in ath12k_dp_rx_h_verify_tkip_mic()
2834 skb_pull(msdu, hal_rx_desc_sz); in ath12k_dp_rx_h_verify_tkip_mic()
2837 ath12k_dp_rx_h_undecap(ar, msdu, rx_desc, in ath12k_dp_rx_h_verify_tkip_mic()
2839 ieee80211_rx(ar->hw, msdu); in ath12k_dp_rx_h_verify_tkip_mic()
2843 static void ath12k_dp_rx_h_undecap_frag(struct ath12k *ar, struct sk_buff *msdu, in ath12k_dp_rx_h_undecap_frag() argument
2854 hdr = (struct ieee80211_hdr *)(msdu->data + hal_rx_desc_sz); in ath12k_dp_rx_h_undecap_frag()
2857 skb_trim(msdu, msdu->len - in ath12k_dp_rx_h_undecap_frag()
2861 skb_trim(msdu, msdu->len - in ath12k_dp_rx_h_undecap_frag()
2868 memmove(msdu->data + hal_rx_desc_sz + crypto_len, in ath12k_dp_rx_h_undecap_frag()
2869 msdu->data + hal_rx_desc_sz, hdr_len); in ath12k_dp_rx_h_undecap_frag()
2870 skb_pull(msdu, crypto_len); in ath12k_dp_rx_h_undecap_frag()
3162 struct sk_buff *msdu, in ath12k_dp_rx_frag_h_mpdu() argument
3176 rx_desc = (struct hal_rx_desc *)msdu->data; in ath12k_dp_rx_frag_h_mpdu()
3180 frag_no = ath12k_dp_rx_h_frag_no(ab, msdu); in ath12k_dp_rx_frag_h_mpdu()
3181 more_frags = ath12k_dp_rx_h_more_frags(ab, msdu); in ath12k_dp_rx_frag_h_mpdu()
3220 __skb_queue_tail(&rx_tid->rx_frags, msdu); in ath12k_dp_rx_frag_h_mpdu()
3222 ath12k_dp_rx_h_sort_frags(ab, &rx_tid->rx_frags, msdu); in ath12k_dp_rx_frag_h_mpdu()
3284 struct sk_buff *msdu; in ath12k_dp_process_rx_err_buf() local
3308 msdu = desc_info->skb; in ath12k_dp_process_rx_err_buf()
3314 rxcb = ATH12K_SKB_RXCB(msdu); in ath12k_dp_process_rx_err_buf()
3316 msdu->len + skb_tailroom(msdu), in ath12k_dp_process_rx_err_buf()
3320 dev_kfree_skb_any(msdu); in ath12k_dp_process_rx_err_buf()
3326 dev_kfree_skb_any(msdu); in ath12k_dp_process_rx_err_buf()
3331 dev_kfree_skb_any(msdu); in ath12k_dp_process_rx_err_buf()
3335 rx_desc = (struct hal_rx_desc *)msdu->data; in ath12k_dp_process_rx_err_buf()
3341 dev_kfree_skb_any(msdu); in ath12k_dp_process_rx_err_buf()
3345 skb_put(msdu, hal_rx_desc_sz + msdu_len); in ath12k_dp_process_rx_err_buf()
3347 if (ath12k_dp_rx_frag_h_mpdu(ar, msdu, desc)) { in ath12k_dp_process_rx_err_buf()
3348 dev_kfree_skb_any(msdu); in ath12k_dp_process_rx_err_buf()
3483 static int ath12k_dp_rx_h_null_q_desc(struct ath12k *ar, struct sk_buff *msdu, in ath12k_dp_rx_h_null_q_desc() argument
3489 struct hal_rx_desc *desc = (struct hal_rx_desc *)msdu->data; in ath12k_dp_rx_h_null_q_desc()
3491 struct ath12k_skb_rxcb *rxcb = ATH12K_SKB_RXCB(msdu); in ath12k_dp_rx_h_null_q_desc()
3534 skb_pull(msdu, hal_rx_desc_sz); in ath12k_dp_rx_h_null_q_desc()
3541 skb_put(msdu, hal_rx_desc_sz + l3pad_bytes + msdu_len); in ath12k_dp_rx_h_null_q_desc()
3542 skb_pull(msdu, hal_rx_desc_sz + l3pad_bytes); in ath12k_dp_rx_h_null_q_desc()
3546 ath12k_dp_rx_h_mpdu(ar, msdu, desc, status); in ath12k_dp_rx_h_null_q_desc()
3557 static bool ath12k_dp_rx_h_reo_err(struct ath12k *ar, struct sk_buff *msdu, in ath12k_dp_rx_h_reo_err() argument
3561 struct ath12k_skb_rxcb *rxcb = ATH12K_SKB_RXCB(msdu); in ath12k_dp_rx_h_reo_err()
3568 if (ath12k_dp_rx_h_null_q_desc(ar, msdu, status, msdu_list)) in ath12k_dp_rx_h_reo_err()
3588 static void ath12k_dp_rx_h_tkip_mic_err(struct ath12k *ar, struct sk_buff *msdu, in ath12k_dp_rx_h_tkip_mic_err() argument
3593 struct hal_rx_desc *desc = (struct hal_rx_desc *)msdu->data; in ath12k_dp_rx_h_tkip_mic_err()
3595 struct ath12k_skb_rxcb *rxcb = ATH12K_SKB_RXCB(msdu); in ath12k_dp_rx_h_tkip_mic_err()
3603 skb_put(msdu, hal_rx_desc_sz + l3pad_bytes + msdu_len); in ath12k_dp_rx_h_tkip_mic_err()
3604 skb_pull(msdu, hal_rx_desc_sz + l3pad_bytes); in ath12k_dp_rx_h_tkip_mic_err()
3611 ath12k_dp_rx_h_undecap(ar, msdu, desc, in ath12k_dp_rx_h_tkip_mic_err()
3615 static bool ath12k_dp_rx_h_rxdma_err(struct ath12k *ar, struct sk_buff *msdu, in ath12k_dp_rx_h_rxdma_err() argument
3619 struct ath12k_skb_rxcb *rxcb = ATH12K_SKB_RXCB(msdu); in ath12k_dp_rx_h_rxdma_err()
3620 struct hal_rx_desc *rx_desc = (struct hal_rx_desc *)msdu->data; in ath12k_dp_rx_h_rxdma_err()
3631 ath12k_dp_rx_h_tkip_mic_err(ar, msdu, status); in ath12k_dp_rx_h_rxdma_err()
3648 struct sk_buff *msdu, in ath12k_dp_rx_wbm_err() argument
3651 struct ath12k_skb_rxcb *rxcb = ATH12K_SKB_RXCB(msdu); in ath12k_dp_rx_wbm_err()
3657 drop = ath12k_dp_rx_h_reo_err(ar, msdu, &rxs, msdu_list); in ath12k_dp_rx_wbm_err()
3660 drop = ath12k_dp_rx_h_rxdma_err(ar, msdu, &rxs); in ath12k_dp_rx_wbm_err()
3668 dev_kfree_skb_any(msdu); in ath12k_dp_rx_wbm_err()
3672 ath12k_dp_rx_deliver_msdu(ar, napi, msdu, &rxs); in ath12k_dp_rx_wbm_err()
3683 struct sk_buff *msdu; in ath12k_dp_rx_process_wbm_err() local
3734 msdu = desc_info->skb; in ath12k_dp_rx_process_wbm_err()
3741 rxcb = ATH12K_SKB_RXCB(msdu); in ath12k_dp_rx_process_wbm_err()
3743 msdu->len + skb_tailroom(msdu), in ath12k_dp_rx_process_wbm_err()
3753 dev_kfree_skb_any(msdu); in ath12k_dp_rx_process_wbm_err()
3759 rxcb->rx_desc = (struct hal_rx_desc *)msdu->data; in ath12k_dp_rx_process_wbm_err()
3760 __skb_queue_tail(&msdu_list[mac_id], msdu); in ath12k_dp_rx_process_wbm_err()
3791 while ((msdu = __skb_dequeue(&msdu_list[i])) != NULL) in ath12k_dp_rx_process_wbm_err()
3792 ath12k_dp_rx_wbm_err(ar, napi, msdu, &msdu_list[i]); in ath12k_dp_rx_process_wbm_err()