Lines Matching refs:msdu

1868 static void ath11k_dp_rx_h_csum_offload(struct ath11k *ar, struct sk_buff *msdu)  in ath11k_dp_rx_h_csum_offload()  argument
1870 struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_h_csum_offload()
1878 msdu->ip_summed = (ip_csum_fail || l4_csum_fail) ? in ath11k_dp_rx_h_csum_offload()
1963 struct sk_buff *msdu, in ath11k_dp_rx_h_undecap_nwifi() argument
1968 struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_h_undecap_nwifi()
1978 hdr = (struct ieee80211_hdr *)msdu->data; in ath11k_dp_rx_h_undecap_nwifi()
1982 skb_pull(msdu, ieee80211_hdrlen(hdr->frame_control)); in ath11k_dp_rx_h_undecap_nwifi()
2017 memcpy(skb_push(msdu, in ath11k_dp_rx_h_undecap_nwifi()
2024 memcpy(skb_push(msdu, in ath11k_dp_rx_h_undecap_nwifi()
2027 memcpy(skb_push(msdu, hdr_len), decap_hdr, hdr_len); in ath11k_dp_rx_h_undecap_nwifi()
2031 memcpy(skb_push(msdu, hdr_len), hdr, hdr_len); in ath11k_dp_rx_h_undecap_nwifi()
2036 hdr = (struct ieee80211_hdr *)msdu->data; in ath11k_dp_rx_h_undecap_nwifi()
2041 static void ath11k_dp_rx_h_undecap_raw(struct ath11k *ar, struct sk_buff *msdu, in ath11k_dp_rx_h_undecap_raw() argument
2046 struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_h_undecap_raw()
2057 skb_trim(msdu, msdu->len - FCS_LEN); in ath11k_dp_rx_h_undecap_raw()
2062 hdr = (void *)msdu->data; in ath11k_dp_rx_h_undecap_raw()
2066 skb_trim(msdu, msdu->len - in ath11k_dp_rx_h_undecap_raw()
2069 skb_trim(msdu, msdu->len - in ath11k_dp_rx_h_undecap_raw()
2074 skb_trim(msdu, msdu->len - in ath11k_dp_rx_h_undecap_raw()
2079 skb_trim(msdu, msdu->len - in ath11k_dp_rx_h_undecap_raw()
2087 skb_trim(msdu, msdu->len - IEEE80211_CCMP_MIC_LEN); in ath11k_dp_rx_h_undecap_raw()
2094 memmove((void *)msdu->data + crypto_len, in ath11k_dp_rx_h_undecap_raw()
2095 (void *)msdu->data, hdr_len); in ath11k_dp_rx_h_undecap_raw()
2096 skb_pull(msdu, crypto_len); in ath11k_dp_rx_h_undecap_raw()
2101 struct sk_buff *msdu, in ath11k_dp_rx_h_find_rfc1042() argument
2104 struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_h_find_rfc1042()
2128 struct sk_buff *msdu, in ath11k_dp_rx_h_undecap_eth() argument
2140 rfc1042 = ath11k_dp_rx_h_find_rfc1042(ar, msdu, enctype); in ath11k_dp_rx_h_undecap_eth()
2145 eth = (struct ethhdr *)msdu->data; in ath11k_dp_rx_h_undecap_eth()
2148 skb_pull(msdu, sizeof(struct ethhdr)); in ath11k_dp_rx_h_undecap_eth()
2151 memcpy(skb_push(msdu, sizeof(struct ath11k_dp_rfc1042_hdr)), rfc1042, in ath11k_dp_rx_h_undecap_eth()
2159 memcpy(skb_push(msdu, in ath11k_dp_rx_h_undecap_eth()
2165 memcpy(skb_push(msdu, hdr_len), hdr, hdr_len); in ath11k_dp_rx_h_undecap_eth()
2170 hdr = (struct ieee80211_hdr *)msdu->data; in ath11k_dp_rx_h_undecap_eth()
2175 static void ath11k_dp_rx_h_undecap(struct ath11k *ar, struct sk_buff *msdu, in ath11k_dp_rx_h_undecap() argument
2190 ath11k_dp_rx_h_undecap_nwifi(ar, msdu, first_hdr, in ath11k_dp_rx_h_undecap()
2194 ath11k_dp_rx_h_undecap_raw(ar, msdu, enctype, status, in ath11k_dp_rx_h_undecap()
2198 ehdr = (struct ethhdr *)msdu->data; in ath11k_dp_rx_h_undecap()
2202 ATH11K_SKB_RXCB(msdu)->is_eapol = true; in ath11k_dp_rx_h_undecap()
2203 ath11k_dp_rx_h_undecap_eth(ar, msdu, first_hdr, in ath11k_dp_rx_h_undecap()
2211 if (ATH11K_SKB_RXCB(msdu)->is_mcbc && decrypted) in ath11k_dp_rx_h_undecap()
2212 ath11k_dp_rx_h_undecap_eth(ar, msdu, first_hdr, in ath11k_dp_rx_h_undecap()
2222 ath11k_dp_rx_h_find_peer(struct ath11k_base *ab, struct sk_buff *msdu) in ath11k_dp_rx_h_find_peer() argument
2224 struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_h_find_peer()
2245 struct sk_buff *msdu, in ath11k_dp_rx_h_mpdu() argument
2259 rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_h_mpdu()
2269 peer = ath11k_dp_rx_h_find_peer(ar->ab, msdu); in ath11k_dp_rx_h_mpdu()
2308 ath11k_dp_rx_h_csum_offload(ar, msdu); in ath11k_dp_rx_h_mpdu()
2309 ath11k_dp_rx_h_undecap(ar, msdu, rx_desc, in ath11k_dp_rx_h_mpdu()
2317 hdr = (void *)msdu->data; in ath11k_dp_rx_h_mpdu()
2437 struct sk_buff *msdu, in ath11k_dp_rx_deliver_msdu() argument
2449 struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_deliver_msdu()
2457 he = skb_push(msdu, sizeof(known)); in ath11k_dp_rx_deliver_msdu()
2466 peer = ath11k_dp_rx_h_find_peer(ar->ab, msdu); in ath11k_dp_rx_deliver_msdu()
2473 msdu, in ath11k_dp_rx_deliver_msdu()
2474 msdu->len, in ath11k_dp_rx_deliver_msdu()
2496 msdu->data, msdu->len); in ath11k_dp_rx_deliver_msdu()
2498 rx_status = IEEE80211_SKB_RXCB(msdu); in ath11k_dp_rx_deliver_msdu()
2512 ieee80211_rx_napi(ar->hw, pubsta, msdu, napi); in ath11k_dp_rx_deliver_msdu()
2516 struct sk_buff *msdu, in ath11k_dp_rx_process_msdu() argument
2531 last_buf = ath11k_dp_rx_get_msdu_last_buf(msdu_list, msdu); in ath11k_dp_rx_process_msdu()
2539 rx_desc = (struct hal_rx_desc *)msdu->data; in ath11k_dp_rx_process_msdu()
2554 rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_process_msdu()
2560 skb_pull(msdu, hal_rx_desc_sz); in ath11k_dp_rx_process_msdu()
2572 skb_put(msdu, hal_rx_desc_sz + l3_pad_bytes + msdu_len); in ath11k_dp_rx_process_msdu()
2573 skb_pull(msdu, hal_rx_desc_sz + l3_pad_bytes); in ath11k_dp_rx_process_msdu()
2576 msdu, last_buf, in ath11k_dp_rx_process_msdu()
2586 ath11k_dp_rx_h_mpdu(ar, msdu, rx_desc, rx_status); in ath11k_dp_rx_process_msdu()
2602 struct sk_buff *msdu; in ath11k_dp_rx_process_received_packets() local
2613 while (*quota && (msdu = __skb_dequeue(msdu_list))) { in ath11k_dp_rx_process_received_packets()
2614 rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_process_received_packets()
2618 dev_kfree_skb_any(msdu); in ath11k_dp_rx_process_received_packets()
2623 dev_kfree_skb_any(msdu); in ath11k_dp_rx_process_received_packets()
2627 ret = ath11k_dp_rx_process_msdu(ar, msdu, msdu_list, &rx_status); in ath11k_dp_rx_process_received_packets()
2631 dev_kfree_skb_any(msdu); in ath11k_dp_rx_process_received_packets()
2635 ath11k_dp_rx_deliver_msdu(ar, napi, msdu, &rx_status); in ath11k_dp_rx_process_received_packets()
2652 struct sk_buff *msdu; in ath11k_dp_process_rx() local
2683 msdu = idr_find(&rx_ring->bufs_idr, buf_id); in ath11k_dp_process_rx()
2684 if (!msdu) { in ath11k_dp_process_rx()
2694 rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_process_rx()
2696 msdu->len + skb_tailroom(msdu), in ath11k_dp_process_rx()
2706 dev_kfree_skb_any(msdu); in ath11k_dp_process_rx()
2725 __skb_queue_tail(&msdu_list, msdu); in ath11k_dp_process_rx()
3209 struct sk_buff *msdu) in ath11k_dp_rx_h_verify_tkip_mic() argument
3211 struct hal_rx_desc *rx_desc = (struct hal_rx_desc *)msdu->data; in ath11k_dp_rx_h_verify_tkip_mic()
3212 struct ieee80211_rx_status *rxs = IEEE80211_SKB_RXCB(msdu); in ath11k_dp_rx_h_verify_tkip_mic()
3226 hdr = (struct ieee80211_hdr *)(msdu->data + hal_rx_desc_sz); in ath11k_dp_rx_h_verify_tkip_mic()
3238 data = msdu->data + head_len; in ath11k_dp_rx_h_verify_tkip_mic()
3239 data_len = msdu->len - head_len - tail_len; in ath11k_dp_rx_h_verify_tkip_mic()
3249 (ATH11K_SKB_RXCB(msdu))->is_first_msdu = true; in ath11k_dp_rx_h_verify_tkip_mic()
3250 (ATH11K_SKB_RXCB(msdu))->is_last_msdu = true; in ath11k_dp_rx_h_verify_tkip_mic()
3254 skb_pull(msdu, hal_rx_desc_sz); in ath11k_dp_rx_h_verify_tkip_mic()
3257 ath11k_dp_rx_h_undecap(ar, msdu, rx_desc, in ath11k_dp_rx_h_verify_tkip_mic()
3259 ieee80211_rx(ar->hw, msdu); in ath11k_dp_rx_h_verify_tkip_mic()
3263 static void ath11k_dp_rx_h_undecap_frag(struct ath11k *ar, struct sk_buff *msdu, in ath11k_dp_rx_h_undecap_frag() argument
3274 hdr = (struct ieee80211_hdr *)(msdu->data + hal_rx_desc_sz); in ath11k_dp_rx_h_undecap_frag()
3277 skb_trim(msdu, msdu->len - in ath11k_dp_rx_h_undecap_frag()
3281 skb_trim(msdu, msdu->len - in ath11k_dp_rx_h_undecap_frag()
3288 memmove((void *)msdu->data + hal_rx_desc_sz + crypto_len, in ath11k_dp_rx_h_undecap_frag()
3289 (void *)msdu->data + hal_rx_desc_sz, hdr_len); in ath11k_dp_rx_h_undecap_frag()
3290 skb_pull(msdu, crypto_len); in ath11k_dp_rx_h_undecap_frag()
3559 struct sk_buff *msdu, in ath11k_dp_rx_frag_h_mpdu() argument
3574 rx_desc = (struct hal_rx_desc *)msdu->data; in ath11k_dp_rx_frag_h_mpdu()
3578 frag_no = ath11k_dp_rx_h_mpdu_start_frag_no(ar->ab, msdu); in ath11k_dp_rx_frag_h_mpdu()
3579 more_frags = ath11k_dp_rx_h_mpdu_start_more_frags(ar->ab, msdu); in ath11k_dp_rx_frag_h_mpdu()
3623 __skb_queue_tail(&rx_tid->rx_frags, msdu); in ath11k_dp_rx_frag_h_mpdu()
3625 ath11k_dp_rx_h_sort_frags(ar, &rx_tid->rx_frags, msdu); in ath11k_dp_rx_frag_h_mpdu()
3687 struct sk_buff *msdu; in ath11k_dp_process_rx_err_buf() local
3695 msdu = idr_find(&rx_ring->bufs_idr, buf_id); in ath11k_dp_process_rx_err_buf()
3696 if (!msdu) { in ath11k_dp_process_rx_err_buf()
3706 rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_process_rx_err_buf()
3708 msdu->len + skb_tailroom(msdu), in ath11k_dp_process_rx_err_buf()
3712 dev_kfree_skb_any(msdu); in ath11k_dp_process_rx_err_buf()
3718 dev_kfree_skb_any(msdu); in ath11k_dp_process_rx_err_buf()
3723 dev_kfree_skb_any(msdu); in ath11k_dp_process_rx_err_buf()
3727 rx_desc = (struct hal_rx_desc *)msdu->data; in ath11k_dp_process_rx_err_buf()
3736 dev_kfree_skb_any(msdu); in ath11k_dp_process_rx_err_buf()
3740 skb_put(msdu, hal_rx_desc_sz + msdu_len); in ath11k_dp_process_rx_err_buf()
3742 if (ath11k_dp_rx_frag_h_mpdu(ar, msdu, ring_desc)) { in ath11k_dp_process_rx_err_buf()
3743 dev_kfree_skb_any(msdu); in ath11k_dp_process_rx_err_buf()
3889 static int ath11k_dp_rx_h_null_q_desc(struct ath11k *ar, struct sk_buff *msdu, in ath11k_dp_rx_h_null_q_desc() argument
3894 struct hal_rx_desc *desc = (struct hal_rx_desc *)msdu->data; in ath11k_dp_rx_h_null_q_desc()
3897 struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_h_null_q_desc()
3930 skb_pull(msdu, hal_rx_desc_sz); in ath11k_dp_rx_h_null_q_desc()
3937 skb_put(msdu, hal_rx_desc_sz + l3pad_bytes + msdu_len); in ath11k_dp_rx_h_null_q_desc()
3938 skb_pull(msdu, hal_rx_desc_sz + l3pad_bytes); in ath11k_dp_rx_h_null_q_desc()
3942 ath11k_dp_rx_h_mpdu(ar, msdu, desc, status); in ath11k_dp_rx_h_null_q_desc()
3953 static bool ath11k_dp_rx_h_reo_err(struct ath11k *ar, struct sk_buff *msdu, in ath11k_dp_rx_h_reo_err() argument
3957 struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_h_reo_err()
3964 if (ath11k_dp_rx_h_null_q_desc(ar, msdu, status, msdu_list)) in ath11k_dp_rx_h_reo_err()
3984 static void ath11k_dp_rx_h_tkip_mic_err(struct ath11k *ar, struct sk_buff *msdu, in ath11k_dp_rx_h_tkip_mic_err() argument
3988 struct hal_rx_desc *desc = (struct hal_rx_desc *)msdu->data; in ath11k_dp_rx_h_tkip_mic_err()
3990 struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_h_tkip_mic_err()
3998 skb_put(msdu, hal_rx_desc_sz + l3pad_bytes + msdu_len); in ath11k_dp_rx_h_tkip_mic_err()
3999 skb_pull(msdu, hal_rx_desc_sz + l3pad_bytes); in ath11k_dp_rx_h_tkip_mic_err()
4006 ath11k_dp_rx_h_undecap(ar, msdu, desc, in ath11k_dp_rx_h_tkip_mic_err()
4010 static bool ath11k_dp_rx_h_rxdma_err(struct ath11k *ar, struct sk_buff *msdu, in ath11k_dp_rx_h_rxdma_err() argument
4013 struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_h_rxdma_err()
4020 ath11k_dp_rx_h_tkip_mic_err(ar, msdu, status); in ath11k_dp_rx_h_rxdma_err()
4035 struct sk_buff *msdu, in ath11k_dp_rx_wbm_err() argument
4038 struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_wbm_err()
4044 drop = ath11k_dp_rx_h_reo_err(ar, msdu, &rxs, msdu_list); in ath11k_dp_rx_wbm_err()
4047 drop = ath11k_dp_rx_h_rxdma_err(ar, msdu, &rxs); in ath11k_dp_rx_wbm_err()
4055 dev_kfree_skb_any(msdu); in ath11k_dp_rx_wbm_err()
4059 ath11k_dp_rx_deliver_msdu(ar, napi, msdu, &rxs); in ath11k_dp_rx_wbm_err()
4070 struct sk_buff *msdu; in ath11k_dp_rx_process_wbm_err() local
4108 msdu = idr_find(&rx_ring->bufs_idr, buf_id); in ath11k_dp_rx_process_wbm_err()
4109 if (!msdu) { in ath11k_dp_rx_process_wbm_err()
4119 rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_process_wbm_err()
4121 msdu->len + skb_tailroom(msdu), in ath11k_dp_rx_process_wbm_err()
4130 dev_kfree_skb_any(msdu); in ath11k_dp_rx_process_wbm_err()
4136 rxcb->rx_desc = (struct hal_rx_desc *)msdu->data; in ath11k_dp_rx_process_wbm_err()
4137 __skb_queue_tail(&msdu_list[mac_id], msdu); in ath11k_dp_rx_process_wbm_err()
4172 while ((msdu = __skb_dequeue(&msdu_list[i])) != NULL) in ath11k_dp_rx_process_wbm_err()
4173 ath11k_dp_rx_wbm_err(ar, napi, msdu, &msdu_list[i]); in ath11k_dp_rx_process_wbm_err()
4632 struct sk_buff *msdu = NULL, *last = NULL; in ath11k_dp_rx_mon_mpdu_pop() local
4710 msdu = idr_find(&rx_ring->bufs_idr, buf_id); in ath11k_dp_rx_mon_mpdu_pop()
4712 if (!msdu) { in ath11k_dp_rx_mon_mpdu_pop()
4717 rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_mon_mpdu_pop()
4720 msdu->len + in ath11k_dp_rx_mon_mpdu_pop()
4721 skb_tailroom(msdu), in ath11k_dp_rx_mon_mpdu_pop()
4728 i, msdu, *ppdu_id); in ath11k_dp_rx_mon_mpdu_pop()
4729 dev_kfree_skb_any(msdu); in ath11k_dp_rx_mon_mpdu_pop()
4730 msdu = NULL; in ath11k_dp_rx_mon_mpdu_pop()
4734 rx_desc = (struct hal_rx_desc *)msdu->data; in ath11k_dp_rx_mon_mpdu_pop()
4742 dev_kfree_skb_any(msdu); in ath11k_dp_rx_mon_mpdu_pop()
4743 msdu = NULL; in ath11k_dp_rx_mon_mpdu_pop()
4756 dev_kfree_skb_any(msdu); in ath11k_dp_rx_mon_mpdu_pop()
4757 msdu = NULL; in ath11k_dp_rx_mon_mpdu_pop()
4770 ath11k_dp_pkt_set_pktlen(msdu, rx_buf_size); in ath11k_dp_rx_mon_mpdu_pop()
4773 *head_msdu = msdu; in ath11k_dp_rx_mon_mpdu_pop()
4775 last->next = msdu; in ath11k_dp_rx_mon_mpdu_pop()
4777 last = msdu; in ath11k_dp_rx_mon_mpdu_pop()
4810 *tail_msdu = msdu; in ath11k_dp_rx_mon_mpdu_pop()
4818 static void ath11k_dp_rx_msdus_set_payload(struct ath11k *ar, struct sk_buff *msdu) in ath11k_dp_rx_msdus_set_payload() argument
4824 (struct hal_rx_desc *)msdu->data); in ath11k_dp_rx_msdus_set_payload()
4825 skb_pull(msdu, rx_pkt_offset + l2_hdr_offset); in ath11k_dp_rx_msdus_set_payload()
4835 struct sk_buff *msdu, *prev_buf; in ath11k_dp_rx_mon_merg_msdus() local
4860 msdu = head_msdu->next; in ath11k_dp_rx_mon_merg_msdus()
4862 while (msdu) { in ath11k_dp_rx_mon_merg_msdus()
4863 ath11k_dp_rx_msdus_set_payload(ar, msdu); in ath11k_dp_rx_mon_merg_msdus()
4865 prev_buf = msdu; in ath11k_dp_rx_mon_merg_msdus()
4866 msdu = msdu->next; in ath11k_dp_rx_mon_merg_msdus()
4890 msdu = head_msdu; in ath11k_dp_rx_mon_merg_msdus()
4892 while (msdu) { in ath11k_dp_rx_mon_merg_msdus()
4893 rx_desc = (struct hal_rx_desc *)msdu->data; in ath11k_dp_rx_mon_merg_msdus()
4897 dest = skb_push(msdu, sizeof(__le16)); in ath11k_dp_rx_mon_merg_msdus()
4904 ath11k_dp_rx_msdus_set_payload(ar, msdu); in ath11k_dp_rx_mon_merg_msdus()
4905 prev_buf = msdu; in ath11k_dp_rx_mon_merg_msdus()
4906 msdu = msdu->next; in ath11k_dp_rx_mon_merg_msdus()