Lines Matching refs:msdu

1886 static void ath11k_dp_rx_h_csum_offload(struct ath11k *ar, struct sk_buff *msdu)  in ath11k_dp_rx_h_csum_offload()  argument
1888 struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_h_csum_offload()
1896 msdu->ip_summed = (ip_csum_fail || l4_csum_fail) ? in ath11k_dp_rx_h_csum_offload()
1981 struct sk_buff *msdu, in ath11k_dp_rx_h_undecap_nwifi() argument
1986 struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_h_undecap_nwifi()
1996 hdr = (struct ieee80211_hdr *)msdu->data; in ath11k_dp_rx_h_undecap_nwifi()
2000 skb_pull(msdu, ieee80211_hdrlen(hdr->frame_control)); in ath11k_dp_rx_h_undecap_nwifi()
2035 memcpy(skb_push(msdu, in ath11k_dp_rx_h_undecap_nwifi()
2046 memcpy(skb_push(msdu, in ath11k_dp_rx_h_undecap_nwifi()
2049 memcpy(skb_push(msdu, hdr_len), decap_hdr, hdr_len); in ath11k_dp_rx_h_undecap_nwifi()
2053 memcpy(skb_push(msdu, hdr_len), hdr, hdr_len); in ath11k_dp_rx_h_undecap_nwifi()
2058 hdr = (struct ieee80211_hdr *)msdu->data; in ath11k_dp_rx_h_undecap_nwifi()
2063 static void ath11k_dp_rx_h_undecap_raw(struct ath11k *ar, struct sk_buff *msdu, in ath11k_dp_rx_h_undecap_raw() argument
2068 struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_h_undecap_raw()
2079 skb_trim(msdu, msdu->len - FCS_LEN); in ath11k_dp_rx_h_undecap_raw()
2084 hdr = (void *)msdu->data; in ath11k_dp_rx_h_undecap_raw()
2088 skb_trim(msdu, msdu->len - in ath11k_dp_rx_h_undecap_raw()
2091 skb_trim(msdu, msdu->len - in ath11k_dp_rx_h_undecap_raw()
2096 skb_trim(msdu, msdu->len - in ath11k_dp_rx_h_undecap_raw()
2101 skb_trim(msdu, msdu->len - in ath11k_dp_rx_h_undecap_raw()
2109 skb_trim(msdu, msdu->len - IEEE80211_CCMP_MIC_LEN); in ath11k_dp_rx_h_undecap_raw()
2117 memmove((void *)msdu->data + crypto_len, in ath11k_dp_rx_h_undecap_raw()
2118 (void *)msdu->data, hdr_len); in ath11k_dp_rx_h_undecap_raw()
2120 memmove((u8 *)msdu->data + crypto_len, in ath11k_dp_rx_h_undecap_raw()
2121 (u8 *)msdu->data, hdr_len); in ath11k_dp_rx_h_undecap_raw()
2123 skb_pull(msdu, crypto_len); in ath11k_dp_rx_h_undecap_raw()
2128 struct sk_buff *msdu, in ath11k_dp_rx_h_find_rfc1042() argument
2131 struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_h_find_rfc1042()
2163 struct sk_buff *msdu, in ath11k_dp_rx_h_undecap_eth() argument
2175 rfc1042 = ath11k_dp_rx_h_find_rfc1042(ar, msdu, enctype); in ath11k_dp_rx_h_undecap_eth()
2180 eth = (struct ethhdr *)msdu->data; in ath11k_dp_rx_h_undecap_eth()
2183 skb_pull(msdu, sizeof(struct ethhdr)); in ath11k_dp_rx_h_undecap_eth()
2186 memcpy(skb_push(msdu, sizeof(struct ath11k_dp_rfc1042_hdr)), rfc1042, in ath11k_dp_rx_h_undecap_eth()
2194 memcpy(skb_push(msdu, in ath11k_dp_rx_h_undecap_eth()
2204 memcpy(skb_push(msdu, hdr_len), hdr, hdr_len); in ath11k_dp_rx_h_undecap_eth()
2209 hdr = (struct ieee80211_hdr *)msdu->data; in ath11k_dp_rx_h_undecap_eth()
2214 static void ath11k_dp_rx_h_undecap(struct ath11k *ar, struct sk_buff *msdu, in ath11k_dp_rx_h_undecap() argument
2229 ath11k_dp_rx_h_undecap_nwifi(ar, msdu, first_hdr, in ath11k_dp_rx_h_undecap()
2233 ath11k_dp_rx_h_undecap_raw(ar, msdu, enctype, status, in ath11k_dp_rx_h_undecap()
2237 ehdr = (struct ethhdr *)msdu->data; in ath11k_dp_rx_h_undecap()
2241 ATH11K_SKB_RXCB(msdu)->is_eapol = true; in ath11k_dp_rx_h_undecap()
2242 ath11k_dp_rx_h_undecap_eth(ar, msdu, first_hdr, in ath11k_dp_rx_h_undecap()
2250 if (ATH11K_SKB_RXCB(msdu)->is_mcbc && decrypted) in ath11k_dp_rx_h_undecap()
2251 ath11k_dp_rx_h_undecap_eth(ar, msdu, first_hdr, in ath11k_dp_rx_h_undecap()
2261 ath11k_dp_rx_h_find_peer(struct ath11k_base *ab, struct sk_buff *msdu) in ath11k_dp_rx_h_find_peer() argument
2263 struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_h_find_peer()
2284 struct sk_buff *msdu, in ath11k_dp_rx_h_mpdu() argument
2298 rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_h_mpdu()
2308 peer = ath11k_dp_rx_h_find_peer(ar->ab, msdu); in ath11k_dp_rx_h_mpdu()
2347 ath11k_dp_rx_h_csum_offload(ar, msdu); in ath11k_dp_rx_h_mpdu()
2348 ath11k_dp_rx_h_undecap(ar, msdu, rx_desc, in ath11k_dp_rx_h_mpdu()
2356 hdr = (void *)msdu->data; in ath11k_dp_rx_h_mpdu()
2479 struct sk_buff *msdu, in ath11k_dp_rx_deliver_msdu() argument
2491 struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_deliver_msdu()
2499 he = skb_push(msdu, sizeof(known)); in ath11k_dp_rx_deliver_msdu()
2508 peer = ath11k_dp_rx_h_find_peer(ar->ab, msdu); in ath11k_dp_rx_deliver_msdu()
2515 msdu, in ath11k_dp_rx_deliver_msdu()
2516 msdu->len, in ath11k_dp_rx_deliver_msdu()
2538 msdu->data, msdu->len); in ath11k_dp_rx_deliver_msdu()
2540 rx_status = IEEE80211_SKB_RXCB(msdu); in ath11k_dp_rx_deliver_msdu()
2554 ieee80211_rx_napi(ar->hw, pubsta, msdu, napi); in ath11k_dp_rx_deliver_msdu()
2558 struct sk_buff *msdu, in ath11k_dp_rx_process_msdu() argument
2573 last_buf = ath11k_dp_rx_get_msdu_last_buf(msdu_list, msdu); in ath11k_dp_rx_process_msdu()
2581 rx_desc = (struct hal_rx_desc *)msdu->data; in ath11k_dp_rx_process_msdu()
2596 rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_process_msdu()
2602 skb_pull(msdu, hal_rx_desc_sz); in ath11k_dp_rx_process_msdu()
2614 skb_put(msdu, hal_rx_desc_sz + l3_pad_bytes + msdu_len); in ath11k_dp_rx_process_msdu()
2615 skb_pull(msdu, hal_rx_desc_sz + l3_pad_bytes); in ath11k_dp_rx_process_msdu()
2618 msdu, last_buf, in ath11k_dp_rx_process_msdu()
2628 ath11k_dp_rx_h_mpdu(ar, msdu, rx_desc, rx_status); in ath11k_dp_rx_process_msdu()
2643 struct sk_buff *msdu; in ath11k_dp_rx_process_received_packets() local
2662 while ((msdu = __skb_dequeue(msdu_list))) { in ath11k_dp_rx_process_received_packets()
2663 ret = ath11k_dp_rx_process_msdu(ar, msdu, msdu_list, &rx_status); in ath11k_dp_rx_process_received_packets()
2667 dev_kfree_skb_any(msdu); in ath11k_dp_rx_process_received_packets()
2671 ath11k_dp_rx_deliver_msdu(ar, napi, msdu, &rx_status); in ath11k_dp_rx_process_received_packets()
2685 struct sk_buff *msdu; in ath11k_dp_process_rx() local
2719 msdu = idr_find(&rx_ring->bufs_idr, buf_id); in ath11k_dp_process_rx()
2720 if (unlikely(!msdu)) { in ath11k_dp_process_rx()
2730 rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_process_rx()
2732 msdu->len + skb_tailroom(msdu), in ath11k_dp_process_rx()
2741 dev_kfree_skb_any(msdu); in ath11k_dp_process_rx()
2760 __skb_queue_tail(&msdu_list[mac_id], msdu); in ath11k_dp_process_rx()
3252 struct sk_buff *msdu) in ath11k_dp_rx_h_verify_tkip_mic() argument
3254 struct hal_rx_desc *rx_desc = (struct hal_rx_desc *)msdu->data; in ath11k_dp_rx_h_verify_tkip_mic()
3255 struct ieee80211_rx_status *rxs = IEEE80211_SKB_RXCB(msdu); in ath11k_dp_rx_h_verify_tkip_mic()
3269 hdr = (struct ieee80211_hdr *)(msdu->data + hal_rx_desc_sz); in ath11k_dp_rx_h_verify_tkip_mic()
3281 data = msdu->data + head_len; in ath11k_dp_rx_h_verify_tkip_mic()
3282 data_len = msdu->len - head_len - tail_len; in ath11k_dp_rx_h_verify_tkip_mic()
3292 (ATH11K_SKB_RXCB(msdu))->is_first_msdu = true; in ath11k_dp_rx_h_verify_tkip_mic()
3293 (ATH11K_SKB_RXCB(msdu))->is_last_msdu = true; in ath11k_dp_rx_h_verify_tkip_mic()
3297 skb_pull(msdu, hal_rx_desc_sz); in ath11k_dp_rx_h_verify_tkip_mic()
3300 ath11k_dp_rx_h_undecap(ar, msdu, rx_desc, in ath11k_dp_rx_h_verify_tkip_mic()
3302 ieee80211_rx(ar->hw, msdu); in ath11k_dp_rx_h_verify_tkip_mic()
3306 static void ath11k_dp_rx_h_undecap_frag(struct ath11k *ar, struct sk_buff *msdu, in ath11k_dp_rx_h_undecap_frag() argument
3317 hdr = (struct ieee80211_hdr *)(msdu->data + hal_rx_desc_sz); in ath11k_dp_rx_h_undecap_frag()
3320 skb_trim(msdu, msdu->len - in ath11k_dp_rx_h_undecap_frag()
3324 skb_trim(msdu, msdu->len - in ath11k_dp_rx_h_undecap_frag()
3332 memmove((void *)msdu->data + hal_rx_desc_sz + crypto_len, in ath11k_dp_rx_h_undecap_frag()
3333 (void *)msdu->data + hal_rx_desc_sz, hdr_len); in ath11k_dp_rx_h_undecap_frag()
3335 memmove((u8 *)msdu->data + hal_rx_desc_sz + crypto_len, in ath11k_dp_rx_h_undecap_frag()
3336 (u8 *)msdu->data + hal_rx_desc_sz, hdr_len); in ath11k_dp_rx_h_undecap_frag()
3338 skb_pull(msdu, crypto_len); in ath11k_dp_rx_h_undecap_frag()
3611 struct sk_buff *msdu, in ath11k_dp_rx_frag_h_mpdu() argument
3626 rx_desc = (struct hal_rx_desc *)msdu->data; in ath11k_dp_rx_frag_h_mpdu()
3630 frag_no = ath11k_dp_rx_h_mpdu_start_frag_no(ar->ab, msdu); in ath11k_dp_rx_frag_h_mpdu()
3631 more_frags = ath11k_dp_rx_h_mpdu_start_more_frags(ar->ab, msdu); in ath11k_dp_rx_frag_h_mpdu()
3682 __skb_queue_tail(&rx_tid->rx_frags, msdu); in ath11k_dp_rx_frag_h_mpdu()
3684 ath11k_dp_rx_h_sort_frags(ar, &rx_tid->rx_frags, msdu); in ath11k_dp_rx_frag_h_mpdu()
3746 struct sk_buff *msdu; in ath11k_dp_process_rx_err_buf() local
3754 msdu = idr_find(&rx_ring->bufs_idr, buf_id); in ath11k_dp_process_rx_err_buf()
3755 if (!msdu) { in ath11k_dp_process_rx_err_buf()
3765 rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_process_rx_err_buf()
3767 msdu->len + skb_tailroom(msdu), in ath11k_dp_process_rx_err_buf()
3771 dev_kfree_skb_any(msdu); in ath11k_dp_process_rx_err_buf()
3777 dev_kfree_skb_any(msdu); in ath11k_dp_process_rx_err_buf()
3782 dev_kfree_skb_any(msdu); in ath11k_dp_process_rx_err_buf()
3786 rx_desc = (struct hal_rx_desc *)msdu->data; in ath11k_dp_process_rx_err_buf()
3795 dev_kfree_skb_any(msdu); in ath11k_dp_process_rx_err_buf()
3799 skb_put(msdu, hal_rx_desc_sz + msdu_len); in ath11k_dp_process_rx_err_buf()
3801 if (ath11k_dp_rx_frag_h_mpdu(ar, msdu, ring_desc)) { in ath11k_dp_process_rx_err_buf()
3802 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()
4699 struct sk_buff *msdu = NULL, *last = NULL; in ath11k_dp_rx_mon_mpdu_pop() local
4785 msdu = idr_find(&rx_ring->bufs_idr, buf_id); in ath11k_dp_rx_mon_mpdu_pop()
4787 if (!msdu) { in ath11k_dp_rx_mon_mpdu_pop()
4792 rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_mon_mpdu_pop()
4795 msdu->len + in ath11k_dp_rx_mon_mpdu_pop()
4796 skb_tailroom(msdu), in ath11k_dp_rx_mon_mpdu_pop()
4803 i, msdu, *ppdu_id); in ath11k_dp_rx_mon_mpdu_pop()
4804 dev_kfree_skb_any(msdu); in ath11k_dp_rx_mon_mpdu_pop()
4805 msdu = NULL; in ath11k_dp_rx_mon_mpdu_pop()
4809 rx_desc = (struct hal_rx_desc *)msdu->data; 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 dev_kfree_skb_any(msdu); in ath11k_dp_rx_mon_mpdu_pop()
4832 msdu = NULL; in ath11k_dp_rx_mon_mpdu_pop()
4845 ath11k_dp_pkt_set_pktlen(msdu, rx_buf_size); in ath11k_dp_rx_mon_mpdu_pop()
4848 *head_msdu = msdu; in ath11k_dp_rx_mon_mpdu_pop()
4850 last->next = msdu; in ath11k_dp_rx_mon_mpdu_pop()
4852 last = msdu; in ath11k_dp_rx_mon_mpdu_pop()
4885 *tail_msdu = msdu; in ath11k_dp_rx_mon_mpdu_pop()
4893 static void ath11k_dp_rx_msdus_set_payload(struct ath11k *ar, struct sk_buff *msdu) in ath11k_dp_rx_msdus_set_payload() argument
4899 (struct hal_rx_desc *)msdu->data); in ath11k_dp_rx_msdus_set_payload()
4900 skb_pull(msdu, rx_pkt_offset + l2_hdr_offset); in ath11k_dp_rx_msdus_set_payload()
4910 struct sk_buff *msdu, *prev_buf; in ath11k_dp_rx_mon_merg_msdus() local
4939 msdu = head_msdu->next; in ath11k_dp_rx_mon_merg_msdus()
4941 while (msdu) { in ath11k_dp_rx_mon_merg_msdus()
4942 ath11k_dp_rx_msdus_set_payload(ar, msdu); in ath11k_dp_rx_mon_merg_msdus()
4944 prev_buf = msdu; in ath11k_dp_rx_mon_merg_msdus()
4945 msdu = msdu->next; in ath11k_dp_rx_mon_merg_msdus()
4963 msdu = head_msdu; in ath11k_dp_rx_mon_merg_msdus()
4965 while (msdu) { in ath11k_dp_rx_mon_merg_msdus()
4966 ath11k_dp_rx_msdus_set_payload(ar, msdu); in ath11k_dp_rx_mon_merg_msdus()
4968 dest = skb_push(msdu, sizeof(__le16)); in ath11k_dp_rx_mon_merg_msdus()
4973 prev_buf = msdu; in ath11k_dp_rx_mon_merg_msdus()
4974 msdu = msdu->next; in ath11k_dp_rx_mon_merg_msdus()
5355 struct sk_buff *msdu = NULL, *last = NULL; in ath11k_dp_rx_full_mon_mpdu_pop() local
5415 msdu = idr_find(&rx_ring->bufs_idr, buf_id); in ath11k_dp_rx_full_mon_mpdu_pop()
5416 if (!msdu) { in ath11k_dp_rx_full_mon_mpdu_pop()
5426 rxcb = ATH11K_SKB_RXCB(msdu); in ath11k_dp_rx_full_mon_mpdu_pop()
5429 msdu->len + in ath11k_dp_rx_full_mon_mpdu_pop()
5430 skb_tailroom(msdu), in ath11k_dp_rx_full_mon_mpdu_pop()
5437 i, msdu, sw_mon_entries->ppdu_id); in ath11k_dp_rx_full_mon_mpdu_pop()
5438 dev_kfree_skb_any(msdu); in ath11k_dp_rx_full_mon_mpdu_pop()
5443 rx_desc = (struct hal_rx_desc *)msdu->data; in ath11k_dp_rx_full_mon_mpdu_pop()
5451 dev_kfree_skb_any(msdu); in ath11k_dp_rx_full_mon_mpdu_pop()
5452 msdu = NULL; in ath11k_dp_rx_full_mon_mpdu_pop()
5464 ath11k_dp_pkt_set_pktlen(msdu, rx_buf_size); in ath11k_dp_rx_full_mon_mpdu_pop()
5467 *head_msdu = msdu; in ath11k_dp_rx_full_mon_mpdu_pop()
5469 last->next = msdu; in ath11k_dp_rx_full_mon_mpdu_pop()
5471 last = msdu; in ath11k_dp_rx_full_mon_mpdu_pop()
5495 *tail_msdu = msdu; in ath11k_dp_rx_full_mon_mpdu_pop()