Lines Matching refs:ar
38 ath10k_htt_rx_find_skb_paddr(struct ath10k *ar, u32 paddr) in ath10k_htt_rx_find_skb_paddr() argument
42 hash_for_each_possible(ar->htt.rx_ring.skb_table, rxcb, hlist, paddr) in ath10k_htt_rx_find_skb_paddr()
60 dma_unmap_single(htt->ar->dev, rxcb->paddr, in ath10k_htt_rx_ring_free()
73 dma_unmap_single(htt->ar->dev, rxcb->paddr, in ath10k_htt_rx_ring_free()
118 paddr = dma_map_single(htt->ar->dev, skb->data, in __ath10k_htt_rx_ring_fill_n()
122 if (unlikely(dma_mapping_error(htt->ar->dev, paddr))) { in __ath10k_htt_rx_ring_fill_n()
207 int ath10k_htt_rx_ring_refill(struct ath10k *ar) in ath10k_htt_rx_ring_refill() argument
209 struct ath10k_htt *htt = &ar->htt; in ath10k_htt_rx_ring_refill()
235 dma_free_coherent(htt->ar->dev, in ath10k_htt_rx_free()
241 dma_free_coherent(htt->ar->dev, in ath10k_htt_rx_free()
251 struct ath10k *ar = htt->ar; in ath10k_htt_rx_netbuf_pop() local
258 ath10k_warn(ar, "tried to pop sk_buff from an empty rx ring\n"); in ath10k_htt_rx_netbuf_pop()
272 dma_unmap_single(htt->ar->dev, in ath10k_htt_rx_netbuf_pop()
276 ath10k_dbg_dump(ar, ATH10K_DBG_HTT_DUMP, NULL, "htt rx netbuf pop: ", in ath10k_htt_rx_netbuf_pop()
287 struct ath10k *ar = htt->ar; in ath10k_htt_rx_amsdu_pop() local
400 trace_ath10k_htt_rx_desc(ar, &rx_desc->attention, in ath10k_htt_rx_amsdu_pop()
436 struct ath10k *ar = htt->ar; in ath10k_htt_rx_pop_paddr() local
442 msdu = ath10k_htt_rx_find_skb_paddr(ar, paddr); in ath10k_htt_rx_pop_paddr()
450 dma_unmap_single(htt->ar->dev, rxcb->paddr, in ath10k_htt_rx_pop_paddr()
453 ath10k_dbg_dump(ar, ATH10K_DBG_HTT_DUMP, NULL, "htt rx netbuf pop: ", in ath10k_htt_rx_pop_paddr()
463 struct ath10k *ar = htt->ar; in ath10k_htt_rx_pop_paddr_list() local
490 trace_ath10k_htt_rx_desc(ar, rxd, sizeof(*rxd)); in ath10k_htt_rx_pop_paddr_list()
498 ath10k_warn(htt->ar, "tried to pop an incomplete frame, oops!\n"); in ath10k_htt_rx_pop_paddr_list()
511 struct ath10k *ar = htt->ar; in ath10k_htt_rx_alloc() local
527 ath10k_warn(ar, "htt rx ring size is not power of 2\n"); in ath10k_htt_rx_alloc()
539 vaddr = dma_alloc_coherent(htt->ar->dev, size, &paddr, GFP_DMA); in ath10k_htt_rx_alloc()
546 vaddr = dma_alloc_coherent(htt->ar->dev, in ath10k_htt_rx_alloc()
576 ath10k_dbg(ar, ATH10K_DBG_BOOT, "htt rx ring size %d fill_level %d\n", in ath10k_htt_rx_alloc()
581 dma_free_coherent(htt->ar->dev, in ath10k_htt_rx_alloc()
592 static int ath10k_htt_rx_crypto_param_len(struct ath10k *ar, in ath10k_htt_rx_crypto_param_len() argument
611 ath10k_warn(ar, "unsupported encryption type %d\n", type); in ath10k_htt_rx_crypto_param_len()
617 static int ath10k_htt_rx_crypto_tail_len(struct ath10k *ar, in ath10k_htt_rx_crypto_tail_len() argument
636 ath10k_warn(ar, "unsupported encryption type %d\n", type); in ath10k_htt_rx_crypto_tail_len()
648 static void ath10k_htt_rx_h_rates(struct ath10k *ar, in ath10k_htt_rx_h_rates() argument
676 sband = &ar->mac.sbands[status->band]; in ath10k_htt_rx_h_rates()
721 ath10k_warn(ar, "invalid MCS received %u\n", mcs); in ath10k_htt_rx_h_rates()
722 …ath10k_warn(ar, "rxd %08x mpdu start %08x %08x msdu start %08x %08x ppdu start %08x %08x %08x %08x… in ath10k_htt_rx_h_rates()
734 ath10k_warn(ar, "msdu end %08x mpdu end %08x\n", in ath10k_htt_rx_h_rates()
738 ath10k_dbg_dump(ar, ATH10K_DBG_HTT_DUMP, NULL, in ath10k_htt_rx_h_rates()
770 ath10k_htt_rx_h_peer_channel(struct ath10k *ar, struct htt_rx_desc *rxd) in ath10k_htt_rx_h_peer_channel() argument
777 lockdep_assert_held(&ar->data_lock); in ath10k_htt_rx_h_peer_channel()
793 peer = ath10k_peer_find_by_id(ar, peer_id); in ath10k_htt_rx_h_peer_channel()
797 arvif = ath10k_get_arvif(ar, peer->vdev_id); in ath10k_htt_rx_h_peer_channel()
808 ath10k_htt_rx_h_vdev_channel(struct ath10k *ar, u32 vdev_id) in ath10k_htt_rx_h_vdev_channel() argument
813 lockdep_assert_held(&ar->data_lock); in ath10k_htt_rx_h_vdev_channel()
815 list_for_each_entry(arvif, &ar->arvifs, list) { in ath10k_htt_rx_h_vdev_channel()
835 ath10k_htt_rx_h_any_channel(struct ath10k *ar) in ath10k_htt_rx_h_any_channel() argument
839 ieee80211_iter_chan_contexts_atomic(ar->hw, in ath10k_htt_rx_h_any_channel()
846 static bool ath10k_htt_rx_h_channel(struct ath10k *ar, in ath10k_htt_rx_h_channel() argument
853 spin_lock_bh(&ar->data_lock); in ath10k_htt_rx_h_channel()
854 ch = ar->scan_channel; in ath10k_htt_rx_h_channel()
856 ch = ar->rx_channel; in ath10k_htt_rx_h_channel()
858 ch = ath10k_htt_rx_h_peer_channel(ar, rxd); in ath10k_htt_rx_h_channel()
860 ch = ath10k_htt_rx_h_vdev_channel(ar, vdev_id); in ath10k_htt_rx_h_channel()
862 ch = ath10k_htt_rx_h_any_channel(ar); in ath10k_htt_rx_h_channel()
863 spin_unlock_bh(&ar->data_lock); in ath10k_htt_rx_h_channel()
874 static void ath10k_htt_rx_h_signal(struct ath10k *ar, in ath10k_htt_rx_h_signal() argument
884 static void ath10k_htt_rx_h_mactime(struct ath10k *ar, in ath10k_htt_rx_h_mactime() argument
898 static void ath10k_htt_rx_h_ppdu(struct ath10k *ar, in ath10k_htt_rx_h_ppdu() argument
932 ath10k_htt_rx_h_signal(ar, status, rxd); in ath10k_htt_rx_h_ppdu()
933 ath10k_htt_rx_h_channel(ar, status, rxd, vdev_id); in ath10k_htt_rx_h_ppdu()
934 ath10k_htt_rx_h_rates(ar, status, rxd); in ath10k_htt_rx_h_ppdu()
938 ath10k_htt_rx_h_mactime(ar, status, rxd); in ath10k_htt_rx_h_ppdu()
970 static void ath10k_process_rx(struct ath10k *ar, in ath10k_process_rx() argument
981 ath10k_dbg(ar, ATH10K_DBG_DATA, in ath10k_process_rx()
1003 ath10k_dbg_dump(ar, ATH10K_DBG_HTT_DUMP, NULL, "rx skb: ", in ath10k_process_rx()
1005 trace_ath10k_rx_hdr(ar, skb->data, skb->len); in ath10k_process_rx()
1006 trace_ath10k_rx_payload(ar, skb->data, skb->len); in ath10k_process_rx()
1008 ieee80211_rx(ar->hw, skb); in ath10k_process_rx()
1011 static int ath10k_htt_rx_nwifi_hdrlen(struct ath10k *ar, in ath10k_htt_rx_nwifi_hdrlen() argument
1017 ar->fw_features)) in ath10k_htt_rx_nwifi_hdrlen()
1023 static void ath10k_htt_rx_h_undecap_raw(struct ath10k *ar, in ath10k_htt_rx_h_undecap_raw() argument
1079 skb_trim(msdu, msdu->len - ath10k_htt_rx_crypto_tail_len(ar, enctype)); in ath10k_htt_rx_h_undecap_raw()
1088 crypto_len = ath10k_htt_rx_crypto_param_len(ar, enctype); in ath10k_htt_rx_h_undecap_raw()
1095 static void ath10k_htt_rx_h_undecap_nwifi(struct ath10k *ar, in ath10k_htt_rx_h_undecap_nwifi() argument
1118 hdr_len = ath10k_htt_rx_nwifi_hdrlen(ar, hdr); in ath10k_htt_rx_h_undecap_nwifi()
1136 static void *ath10k_htt_rx_h_find_rfc1042(struct ath10k *ar, in ath10k_htt_rx_h_find_rfc1042() argument
1159 crypto_len = ath10k_htt_rx_crypto_param_len(ar, enctype); in ath10k_htt_rx_h_find_rfc1042()
1171 static void ath10k_htt_rx_h_undecap_eth(struct ath10k *ar, in ath10k_htt_rx_h_undecap_eth() argument
1189 rfc1042 = ath10k_htt_rx_h_find_rfc1042(ar, msdu, enctype); in ath10k_htt_rx_h_undecap_eth()
1216 static void ath10k_htt_rx_h_undecap_snap(struct ath10k *ar, in ath10k_htt_rx_h_undecap_snap() argument
1237 static void ath10k_htt_rx_h_undecap(struct ath10k *ar, in ath10k_htt_rx_h_undecap() argument
1264 ath10k_htt_rx_h_undecap_raw(ar, msdu, status, enctype, in ath10k_htt_rx_h_undecap()
1268 ath10k_htt_rx_h_undecap_nwifi(ar, msdu, status, first_hdr); in ath10k_htt_rx_h_undecap()
1271 ath10k_htt_rx_h_undecap_eth(ar, msdu, status, first_hdr, enctype); in ath10k_htt_rx_h_undecap()
1274 ath10k_htt_rx_h_undecap_snap(ar, msdu, status, first_hdr); in ath10k_htt_rx_h_undecap()
1315 static void ath10k_htt_rx_h_mpdu(struct ath10k *ar, in ath10k_htt_rx_h_mpdu() argument
1397 ath10k_htt_rx_h_undecap(ar, msdu, status, first_hdr, enctype, in ath10k_htt_rx_h_mpdu()
1412 static void ath10k_htt_rx_h_deliver(struct ath10k *ar, in ath10k_htt_rx_h_deliver() argument
1425 ath10k_process_rx(ar, status, msdu); in ath10k_htt_rx_h_deliver()
1472 static void ath10k_htt_rx_h_unchain(struct ath10k *ar, in ath10k_htt_rx_h_unchain() argument
1502 static bool ath10k_htt_rx_amsdu_allowed(struct ath10k *ar, in ath10k_htt_rx_amsdu_allowed() argument
1519 ath10k_warn(ar, "no channel configured; ignoring frame(s)!\n"); in ath10k_htt_rx_amsdu_allowed()
1536 ath10k_dbg(ar, ATH10K_DBG_HTT, "htt rx mgmt ctrl\n"); in ath10k_htt_rx_amsdu_allowed()
1540 if (test_bit(ATH10K_CAC_RUNNING, &ar->dev_flags)) { in ath10k_htt_rx_amsdu_allowed()
1541 ath10k_dbg(ar, ATH10K_DBG_HTT, "htt rx cac running\n"); in ath10k_htt_rx_amsdu_allowed()
1548 static void ath10k_htt_rx_h_filter(struct ath10k *ar, in ath10k_htt_rx_h_filter() argument
1555 if (ath10k_htt_rx_amsdu_allowed(ar, amsdu, rx_status)) in ath10k_htt_rx_h_filter()
1564 struct ath10k *ar = htt->ar; in ath10k_htt_rx_handler() local
1585 ath10k_dbg_dump(ar, ATH10K_DBG_HTT_DUMP, NULL, "htt rx ind: ", in ath10k_htt_rx_handler()
1598 ath10k_warn(ar, "rx ring became corrupted: %d\n", ret); in ath10k_htt_rx_handler()
1607 ath10k_htt_rx_h_ppdu(ar, &amsdu, rx_status, 0xffff); in ath10k_htt_rx_handler()
1608 ath10k_htt_rx_h_unchain(ar, &amsdu, ret > 0); in ath10k_htt_rx_handler()
1609 ath10k_htt_rx_h_filter(ar, &amsdu, rx_status); in ath10k_htt_rx_handler()
1610 ath10k_htt_rx_h_mpdu(ar, &amsdu, rx_status); in ath10k_htt_rx_handler()
1611 ath10k_htt_rx_h_deliver(ar, &amsdu, rx_status); in ath10k_htt_rx_handler()
1620 struct ath10k *ar = htt->ar; in ath10k_htt_rx_frag_handler() local
1639 ath10k_dbg(ar, ATH10K_DBG_HTT_DUMP, "htt rx frag ahead\n"); in ath10k_htt_rx_frag_handler()
1642 ath10k_warn(ar, "failed to pop amsdu from httr rx ring for fragmented rx %d\n", in ath10k_htt_rx_frag_handler()
1649 ath10k_warn(ar, "failed to pop frag amsdu: too many msdus\n"); in ath10k_htt_rx_frag_handler()
1654 ath10k_htt_rx_h_ppdu(ar, &amsdu, rx_status, 0xffff); in ath10k_htt_rx_frag_handler()
1655 ath10k_htt_rx_h_filter(ar, &amsdu, rx_status); in ath10k_htt_rx_frag_handler()
1656 ath10k_htt_rx_h_mpdu(ar, &amsdu, rx_status); in ath10k_htt_rx_frag_handler()
1657 ath10k_htt_rx_h_deliver(ar, &amsdu, rx_status); in ath10k_htt_rx_frag_handler()
1660 ath10k_dbg(ar, ATH10K_DBG_HTT, in ath10k_htt_rx_frag_handler()
1666 static void ath10k_htt_rx_frm_tx_compl(struct ath10k *ar, in ath10k_htt_rx_frm_tx_compl() argument
1669 struct ath10k_htt *htt = &ar->htt; in ath10k_htt_rx_frm_tx_compl()
1689 ath10k_warn(ar, "unhandled tx completion status %d\n", status); in ath10k_htt_rx_frm_tx_compl()
1694 ath10k_dbg(ar, ATH10K_DBG_HTT, "htt tx completion num_msdus %d\n", in ath10k_htt_rx_frm_tx_compl()
1704 static void ath10k_htt_rx_addba(struct ath10k *ar, struct htt_resp *resp) in ath10k_htt_rx_addba() argument
1715 ath10k_dbg(ar, ATH10K_DBG_HTT, in ath10k_htt_rx_addba()
1719 spin_lock_bh(&ar->data_lock); in ath10k_htt_rx_addba()
1720 peer = ath10k_peer_find_by_id(ar, peer_id); in ath10k_htt_rx_addba()
1722 ath10k_warn(ar, "received addba event for invalid peer_id: %hu\n", in ath10k_htt_rx_addba()
1724 spin_unlock_bh(&ar->data_lock); in ath10k_htt_rx_addba()
1728 arvif = ath10k_get_arvif(ar, peer->vdev_id); in ath10k_htt_rx_addba()
1730 ath10k_warn(ar, "received addba event for invalid vdev_id: %u\n", in ath10k_htt_rx_addba()
1732 spin_unlock_bh(&ar->data_lock); in ath10k_htt_rx_addba()
1736 ath10k_dbg(ar, ATH10K_DBG_HTT, in ath10k_htt_rx_addba()
1741 spin_unlock_bh(&ar->data_lock); in ath10k_htt_rx_addba()
1744 static void ath10k_htt_rx_delba(struct ath10k *ar, struct htt_resp *resp) in ath10k_htt_rx_delba() argument
1755 ath10k_dbg(ar, ATH10K_DBG_HTT, in ath10k_htt_rx_delba()
1759 spin_lock_bh(&ar->data_lock); in ath10k_htt_rx_delba()
1760 peer = ath10k_peer_find_by_id(ar, peer_id); in ath10k_htt_rx_delba()
1762 ath10k_warn(ar, "received addba event for invalid peer_id: %hu\n", in ath10k_htt_rx_delba()
1764 spin_unlock_bh(&ar->data_lock); in ath10k_htt_rx_delba()
1768 arvif = ath10k_get_arvif(ar, peer->vdev_id); in ath10k_htt_rx_delba()
1770 ath10k_warn(ar, "received addba event for invalid vdev_id: %u\n", in ath10k_htt_rx_delba()
1772 spin_unlock_bh(&ar->data_lock); in ath10k_htt_rx_delba()
1776 ath10k_dbg(ar, ATH10K_DBG_HTT, in ath10k_htt_rx_delba()
1781 spin_unlock_bh(&ar->data_lock); in ath10k_htt_rx_delba()
1835 static void ath10k_htt_rx_h_rx_offload(struct ath10k *ar, in ath10k_htt_rx_h_rx_offload() argument
1838 struct ath10k_htt *htt = &ar->htt; in ath10k_htt_rx_h_rx_offload()
1855 ath10k_warn(ar, "dropping frame: offloaded rx msdu is too long!\n"); in ath10k_htt_rx_h_rx_offload()
1880 ath10k_htt_rx_h_channel(ar, status, NULL, rx->vdev_id); in ath10k_htt_rx_h_rx_offload()
1881 ath10k_process_rx(ar, status, msdu); in ath10k_htt_rx_h_rx_offload()
1885 static void ath10k_htt_rx_in_ord_ind(struct ath10k *ar, struct sk_buff *skb) in ath10k_htt_rx_in_ord_ind() argument
1887 struct ath10k_htt *htt = &ar->htt; in ath10k_htt_rx_in_ord_ind()
1916 ath10k_dbg(ar, ATH10K_DBG_HTT, in ath10k_htt_rx_in_ord_ind()
1921 ath10k_warn(ar, "dropping invalid in order rx indication\n"); in ath10k_htt_rx_in_ord_ind()
1931 ath10k_warn(ar, "failed to pop paddr list: %d\n", ret); in ath10k_htt_rx_in_ord_ind()
1940 ath10k_htt_rx_h_rx_offload(ar, &list); in ath10k_htt_rx_in_ord_ind()
1953 ath10k_htt_rx_h_ppdu(ar, &amsdu, status, vdev_id); in ath10k_htt_rx_in_ord_ind()
1954 ath10k_htt_rx_h_filter(ar, &amsdu, status); in ath10k_htt_rx_in_ord_ind()
1955 ath10k_htt_rx_h_mpdu(ar, &amsdu, status); in ath10k_htt_rx_in_ord_ind()
1956 ath10k_htt_rx_h_deliver(ar, &amsdu, status); in ath10k_htt_rx_in_ord_ind()
1962 ath10k_warn(ar, "failed to extract amsdu: %d\n", ret); in ath10k_htt_rx_in_ord_ind()
1972 void ath10k_htt_t2h_msg_handler(struct ath10k *ar, struct sk_buff *skb) in ath10k_htt_t2h_msg_handler() argument
1974 struct ath10k_htt *htt = &ar->htt; in ath10k_htt_t2h_msg_handler()
1980 ath10k_warn(ar, "unaligned htt message, expect trouble\n"); in ath10k_htt_t2h_msg_handler()
1982 ath10k_dbg(ar, ATH10K_DBG_HTT, "htt rx, msg_type: 0x%0X\n", in ath10k_htt_t2h_msg_handler()
1985 if (resp->hdr.msg_type >= ar->htt.t2h_msg_types_max) { in ath10k_htt_t2h_msg_handler()
1986 ath10k_dbg(ar, ATH10K_DBG_HTT, "htt rx, unsupported msg_type: 0x%0X\n max: 0x%0X", in ath10k_htt_t2h_msg_handler()
1987 resp->hdr.msg_type, ar->htt.t2h_msg_types_max); in ath10k_htt_t2h_msg_handler()
1991 type = ar->htt.t2h_msg_types[resp->hdr.msg_type]; in ath10k_htt_t2h_msg_handler()
2049 struct ath10k *ar = htt->ar; in ath10k_htt_t2h_msg_handler() local
2052 ath10k_dbg(ar, ATH10K_DBG_HTT, in ath10k_htt_t2h_msg_handler()
2057 complete(&ar->install_key_done); in ath10k_htt_t2h_msg_handler()
2061 ath10k_dbg_dump(ar, ATH10K_DBG_HTT_DUMP, NULL, "htt event: ", in ath10k_htt_t2h_msg_handler()
2069 trace_ath10k_htt_stats(ar, skb->data, skb->len); in ath10k_htt_t2h_msg_handler()
2077 ath10k_warn(ar, "received an unexpected htt tx inspect event\n"); in ath10k_htt_t2h_msg_handler()
2080 ath10k_htt_rx_addba(ar, resp); in ath10k_htt_t2h_msg_handler()
2083 ath10k_htt_rx_delba(ar, resp); in ath10k_htt_t2h_msg_handler()
2089 trace_ath10k_htt_pktlog(ar, resp->pktlog_msg.payload, in ath10k_htt_t2h_msg_handler()
2118 ath10k_warn(ar, "htt event (%d) not handled\n", in ath10k_htt_t2h_msg_handler()
2120 ath10k_dbg_dump(ar, ATH10K_DBG_HTT_DUMP, NULL, "htt event: ", in ath10k_htt_t2h_msg_handler()
2133 struct ath10k *ar = htt->ar; in ath10k_htt_txrx_compl_task() local
2138 ath10k_htt_rx_frm_tx_compl(htt->ar, skb); in ath10k_htt_txrx_compl_task()
2150 ath10k_htt_rx_in_ord_ind(ar, skb); in ath10k_htt_txrx_compl_task()