Lines Matching refs:msdu
1857 static void ath11k_dp_rx_h_csum_offload(struct ath11k *ar, struct sk_buff *msdu) in ath11k_dp_rx_h_csum_offload() argument
1859 struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_h_csum_offload()
1867 msdu->ip_summed = (ip_csum_fail || l4_csum_fail) ? in ath11k_dp_rx_h_csum_offload()
1951 struct sk_buff *msdu, in ath11k_dp_rx_h_undecap_nwifi() argument
1956 struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_h_undecap_nwifi()
1966 hdr = (struct ieee80211_hdr *)msdu->data; in ath11k_dp_rx_h_undecap_nwifi()
1970 skb_pull(msdu, ieee80211_hdrlen(hdr->frame_control)); in ath11k_dp_rx_h_undecap_nwifi()
2005 memcpy(skb_push(msdu, in ath11k_dp_rx_h_undecap_nwifi()
2012 memcpy(skb_push(msdu, in ath11k_dp_rx_h_undecap_nwifi()
2015 memcpy(skb_push(msdu, hdr_len), decap_hdr, hdr_len); in ath11k_dp_rx_h_undecap_nwifi()
2019 memcpy(skb_push(msdu, hdr_len), hdr, hdr_len); in ath11k_dp_rx_h_undecap_nwifi()
2024 hdr = (struct ieee80211_hdr *)msdu->data; in ath11k_dp_rx_h_undecap_nwifi()
2029 static void ath11k_dp_rx_h_undecap_raw(struct ath11k *ar, struct sk_buff *msdu, in ath11k_dp_rx_h_undecap_raw() argument
2034 struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_h_undecap_raw()
2045 skb_trim(msdu, msdu->len - FCS_LEN); in ath11k_dp_rx_h_undecap_raw()
2050 hdr = (void *)msdu->data; in ath11k_dp_rx_h_undecap_raw()
2054 skb_trim(msdu, msdu->len - in ath11k_dp_rx_h_undecap_raw()
2057 skb_trim(msdu, msdu->len - in ath11k_dp_rx_h_undecap_raw()
2062 skb_trim(msdu, msdu->len - in ath11k_dp_rx_h_undecap_raw()
2067 skb_trim(msdu, msdu->len - in ath11k_dp_rx_h_undecap_raw()
2075 skb_trim(msdu, msdu->len - IEEE80211_CCMP_MIC_LEN); in ath11k_dp_rx_h_undecap_raw()
2082 memmove((void *)msdu->data + crypto_len, in ath11k_dp_rx_h_undecap_raw()
2083 (void *)msdu->data, hdr_len); in ath11k_dp_rx_h_undecap_raw()
2084 skb_pull(msdu, crypto_len); in ath11k_dp_rx_h_undecap_raw()
2089 struct sk_buff *msdu, in ath11k_dp_rx_h_find_rfc1042() argument
2092 struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_h_find_rfc1042()
2116 struct sk_buff *msdu, in ath11k_dp_rx_h_undecap_eth() argument
2128 rfc1042 = ath11k_dp_rx_h_find_rfc1042(ar, msdu, enctype); in ath11k_dp_rx_h_undecap_eth()
2133 eth = (struct ethhdr *)msdu->data; in ath11k_dp_rx_h_undecap_eth()
2136 skb_pull(msdu, sizeof(struct ethhdr)); in ath11k_dp_rx_h_undecap_eth()
2139 memcpy(skb_push(msdu, sizeof(struct ath11k_dp_rfc1042_hdr)), rfc1042, in ath11k_dp_rx_h_undecap_eth()
2147 memcpy(skb_push(msdu, in ath11k_dp_rx_h_undecap_eth()
2153 memcpy(skb_push(msdu, hdr_len), hdr, hdr_len); in ath11k_dp_rx_h_undecap_eth()
2158 hdr = (struct ieee80211_hdr *)msdu->data; in ath11k_dp_rx_h_undecap_eth()
2163 static void ath11k_dp_rx_h_undecap(struct ath11k *ar, struct sk_buff *msdu, in ath11k_dp_rx_h_undecap() argument
2178 ath11k_dp_rx_h_undecap_nwifi(ar, msdu, first_hdr, in ath11k_dp_rx_h_undecap()
2182 ath11k_dp_rx_h_undecap_raw(ar, msdu, enctype, status, in ath11k_dp_rx_h_undecap()
2186 ehdr = (struct ethhdr *)msdu->data; in ath11k_dp_rx_h_undecap()
2190 ATH11K_SKB_RXCB(msdu)->is_eapol = true; in ath11k_dp_rx_h_undecap()
2191 ath11k_dp_rx_h_undecap_eth(ar, msdu, first_hdr, in ath11k_dp_rx_h_undecap()
2199 if (ATH11K_SKB_RXCB(msdu)->is_mcbc && decrypted) in ath11k_dp_rx_h_undecap()
2200 ath11k_dp_rx_h_undecap_eth(ar, msdu, first_hdr, in ath11k_dp_rx_h_undecap()
2210 ath11k_dp_rx_h_find_peer(struct ath11k_base *ab, struct sk_buff *msdu) in ath11k_dp_rx_h_find_peer() argument
2212 struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_h_find_peer()
2233 struct sk_buff *msdu, in ath11k_dp_rx_h_mpdu() argument
2247 rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_h_mpdu()
2257 peer = ath11k_dp_rx_h_find_peer(ar->ab, msdu); in ath11k_dp_rx_h_mpdu()
2296 ath11k_dp_rx_h_csum_offload(ar, msdu); in ath11k_dp_rx_h_mpdu()
2297 ath11k_dp_rx_h_undecap(ar, msdu, rx_desc, in ath11k_dp_rx_h_mpdu()
2305 hdr = (void *)msdu->data; in ath11k_dp_rx_h_mpdu()
2428 struct sk_buff *msdu, in ath11k_dp_rx_deliver_msdu() argument
2440 struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_deliver_msdu()
2448 he = skb_push(msdu, sizeof(known)); in ath11k_dp_rx_deliver_msdu()
2457 peer = ath11k_dp_rx_h_find_peer(ar->ab, msdu); in ath11k_dp_rx_deliver_msdu()
2464 msdu, in ath11k_dp_rx_deliver_msdu()
2465 msdu->len, in ath11k_dp_rx_deliver_msdu()
2487 msdu->data, msdu->len); in ath11k_dp_rx_deliver_msdu()
2489 rx_status = IEEE80211_SKB_RXCB(msdu); in ath11k_dp_rx_deliver_msdu()
2503 ieee80211_rx_napi(ar->hw, pubsta, msdu, napi); in ath11k_dp_rx_deliver_msdu()
2507 struct sk_buff *msdu, in ath11k_dp_rx_process_msdu() argument
2522 last_buf = ath11k_dp_rx_get_msdu_last_buf(msdu_list, msdu); in ath11k_dp_rx_process_msdu()
2530 rx_desc = (struct hal_rx_desc *)msdu->data; in ath11k_dp_rx_process_msdu()
2545 rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_process_msdu()
2551 skb_pull(msdu, hal_rx_desc_sz); in ath11k_dp_rx_process_msdu()
2563 skb_put(msdu, hal_rx_desc_sz + l3_pad_bytes + msdu_len); in ath11k_dp_rx_process_msdu()
2564 skb_pull(msdu, hal_rx_desc_sz + l3_pad_bytes); in ath11k_dp_rx_process_msdu()
2567 msdu, last_buf, in ath11k_dp_rx_process_msdu()
2577 ath11k_dp_rx_h_mpdu(ar, msdu, rx_desc, rx_status); in ath11k_dp_rx_process_msdu()
2592 struct sk_buff *msdu; in ath11k_dp_rx_process_received_packets() local
2611 while ((msdu = __skb_dequeue(msdu_list))) { in ath11k_dp_rx_process_received_packets()
2612 ret = ath11k_dp_rx_process_msdu(ar, msdu, msdu_list, &rx_status); in ath11k_dp_rx_process_received_packets()
2616 dev_kfree_skb_any(msdu); in ath11k_dp_rx_process_received_packets()
2620 ath11k_dp_rx_deliver_msdu(ar, napi, msdu, &rx_status); in ath11k_dp_rx_process_received_packets()
2634 struct sk_buff *msdu; in ath11k_dp_process_rx() local
2668 msdu = idr_find(&rx_ring->bufs_idr, buf_id); in ath11k_dp_process_rx()
2669 if (unlikely(!msdu)) { in ath11k_dp_process_rx()
2679 rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_process_rx()
2681 msdu->len + skb_tailroom(msdu), in ath11k_dp_process_rx()
2690 dev_kfree_skb_any(msdu); in ath11k_dp_process_rx()
2709 __skb_queue_tail(&msdu_list[mac_id], msdu); in ath11k_dp_process_rx()
3264 struct sk_buff *msdu) in ath11k_dp_rx_h_verify_tkip_mic() argument
3266 struct hal_rx_desc *rx_desc = (struct hal_rx_desc *)msdu->data; in ath11k_dp_rx_h_verify_tkip_mic()
3267 struct ieee80211_rx_status *rxs = IEEE80211_SKB_RXCB(msdu); in ath11k_dp_rx_h_verify_tkip_mic()
3281 hdr = (struct ieee80211_hdr *)(msdu->data + hal_rx_desc_sz); in ath11k_dp_rx_h_verify_tkip_mic()
3293 data = msdu->data + head_len; in ath11k_dp_rx_h_verify_tkip_mic()
3294 data_len = msdu->len - head_len - tail_len; in ath11k_dp_rx_h_verify_tkip_mic()
3304 (ATH11K_SKB_RXCB(msdu))->is_first_msdu = true; in ath11k_dp_rx_h_verify_tkip_mic()
3305 (ATH11K_SKB_RXCB(msdu))->is_last_msdu = true; in ath11k_dp_rx_h_verify_tkip_mic()
3309 skb_pull(msdu, hal_rx_desc_sz); in ath11k_dp_rx_h_verify_tkip_mic()
3312 ath11k_dp_rx_h_undecap(ar, msdu, rx_desc, in ath11k_dp_rx_h_verify_tkip_mic()
3314 ieee80211_rx(ar->hw, msdu); in ath11k_dp_rx_h_verify_tkip_mic()
3318 static void ath11k_dp_rx_h_undecap_frag(struct ath11k *ar, struct sk_buff *msdu, in ath11k_dp_rx_h_undecap_frag() argument
3329 hdr = (struct ieee80211_hdr *)(msdu->data + hal_rx_desc_sz); in ath11k_dp_rx_h_undecap_frag()
3332 skb_trim(msdu, msdu->len - in ath11k_dp_rx_h_undecap_frag()
3336 skb_trim(msdu, msdu->len - in ath11k_dp_rx_h_undecap_frag()
3343 memmove((void *)msdu->data + hal_rx_desc_sz + crypto_len, in ath11k_dp_rx_h_undecap_frag()
3344 (void *)msdu->data + hal_rx_desc_sz, hdr_len); in ath11k_dp_rx_h_undecap_frag()
3345 skb_pull(msdu, crypto_len); in ath11k_dp_rx_h_undecap_frag()
3614 struct sk_buff *msdu, in ath11k_dp_rx_frag_h_mpdu() argument
3629 rx_desc = (struct hal_rx_desc *)msdu->data; in ath11k_dp_rx_frag_h_mpdu()
3633 frag_no = ath11k_dp_rx_h_mpdu_start_frag_no(ar->ab, msdu); in ath11k_dp_rx_frag_h_mpdu()
3634 more_frags = ath11k_dp_rx_h_mpdu_start_more_frags(ar->ab, msdu); in ath11k_dp_rx_frag_h_mpdu()
3685 __skb_queue_tail(&rx_tid->rx_frags, msdu); in ath11k_dp_rx_frag_h_mpdu()
3687 ath11k_dp_rx_h_sort_frags(ar, &rx_tid->rx_frags, msdu); in ath11k_dp_rx_frag_h_mpdu()
3749 struct sk_buff *msdu; in ath11k_dp_process_rx_err_buf() local
3757 msdu = idr_find(&rx_ring->bufs_idr, buf_id); in ath11k_dp_process_rx_err_buf()
3758 if (!msdu) { in ath11k_dp_process_rx_err_buf()
3768 rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_process_rx_err_buf()
3770 msdu->len + skb_tailroom(msdu), in ath11k_dp_process_rx_err_buf()
3774 dev_kfree_skb_any(msdu); in ath11k_dp_process_rx_err_buf()
3780 dev_kfree_skb_any(msdu); in ath11k_dp_process_rx_err_buf()
3785 dev_kfree_skb_any(msdu); in ath11k_dp_process_rx_err_buf()
3789 rx_desc = (struct hal_rx_desc *)msdu->data; in ath11k_dp_process_rx_err_buf()
3798 dev_kfree_skb_any(msdu); in ath11k_dp_process_rx_err_buf()
3802 skb_put(msdu, hal_rx_desc_sz + msdu_len); in ath11k_dp_process_rx_err_buf()
3804 if (ath11k_dp_rx_frag_h_mpdu(ar, msdu, ring_desc)) { in ath11k_dp_process_rx_err_buf()
3805 dev_kfree_skb_any(msdu); in ath11k_dp_process_rx_err_buf()
3952 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
3957 struct hal_rx_desc *desc = (struct hal_rx_desc *)msdu->data; in ath11k_dp_rx_h_null_q_desc()
3960 struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_h_null_q_desc()
3993 skb_pull(msdu, hal_rx_desc_sz); in ath11k_dp_rx_h_null_q_desc()
4000 skb_put(msdu, hal_rx_desc_sz + l3pad_bytes + msdu_len); in ath11k_dp_rx_h_null_q_desc()
4001 skb_pull(msdu, hal_rx_desc_sz + l3pad_bytes); in ath11k_dp_rx_h_null_q_desc()
4005 ath11k_dp_rx_h_mpdu(ar, msdu, desc, status); in ath11k_dp_rx_h_null_q_desc()
4016 static bool ath11k_dp_rx_h_reo_err(struct ath11k *ar, struct sk_buff *msdu, in ath11k_dp_rx_h_reo_err() argument
4020 struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_h_reo_err()
4027 if (ath11k_dp_rx_h_null_q_desc(ar, msdu, status, msdu_list)) in ath11k_dp_rx_h_reo_err()
4047 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
4051 struct hal_rx_desc *desc = (struct hal_rx_desc *)msdu->data; in ath11k_dp_rx_h_tkip_mic_err()
4053 struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_h_tkip_mic_err()
4061 skb_put(msdu, hal_rx_desc_sz + l3pad_bytes + msdu_len); in ath11k_dp_rx_h_tkip_mic_err()
4062 skb_pull(msdu, hal_rx_desc_sz + l3pad_bytes); in ath11k_dp_rx_h_tkip_mic_err()
4069 ath11k_dp_rx_h_undecap(ar, msdu, desc, in ath11k_dp_rx_h_tkip_mic_err()
4073 static bool ath11k_dp_rx_h_rxdma_err(struct ath11k *ar, struct sk_buff *msdu, in ath11k_dp_rx_h_rxdma_err() argument
4076 struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_h_rxdma_err()
4083 ath11k_dp_rx_h_tkip_mic_err(ar, msdu, status); in ath11k_dp_rx_h_rxdma_err()
4098 struct sk_buff *msdu, in ath11k_dp_rx_wbm_err() argument
4101 struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_wbm_err()
4107 drop = ath11k_dp_rx_h_reo_err(ar, msdu, &rxs, msdu_list); in ath11k_dp_rx_wbm_err()
4110 drop = ath11k_dp_rx_h_rxdma_err(ar, msdu, &rxs); in ath11k_dp_rx_wbm_err()
4118 dev_kfree_skb_any(msdu); in ath11k_dp_rx_wbm_err()
4122 ath11k_dp_rx_deliver_msdu(ar, napi, msdu, &rxs); in ath11k_dp_rx_wbm_err()
4133 struct sk_buff *msdu; in ath11k_dp_rx_process_wbm_err() local
4171 msdu = idr_find(&rx_ring->bufs_idr, buf_id); in ath11k_dp_rx_process_wbm_err()
4172 if (!msdu) { in ath11k_dp_rx_process_wbm_err()
4182 rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_process_wbm_err()
4184 msdu->len + skb_tailroom(msdu), in ath11k_dp_rx_process_wbm_err()
4193 dev_kfree_skb_any(msdu); in ath11k_dp_rx_process_wbm_err()
4199 rxcb->rx_desc = (struct hal_rx_desc *)msdu->data; in ath11k_dp_rx_process_wbm_err()
4200 __skb_queue_tail(&msdu_list[mac_id], msdu); in ath11k_dp_rx_process_wbm_err()
4235 while ((msdu = __skb_dequeue(&msdu_list[i])) != NULL) in ath11k_dp_rx_process_wbm_err()
4236 ath11k_dp_rx_wbm_err(ar, napi, msdu, &msdu_list[i]); in ath11k_dp_rx_process_wbm_err()
4694 struct sk_buff *msdu = NULL, *last = NULL; in ath11k_dp_rx_mon_mpdu_pop() local
4771 msdu = idr_find(&rx_ring->bufs_idr, buf_id); in ath11k_dp_rx_mon_mpdu_pop()
4773 if (!msdu) { in ath11k_dp_rx_mon_mpdu_pop()
4778 rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_mon_mpdu_pop()
4781 msdu->len + in ath11k_dp_rx_mon_mpdu_pop()
4782 skb_tailroom(msdu), in ath11k_dp_rx_mon_mpdu_pop()
4789 i, msdu, *ppdu_id); in ath11k_dp_rx_mon_mpdu_pop()
4790 dev_kfree_skb_any(msdu); in ath11k_dp_rx_mon_mpdu_pop()
4791 msdu = NULL; in ath11k_dp_rx_mon_mpdu_pop()
4795 rx_desc = (struct hal_rx_desc *)msdu->data; in ath11k_dp_rx_mon_mpdu_pop()
4803 dev_kfree_skb_any(msdu); in ath11k_dp_rx_mon_mpdu_pop()
4804 msdu = NULL; in ath11k_dp_rx_mon_mpdu_pop()
4817 dev_kfree_skb_any(msdu); in ath11k_dp_rx_mon_mpdu_pop()
4818 msdu = NULL; in ath11k_dp_rx_mon_mpdu_pop()
4831 ath11k_dp_pkt_set_pktlen(msdu, rx_buf_size); in ath11k_dp_rx_mon_mpdu_pop()
4834 *head_msdu = msdu; in ath11k_dp_rx_mon_mpdu_pop()
4836 last->next = msdu; in ath11k_dp_rx_mon_mpdu_pop()
4838 last = msdu; in ath11k_dp_rx_mon_mpdu_pop()
4871 *tail_msdu = msdu; in ath11k_dp_rx_mon_mpdu_pop()
4879 static void ath11k_dp_rx_msdus_set_payload(struct ath11k *ar, struct sk_buff *msdu) in ath11k_dp_rx_msdus_set_payload() argument
4885 (struct hal_rx_desc *)msdu->data); in ath11k_dp_rx_msdus_set_payload()
4886 skb_pull(msdu, rx_pkt_offset + l2_hdr_offset); in ath11k_dp_rx_msdus_set_payload()
4896 struct sk_buff *msdu, *prev_buf; in ath11k_dp_rx_mon_merg_msdus() local
4925 msdu = head_msdu->next; in ath11k_dp_rx_mon_merg_msdus()
4927 while (msdu) { in ath11k_dp_rx_mon_merg_msdus()
4928 ath11k_dp_rx_msdus_set_payload(ar, msdu); in ath11k_dp_rx_mon_merg_msdus()
4930 prev_buf = msdu; in ath11k_dp_rx_mon_merg_msdus()
4931 msdu = msdu->next; in ath11k_dp_rx_mon_merg_msdus()
4949 msdu = head_msdu; in ath11k_dp_rx_mon_merg_msdus()
4951 while (msdu) { in ath11k_dp_rx_mon_merg_msdus()
4952 ath11k_dp_rx_msdus_set_payload(ar, msdu); in ath11k_dp_rx_mon_merg_msdus()
4954 dest = skb_push(msdu, sizeof(__le16)); in ath11k_dp_rx_mon_merg_msdus()
4959 prev_buf = msdu; in ath11k_dp_rx_mon_merg_msdus()
4960 msdu = msdu->next; in ath11k_dp_rx_mon_merg_msdus()
5339 struct sk_buff *msdu = NULL, *last = NULL; in ath11k_dp_rx_full_mon_mpdu_pop() local
5399 msdu = idr_find(&rx_ring->bufs_idr, buf_id); in ath11k_dp_rx_full_mon_mpdu_pop()
5400 if (!msdu) { in ath11k_dp_rx_full_mon_mpdu_pop()
5410 rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_full_mon_mpdu_pop()
5413 msdu->len + in ath11k_dp_rx_full_mon_mpdu_pop()
5414 skb_tailroom(msdu), in ath11k_dp_rx_full_mon_mpdu_pop()
5421 i, msdu, sw_mon_entries->ppdu_id); in ath11k_dp_rx_full_mon_mpdu_pop()
5422 dev_kfree_skb_any(msdu); in ath11k_dp_rx_full_mon_mpdu_pop()
5427 rx_desc = (struct hal_rx_desc *)msdu->data; in ath11k_dp_rx_full_mon_mpdu_pop()
5435 dev_kfree_skb_any(msdu); in ath11k_dp_rx_full_mon_mpdu_pop()
5436 msdu = NULL; in ath11k_dp_rx_full_mon_mpdu_pop()
5448 ath11k_dp_pkt_set_pktlen(msdu, rx_buf_size); in ath11k_dp_rx_full_mon_mpdu_pop()
5451 *head_msdu = msdu; in ath11k_dp_rx_full_mon_mpdu_pop()
5453 last->next = msdu; in ath11k_dp_rx_full_mon_mpdu_pop()
5455 last = msdu; in ath11k_dp_rx_full_mon_mpdu_pop()
5479 *tail_msdu = msdu; in ath11k_dp_rx_full_mon_mpdu_pop()