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()
673 static void ath10k_htt_rx_h_rates(struct ath10k *ar, in ath10k_htt_rx_h_rates() argument
776 static bool ath10k_htt_rx_h_channel(struct ath10k *ar, in ath10k_htt_rx_h_channel() argument
781 spin_lock_bh(&ar->data_lock); in ath10k_htt_rx_h_channel()
782 ch = ar->scan_channel; in ath10k_htt_rx_h_channel()
784 ch = ar->rx_channel; in ath10k_htt_rx_h_channel()
785 spin_unlock_bh(&ar->data_lock); in ath10k_htt_rx_h_channel()
796 static void ath10k_htt_rx_h_signal(struct ath10k *ar, in ath10k_htt_rx_h_signal() argument
806 static void ath10k_htt_rx_h_mactime(struct ath10k *ar, in ath10k_htt_rx_h_mactime() argument
820 static void ath10k_htt_rx_h_ppdu(struct ath10k *ar, in ath10k_htt_rx_h_ppdu() argument
853 ath10k_htt_rx_h_signal(ar, status, rxd); in ath10k_htt_rx_h_ppdu()
854 ath10k_htt_rx_h_channel(ar, status); in ath10k_htt_rx_h_ppdu()
855 ath10k_htt_rx_h_rates(ar, status, rxd); in ath10k_htt_rx_h_ppdu()
859 ath10k_htt_rx_h_mactime(ar, status, rxd); in ath10k_htt_rx_h_ppdu()
891 static void ath10k_process_rx(struct ath10k *ar, in ath10k_process_rx() argument
902 ath10k_dbg(ar, ATH10K_DBG_DATA, in ath10k_process_rx()
924 ath10k_dbg_dump(ar, ATH10K_DBG_HTT_DUMP, NULL, "rx skb: ", in ath10k_process_rx()
926 trace_ath10k_rx_hdr(ar, skb->data, skb->len); in ath10k_process_rx()
927 trace_ath10k_rx_payload(ar, skb->data, skb->len); in ath10k_process_rx()
929 ieee80211_rx(ar->hw, skb); in ath10k_process_rx()
938 static void ath10k_htt_rx_h_undecap_raw(struct ath10k *ar, in ath10k_htt_rx_h_undecap_raw() argument
995 skb_trim(msdu, msdu->len - ath10k_htt_rx_crypto_tail_len(ar, enctype)); in ath10k_htt_rx_h_undecap_raw()
1004 crypto_len = ath10k_htt_rx_crypto_param_len(ar, enctype); in ath10k_htt_rx_h_undecap_raw()
1011 static void ath10k_htt_rx_h_undecap_nwifi(struct ath10k *ar, in ath10k_htt_rx_h_undecap_nwifi() argument
1052 static void *ath10k_htt_rx_h_find_rfc1042(struct ath10k *ar, in ath10k_htt_rx_h_find_rfc1042() argument
1075 crypto_len = ath10k_htt_rx_crypto_param_len(ar, enctype); in ath10k_htt_rx_h_find_rfc1042()
1087 static void ath10k_htt_rx_h_undecap_eth(struct ath10k *ar, in ath10k_htt_rx_h_undecap_eth() argument
1105 rfc1042 = ath10k_htt_rx_h_find_rfc1042(ar, msdu, enctype); in ath10k_htt_rx_h_undecap_eth()
1132 static void ath10k_htt_rx_h_undecap_snap(struct ath10k *ar, in ath10k_htt_rx_h_undecap_snap() argument
1153 static void ath10k_htt_rx_h_undecap(struct ath10k *ar, in ath10k_htt_rx_h_undecap() argument
1182 ath10k_htt_rx_h_undecap_raw(ar, msdu, status, enctype, in ath10k_htt_rx_h_undecap()
1186 ath10k_htt_rx_h_undecap_nwifi(ar, msdu, status, first_hdr); in ath10k_htt_rx_h_undecap()
1189 ath10k_htt_rx_h_undecap_eth(ar, msdu, status, first_hdr, enctype); in ath10k_htt_rx_h_undecap()
1192 ath10k_htt_rx_h_undecap_snap(ar, msdu, status, first_hdr); in ath10k_htt_rx_h_undecap()
1233 static void ath10k_htt_rx_h_mpdu(struct ath10k *ar, in ath10k_htt_rx_h_mpdu() argument
1315 ath10k_htt_rx_h_undecap(ar, msdu, status, first_hdr, enctype, in ath10k_htt_rx_h_mpdu()
1330 static void ath10k_htt_rx_h_deliver(struct ath10k *ar, in ath10k_htt_rx_h_deliver() argument
1343 ath10k_process_rx(ar, status, msdu); in ath10k_htt_rx_h_deliver()
1390 static void ath10k_htt_rx_h_unchain(struct ath10k *ar, in ath10k_htt_rx_h_unchain() argument
1420 static bool ath10k_htt_rx_amsdu_allowed(struct ath10k *ar, in ath10k_htt_rx_amsdu_allowed() argument
1437 ath10k_warn(ar, "no channel configured; ignoring frame(s)!\n"); in ath10k_htt_rx_amsdu_allowed()
1454 ath10k_dbg(ar, ATH10K_DBG_HTT, "htt rx mgmt ctrl\n"); in ath10k_htt_rx_amsdu_allowed()
1458 if (test_bit(ATH10K_CAC_RUNNING, &ar->dev_flags)) { in ath10k_htt_rx_amsdu_allowed()
1459 ath10k_dbg(ar, ATH10K_DBG_HTT, "htt rx cac running\n"); in ath10k_htt_rx_amsdu_allowed()
1466 static void ath10k_htt_rx_h_filter(struct ath10k *ar, in ath10k_htt_rx_h_filter() argument
1473 if (ath10k_htt_rx_amsdu_allowed(ar, amsdu, rx_status)) in ath10k_htt_rx_h_filter()
1482 struct ath10k *ar = htt->ar; in ath10k_htt_rx_handler() local
1503 ath10k_dbg_dump(ar, ATH10K_DBG_HTT_DUMP, NULL, "htt rx ind: ", in ath10k_htt_rx_handler()
1516 ath10k_warn(ar, "rx ring became corrupted: %d\n", ret); in ath10k_htt_rx_handler()
1525 ath10k_htt_rx_h_ppdu(ar, &amsdu, rx_status); in ath10k_htt_rx_handler()
1526 ath10k_htt_rx_h_unchain(ar, &amsdu, ret > 0); in ath10k_htt_rx_handler()
1527 ath10k_htt_rx_h_filter(ar, &amsdu, rx_status); in ath10k_htt_rx_handler()
1528 ath10k_htt_rx_h_mpdu(ar, &amsdu, rx_status); in ath10k_htt_rx_handler()
1529 ath10k_htt_rx_h_deliver(ar, &amsdu, rx_status); in ath10k_htt_rx_handler()
1538 struct ath10k *ar = htt->ar; in ath10k_htt_rx_frag_handler() local
1557 ath10k_dbg(ar, ATH10K_DBG_HTT_DUMP, "htt rx frag ahead\n"); in ath10k_htt_rx_frag_handler()
1560 ath10k_warn(ar, "failed to pop amsdu from httr rx ring for fragmented rx %d\n", in ath10k_htt_rx_frag_handler()
1567 ath10k_warn(ar, "failed to pop frag amsdu: too many msdus\n"); in ath10k_htt_rx_frag_handler()
1572 ath10k_htt_rx_h_ppdu(ar, &amsdu, rx_status); in ath10k_htt_rx_frag_handler()
1573 ath10k_htt_rx_h_filter(ar, &amsdu, rx_status); in ath10k_htt_rx_frag_handler()
1574 ath10k_htt_rx_h_mpdu(ar, &amsdu, rx_status); in ath10k_htt_rx_frag_handler()
1575 ath10k_htt_rx_h_deliver(ar, &amsdu, rx_status); in ath10k_htt_rx_frag_handler()
1578 ath10k_dbg(ar, ATH10K_DBG_HTT, in ath10k_htt_rx_frag_handler()
1584 static void ath10k_htt_rx_frm_tx_compl(struct ath10k *ar, in ath10k_htt_rx_frm_tx_compl() argument
1587 struct ath10k_htt *htt = &ar->htt; in ath10k_htt_rx_frm_tx_compl()
1608 ath10k_warn(ar, "unhandled tx completion status %d\n", status); in ath10k_htt_rx_frm_tx_compl()
1613 ath10k_dbg(ar, ATH10K_DBG_HTT, "htt tx completion num_msdus %d\n", in ath10k_htt_rx_frm_tx_compl()
1623 static void ath10k_htt_rx_addba(struct ath10k *ar, struct htt_resp *resp) in ath10k_htt_rx_addba() argument
1634 ath10k_dbg(ar, ATH10K_DBG_HTT, in ath10k_htt_rx_addba()
1638 spin_lock_bh(&ar->data_lock); in ath10k_htt_rx_addba()
1639 peer = ath10k_peer_find_by_id(ar, peer_id); in ath10k_htt_rx_addba()
1641 ath10k_warn(ar, "received addba event for invalid peer_id: %hu\n", in ath10k_htt_rx_addba()
1643 spin_unlock_bh(&ar->data_lock); in ath10k_htt_rx_addba()
1647 arvif = ath10k_get_arvif(ar, peer->vdev_id); in ath10k_htt_rx_addba()
1649 ath10k_warn(ar, "received addba event for invalid vdev_id: %u\n", in ath10k_htt_rx_addba()
1651 spin_unlock_bh(&ar->data_lock); in ath10k_htt_rx_addba()
1655 ath10k_dbg(ar, ATH10K_DBG_HTT, in ath10k_htt_rx_addba()
1660 spin_unlock_bh(&ar->data_lock); in ath10k_htt_rx_addba()
1663 static void ath10k_htt_rx_delba(struct ath10k *ar, struct htt_resp *resp) in ath10k_htt_rx_delba() argument
1674 ath10k_dbg(ar, ATH10K_DBG_HTT, in ath10k_htt_rx_delba()
1678 spin_lock_bh(&ar->data_lock); in ath10k_htt_rx_delba()
1679 peer = ath10k_peer_find_by_id(ar, peer_id); in ath10k_htt_rx_delba()
1681 ath10k_warn(ar, "received addba event for invalid peer_id: %hu\n", in ath10k_htt_rx_delba()
1683 spin_unlock_bh(&ar->data_lock); in ath10k_htt_rx_delba()
1687 arvif = ath10k_get_arvif(ar, peer->vdev_id); in ath10k_htt_rx_delba()
1689 ath10k_warn(ar, "received addba event for invalid vdev_id: %u\n", in ath10k_htt_rx_delba()
1691 spin_unlock_bh(&ar->data_lock); in ath10k_htt_rx_delba()
1695 ath10k_dbg(ar, ATH10K_DBG_HTT, in ath10k_htt_rx_delba()
1700 spin_unlock_bh(&ar->data_lock); in ath10k_htt_rx_delba()
1754 static void ath10k_htt_rx_h_rx_offload(struct ath10k *ar, in ath10k_htt_rx_h_rx_offload() argument
1757 struct ath10k_htt *htt = &ar->htt; in ath10k_htt_rx_h_rx_offload()
1774 ath10k_warn(ar, "dropping frame: offloaded rx msdu is too long!\n"); in ath10k_htt_rx_h_rx_offload()
1799 ath10k_htt_rx_h_channel(ar, status); in ath10k_htt_rx_h_rx_offload()
1800 ath10k_process_rx(ar, status, msdu); in ath10k_htt_rx_h_rx_offload()
1804 static void ath10k_htt_rx_in_ord_ind(struct ath10k *ar, struct sk_buff *skb) in ath10k_htt_rx_in_ord_ind() argument
1806 struct ath10k_htt *htt = &ar->htt; in ath10k_htt_rx_in_ord_ind()
1835 ath10k_dbg(ar, ATH10K_DBG_HTT, in ath10k_htt_rx_in_ord_ind()
1840 ath10k_warn(ar, "dropping invalid in order rx indication\n"); in ath10k_htt_rx_in_ord_ind()
1850 ath10k_warn(ar, "failed to pop paddr list: %d\n", ret); in ath10k_htt_rx_in_ord_ind()
1859 ath10k_htt_rx_h_rx_offload(ar, &list); in ath10k_htt_rx_in_ord_ind()
1872 ath10k_htt_rx_h_ppdu(ar, &amsdu, status); in ath10k_htt_rx_in_ord_ind()
1873 ath10k_htt_rx_h_filter(ar, &amsdu, status); in ath10k_htt_rx_in_ord_ind()
1874 ath10k_htt_rx_h_mpdu(ar, &amsdu, status); in ath10k_htt_rx_in_ord_ind()
1875 ath10k_htt_rx_h_deliver(ar, &amsdu, status); in ath10k_htt_rx_in_ord_ind()
1881 ath10k_warn(ar, "failed to extract amsdu: %d\n", ret); in ath10k_htt_rx_in_ord_ind()
1891 void ath10k_htt_t2h_msg_handler(struct ath10k *ar, struct sk_buff *skb) in ath10k_htt_t2h_msg_handler() argument
1893 struct ath10k_htt *htt = &ar->htt; in ath10k_htt_t2h_msg_handler()
1898 ath10k_warn(ar, "unaligned htt message, expect trouble\n"); in ath10k_htt_t2h_msg_handler()
1900 ath10k_dbg(ar, ATH10K_DBG_HTT, "htt rx, msg_type: 0x%0X\n", in ath10k_htt_t2h_msg_handler()
1961 struct ath10k *ar = htt->ar; in ath10k_htt_t2h_msg_handler() local
1964 ath10k_dbg(ar, ATH10K_DBG_HTT, in ath10k_htt_t2h_msg_handler()
1969 complete(&ar->install_key_done); in ath10k_htt_t2h_msg_handler()
1973 ath10k_dbg_dump(ar, ATH10K_DBG_HTT_DUMP, NULL, "htt event: ", in ath10k_htt_t2h_msg_handler()
1982 trace_ath10k_htt_stats(ar, skb->data, skb->len); in ath10k_htt_t2h_msg_handler()
1990 ath10k_warn(ar, "received an unexpected htt tx inspect event\n"); in ath10k_htt_t2h_msg_handler()
1993 ath10k_htt_rx_addba(ar, resp); in ath10k_htt_t2h_msg_handler()
1996 ath10k_htt_rx_delba(ar, resp); in ath10k_htt_t2h_msg_handler()
2002 trace_ath10k_htt_pktlog(ar, resp->pktlog_msg.payload, in ath10k_htt_t2h_msg_handler()
2028 ath10k_warn(ar, "htt event (%d) not handled\n", in ath10k_htt_t2h_msg_handler()
2030 ath10k_dbg_dump(ar, ATH10K_DBG_HTT_DUMP, NULL, "htt event: ", in ath10k_htt_t2h_msg_handler()
2042 struct ath10k *ar = htt->ar; in ath10k_htt_txrx_compl_task() local
2048 ath10k_htt_rx_frm_tx_compl(htt->ar, skb); in ath10k_htt_txrx_compl_task()
2061 ath10k_htt_rx_in_ord_ind(ar, skb); in ath10k_htt_txrx_compl_task()