Lines Matching refs:msdu

1869 static void ath11k_dp_rx_h_csum_offload(struct ath11k *ar, struct sk_buff *msdu)  in ath11k_dp_rx_h_csum_offload()  argument
1871 struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_h_csum_offload()
1879 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()
2440 struct sk_buff *msdu, in ath11k_dp_rx_deliver_msdu() argument
2452 struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_deliver_msdu()
2460 he = skb_push(msdu, sizeof(known)); in ath11k_dp_rx_deliver_msdu()
2469 peer = ath11k_dp_rx_h_find_peer(ar->ab, msdu); in ath11k_dp_rx_deliver_msdu()
2476 msdu, in ath11k_dp_rx_deliver_msdu()
2477 msdu->len, in ath11k_dp_rx_deliver_msdu()
2499 msdu->data, msdu->len); in ath11k_dp_rx_deliver_msdu()
2501 rx_status = IEEE80211_SKB_RXCB(msdu); in ath11k_dp_rx_deliver_msdu()
2515 ieee80211_rx_napi(ar->hw, pubsta, msdu, napi); in ath11k_dp_rx_deliver_msdu()
2519 struct sk_buff *msdu, in ath11k_dp_rx_process_msdu() argument
2534 last_buf = ath11k_dp_rx_get_msdu_last_buf(msdu_list, msdu); in ath11k_dp_rx_process_msdu()
2542 rx_desc = (struct hal_rx_desc *)msdu->data; in ath11k_dp_rx_process_msdu()
2557 rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_process_msdu()
2563 skb_pull(msdu, hal_rx_desc_sz); in ath11k_dp_rx_process_msdu()
2575 skb_put(msdu, hal_rx_desc_sz + l3_pad_bytes + msdu_len); in ath11k_dp_rx_process_msdu()
2576 skb_pull(msdu, hal_rx_desc_sz + l3_pad_bytes); in ath11k_dp_rx_process_msdu()
2579 msdu, last_buf, in ath11k_dp_rx_process_msdu()
2589 ath11k_dp_rx_h_mpdu(ar, msdu, rx_desc, rx_status); in ath11k_dp_rx_process_msdu()
2604 struct sk_buff *msdu; in ath11k_dp_rx_process_received_packets() local
2623 while ((msdu = __skb_dequeue(msdu_list))) { in ath11k_dp_rx_process_received_packets()
2624 ret = ath11k_dp_rx_process_msdu(ar, msdu, msdu_list, &rx_status); in ath11k_dp_rx_process_received_packets()
2628 dev_kfree_skb_any(msdu); in ath11k_dp_rx_process_received_packets()
2632 ath11k_dp_rx_deliver_msdu(ar, napi, msdu, &rx_status); in ath11k_dp_rx_process_received_packets()
2646 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 (unlikely(!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()
2728 __skb_queue_tail(&msdu_list[mac_id], msdu); in ath11k_dp_process_rx()
3220 struct sk_buff *msdu) in ath11k_dp_rx_h_verify_tkip_mic() argument
3222 struct hal_rx_desc *rx_desc = (struct hal_rx_desc *)msdu->data; in ath11k_dp_rx_h_verify_tkip_mic()
3223 struct ieee80211_rx_status *rxs = IEEE80211_SKB_RXCB(msdu); in ath11k_dp_rx_h_verify_tkip_mic()
3237 hdr = (struct ieee80211_hdr *)(msdu->data + hal_rx_desc_sz); in ath11k_dp_rx_h_verify_tkip_mic()
3249 data = msdu->data + head_len; in ath11k_dp_rx_h_verify_tkip_mic()
3250 data_len = msdu->len - head_len - tail_len; in ath11k_dp_rx_h_verify_tkip_mic()
3260 (ATH11K_SKB_RXCB(msdu))->is_first_msdu = true; in ath11k_dp_rx_h_verify_tkip_mic()
3261 (ATH11K_SKB_RXCB(msdu))->is_last_msdu = true; in ath11k_dp_rx_h_verify_tkip_mic()
3265 skb_pull(msdu, hal_rx_desc_sz); in ath11k_dp_rx_h_verify_tkip_mic()
3268 ath11k_dp_rx_h_undecap(ar, msdu, rx_desc, in ath11k_dp_rx_h_verify_tkip_mic()
3270 ieee80211_rx(ar->hw, msdu); in ath11k_dp_rx_h_verify_tkip_mic()
3274 static void ath11k_dp_rx_h_undecap_frag(struct ath11k *ar, struct sk_buff *msdu, in ath11k_dp_rx_h_undecap_frag() argument
3285 hdr = (struct ieee80211_hdr *)(msdu->data + hal_rx_desc_sz); in ath11k_dp_rx_h_undecap_frag()
3288 skb_trim(msdu, msdu->len - in ath11k_dp_rx_h_undecap_frag()
3292 skb_trim(msdu, msdu->len - in ath11k_dp_rx_h_undecap_frag()
3299 memmove((void *)msdu->data + hal_rx_desc_sz + crypto_len, in ath11k_dp_rx_h_undecap_frag()
3300 (void *)msdu->data + hal_rx_desc_sz, hdr_len); in ath11k_dp_rx_h_undecap_frag()
3301 skb_pull(msdu, crypto_len); in ath11k_dp_rx_h_undecap_frag()
3570 struct sk_buff *msdu, in ath11k_dp_rx_frag_h_mpdu() argument
3585 rx_desc = (struct hal_rx_desc *)msdu->data; in ath11k_dp_rx_frag_h_mpdu()
3589 frag_no = ath11k_dp_rx_h_mpdu_start_frag_no(ar->ab, msdu); in ath11k_dp_rx_frag_h_mpdu()
3590 more_frags = ath11k_dp_rx_h_mpdu_start_more_frags(ar->ab, msdu); in ath11k_dp_rx_frag_h_mpdu()
3641 __skb_queue_tail(&rx_tid->rx_frags, msdu); in ath11k_dp_rx_frag_h_mpdu()
3643 ath11k_dp_rx_h_sort_frags(ar, &rx_tid->rx_frags, msdu); in ath11k_dp_rx_frag_h_mpdu()
3705 struct sk_buff *msdu; in ath11k_dp_process_rx_err_buf() local
3713 msdu = idr_find(&rx_ring->bufs_idr, buf_id); in ath11k_dp_process_rx_err_buf()
3714 if (!msdu) { in ath11k_dp_process_rx_err_buf()
3724 rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_process_rx_err_buf()
3726 msdu->len + skb_tailroom(msdu), in ath11k_dp_process_rx_err_buf()
3730 dev_kfree_skb_any(msdu); in ath11k_dp_process_rx_err_buf()
3736 dev_kfree_skb_any(msdu); in ath11k_dp_process_rx_err_buf()
3741 dev_kfree_skb_any(msdu); in ath11k_dp_process_rx_err_buf()
3745 rx_desc = (struct hal_rx_desc *)msdu->data; in ath11k_dp_process_rx_err_buf()
3754 dev_kfree_skb_any(msdu); in ath11k_dp_process_rx_err_buf()
3758 skb_put(msdu, hal_rx_desc_sz + msdu_len); in ath11k_dp_process_rx_err_buf()
3760 if (ath11k_dp_rx_frag_h_mpdu(ar, msdu, ring_desc)) { in ath11k_dp_process_rx_err_buf()
3761 dev_kfree_skb_any(msdu); in ath11k_dp_process_rx_err_buf()
3908 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
3913 struct hal_rx_desc *desc = (struct hal_rx_desc *)msdu->data; in ath11k_dp_rx_h_null_q_desc()
3916 struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_h_null_q_desc()
3949 skb_pull(msdu, hal_rx_desc_sz); in ath11k_dp_rx_h_null_q_desc()
3956 skb_put(msdu, hal_rx_desc_sz + l3pad_bytes + msdu_len); in ath11k_dp_rx_h_null_q_desc()
3957 skb_pull(msdu, hal_rx_desc_sz + l3pad_bytes); in ath11k_dp_rx_h_null_q_desc()
3961 ath11k_dp_rx_h_mpdu(ar, msdu, desc, status); in ath11k_dp_rx_h_null_q_desc()
3972 static bool ath11k_dp_rx_h_reo_err(struct ath11k *ar, struct sk_buff *msdu, in ath11k_dp_rx_h_reo_err() argument
3976 struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_h_reo_err()
3983 if (ath11k_dp_rx_h_null_q_desc(ar, msdu, status, msdu_list)) in ath11k_dp_rx_h_reo_err()
4003 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
4007 struct hal_rx_desc *desc = (struct hal_rx_desc *)msdu->data; in ath11k_dp_rx_h_tkip_mic_err()
4009 struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_h_tkip_mic_err()
4017 skb_put(msdu, hal_rx_desc_sz + l3pad_bytes + msdu_len); in ath11k_dp_rx_h_tkip_mic_err()
4018 skb_pull(msdu, hal_rx_desc_sz + l3pad_bytes); in ath11k_dp_rx_h_tkip_mic_err()
4025 ath11k_dp_rx_h_undecap(ar, msdu, desc, in ath11k_dp_rx_h_tkip_mic_err()
4029 static bool ath11k_dp_rx_h_rxdma_err(struct ath11k *ar, struct sk_buff *msdu, in ath11k_dp_rx_h_rxdma_err() argument
4032 struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_h_rxdma_err()
4039 ath11k_dp_rx_h_tkip_mic_err(ar, msdu, status); in ath11k_dp_rx_h_rxdma_err()
4054 struct sk_buff *msdu, in ath11k_dp_rx_wbm_err() argument
4057 struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_wbm_err()
4063 drop = ath11k_dp_rx_h_reo_err(ar, msdu, &rxs, msdu_list); in ath11k_dp_rx_wbm_err()
4066 drop = ath11k_dp_rx_h_rxdma_err(ar, msdu, &rxs); in ath11k_dp_rx_wbm_err()
4074 dev_kfree_skb_any(msdu); in ath11k_dp_rx_wbm_err()
4078 ath11k_dp_rx_deliver_msdu(ar, napi, msdu, &rxs); in ath11k_dp_rx_wbm_err()
4089 struct sk_buff *msdu; in ath11k_dp_rx_process_wbm_err() local
4127 msdu = idr_find(&rx_ring->bufs_idr, buf_id); in ath11k_dp_rx_process_wbm_err()
4128 if (!msdu) { in ath11k_dp_rx_process_wbm_err()
4138 rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_process_wbm_err()
4140 msdu->len + skb_tailroom(msdu), in ath11k_dp_rx_process_wbm_err()
4149 dev_kfree_skb_any(msdu); in ath11k_dp_rx_process_wbm_err()
4155 rxcb->rx_desc = (struct hal_rx_desc *)msdu->data; in ath11k_dp_rx_process_wbm_err()
4156 __skb_queue_tail(&msdu_list[mac_id], msdu); in ath11k_dp_rx_process_wbm_err()
4191 while ((msdu = __skb_dequeue(&msdu_list[i])) != NULL) in ath11k_dp_rx_process_wbm_err()
4192 ath11k_dp_rx_wbm_err(ar, napi, msdu, &msdu_list[i]); in ath11k_dp_rx_process_wbm_err()
4651 struct sk_buff *msdu = NULL, *last = NULL; in ath11k_dp_rx_mon_mpdu_pop() local
4729 msdu = idr_find(&rx_ring->bufs_idr, buf_id); in ath11k_dp_rx_mon_mpdu_pop()
4731 if (!msdu) { in ath11k_dp_rx_mon_mpdu_pop()
4736 rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_mon_mpdu_pop()
4739 msdu->len + in ath11k_dp_rx_mon_mpdu_pop()
4740 skb_tailroom(msdu), in ath11k_dp_rx_mon_mpdu_pop()
4747 i, msdu, *ppdu_id); in ath11k_dp_rx_mon_mpdu_pop()
4748 dev_kfree_skb_any(msdu); in ath11k_dp_rx_mon_mpdu_pop()
4749 msdu = NULL; in ath11k_dp_rx_mon_mpdu_pop()
4753 rx_desc = (struct hal_rx_desc *)msdu->data; in ath11k_dp_rx_mon_mpdu_pop()
4761 dev_kfree_skb_any(msdu); in ath11k_dp_rx_mon_mpdu_pop()
4762 msdu = NULL; in ath11k_dp_rx_mon_mpdu_pop()
4775 dev_kfree_skb_any(msdu); in ath11k_dp_rx_mon_mpdu_pop()
4776 msdu = NULL; in ath11k_dp_rx_mon_mpdu_pop()
4789 ath11k_dp_pkt_set_pktlen(msdu, rx_buf_size); in ath11k_dp_rx_mon_mpdu_pop()
4792 *head_msdu = msdu; in ath11k_dp_rx_mon_mpdu_pop()
4794 last->next = msdu; in ath11k_dp_rx_mon_mpdu_pop()
4796 last = msdu; in ath11k_dp_rx_mon_mpdu_pop()
4829 *tail_msdu = msdu; in ath11k_dp_rx_mon_mpdu_pop()
4837 static void ath11k_dp_rx_msdus_set_payload(struct ath11k *ar, struct sk_buff *msdu) in ath11k_dp_rx_msdus_set_payload() argument
4843 (struct hal_rx_desc *)msdu->data); in ath11k_dp_rx_msdus_set_payload()
4844 skb_pull(msdu, rx_pkt_offset + l2_hdr_offset); in ath11k_dp_rx_msdus_set_payload()
4854 struct sk_buff *msdu, *prev_buf; in ath11k_dp_rx_mon_merg_msdus() local
4883 msdu = head_msdu->next; in ath11k_dp_rx_mon_merg_msdus()
4885 while (msdu) { in ath11k_dp_rx_mon_merg_msdus()
4886 ath11k_dp_rx_msdus_set_payload(ar, msdu); in ath11k_dp_rx_mon_merg_msdus()
4888 prev_buf = msdu; in ath11k_dp_rx_mon_merg_msdus()
4889 msdu = msdu->next; in ath11k_dp_rx_mon_merg_msdus()
4907 msdu = head_msdu; in ath11k_dp_rx_mon_merg_msdus()
4909 while (msdu) { in ath11k_dp_rx_mon_merg_msdus()
4910 ath11k_dp_rx_msdus_set_payload(ar, msdu); in ath11k_dp_rx_mon_merg_msdus()
4912 dest = skb_push(msdu, sizeof(__le16)); in ath11k_dp_rx_mon_merg_msdus()
4917 prev_buf = msdu; in ath11k_dp_rx_mon_merg_msdus()
4918 msdu = msdu->next; in ath11k_dp_rx_mon_merg_msdus()
5302 struct sk_buff *msdu = NULL, *last = NULL; in ath11k_dp_rx_full_mon_mpdu_pop() local
5362 msdu = idr_find(&rx_ring->bufs_idr, buf_id); in ath11k_dp_rx_full_mon_mpdu_pop()
5363 if (!msdu) { in ath11k_dp_rx_full_mon_mpdu_pop()
5373 rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_full_mon_mpdu_pop()
5376 msdu->len + in ath11k_dp_rx_full_mon_mpdu_pop()
5377 skb_tailroom(msdu), in ath11k_dp_rx_full_mon_mpdu_pop()
5384 i, msdu, sw_mon_entries->ppdu_id); in ath11k_dp_rx_full_mon_mpdu_pop()
5385 dev_kfree_skb_any(msdu); in ath11k_dp_rx_full_mon_mpdu_pop()
5390 rx_desc = (struct hal_rx_desc *)msdu->data; in ath11k_dp_rx_full_mon_mpdu_pop()
5398 dev_kfree_skb_any(msdu); in ath11k_dp_rx_full_mon_mpdu_pop()
5399 msdu = NULL; in ath11k_dp_rx_full_mon_mpdu_pop()
5411 ath11k_dp_pkt_set_pktlen(msdu, rx_buf_size); in ath11k_dp_rx_full_mon_mpdu_pop()
5414 *head_msdu = msdu; in ath11k_dp_rx_full_mon_mpdu_pop()
5416 last->next = msdu; in ath11k_dp_rx_full_mon_mpdu_pop()
5418 last = msdu; in ath11k_dp_rx_full_mon_mpdu_pop()
5442 *tail_msdu = msdu; in ath11k_dp_rx_full_mon_mpdu_pop()