Lines Matching refs:htt

62 	lockdep_assert_held(&ar->htt.tx_lock);  in __ath10k_htt_tx_txq_recalc()
64 if (!ar->htt.tx_q_state.enabled) in __ath10k_htt_tx_txq_recalc()
67 if (ar->htt.tx_q_state.mode != HTT_TX_MODE_SWITCH_PUSH_PULL) in __ath10k_htt_tx_txq_recalc()
84 if (unlikely(peer_id >= ar->htt.tx_q_state.num_peers) || in __ath10k_htt_tx_txq_recalc()
85 unlikely(tid >= ar->htt.tx_q_state.num_tids)) { in __ath10k_htt_tx_txq_recalc()
91 ar->htt.tx_q_state.vaddr->count[tid][peer_id] = count; in __ath10k_htt_tx_txq_recalc()
92 ar->htt.tx_q_state.vaddr->map[tid][idx] &= ~bit; in __ath10k_htt_tx_txq_recalc()
93 ar->htt.tx_q_state.vaddr->map[tid][idx] |= count ? bit : 0; in __ath10k_htt_tx_txq_recalc()
104 lockdep_assert_held(&ar->htt.tx_lock); in __ath10k_htt_tx_txq_sync()
106 if (!ar->htt.tx_q_state.enabled) in __ath10k_htt_tx_txq_sync()
109 if (ar->htt.tx_q_state.mode != HTT_TX_MODE_SWITCH_PUSH_PULL) in __ath10k_htt_tx_txq_sync()
112 seq = le32_to_cpu(ar->htt.tx_q_state.vaddr->seq); in __ath10k_htt_tx_txq_sync()
114 ar->htt.tx_q_state.vaddr->seq = cpu_to_le32(seq); in __ath10k_htt_tx_txq_sync()
119 size = sizeof(*ar->htt.tx_q_state.vaddr); in __ath10k_htt_tx_txq_sync()
121 ar->htt.tx_q_state.paddr, in __ath10k_htt_tx_txq_sync()
131 spin_lock_bh(&ar->htt.tx_lock); in ath10k_htt_tx_txq_recalc()
133 spin_unlock_bh(&ar->htt.tx_lock); in ath10k_htt_tx_txq_recalc()
138 spin_lock_bh(&ar->htt.tx_lock); in ath10k_htt_tx_txq_sync()
140 spin_unlock_bh(&ar->htt.tx_lock); in ath10k_htt_tx_txq_sync()
148 spin_lock_bh(&ar->htt.tx_lock); in ath10k_htt_tx_txq_update()
151 spin_unlock_bh(&ar->htt.tx_lock); in ath10k_htt_tx_txq_update()
154 void ath10k_htt_tx_dec_pending(struct ath10k_htt *htt) in ath10k_htt_tx_dec_pending() argument
156 lockdep_assert_held(&htt->tx_lock); in ath10k_htt_tx_dec_pending()
158 htt->num_pending_tx--; in ath10k_htt_tx_dec_pending()
159 if (htt->num_pending_tx == htt->max_num_pending_tx - 1) in ath10k_htt_tx_dec_pending()
160 ath10k_mac_tx_unlock(htt->ar, ATH10K_TX_PAUSE_Q_FULL); in ath10k_htt_tx_dec_pending()
163 int ath10k_htt_tx_inc_pending(struct ath10k_htt *htt) in ath10k_htt_tx_inc_pending() argument
165 lockdep_assert_held(&htt->tx_lock); in ath10k_htt_tx_inc_pending()
167 if (htt->num_pending_tx >= htt->max_num_pending_tx) in ath10k_htt_tx_inc_pending()
170 htt->num_pending_tx++; in ath10k_htt_tx_inc_pending()
171 if (htt->num_pending_tx == htt->max_num_pending_tx) in ath10k_htt_tx_inc_pending()
172 ath10k_mac_tx_lock(htt->ar, ATH10K_TX_PAUSE_Q_FULL); in ath10k_htt_tx_inc_pending()
177 int ath10k_htt_tx_mgmt_inc_pending(struct ath10k_htt *htt, bool is_mgmt, in ath10k_htt_tx_mgmt_inc_pending() argument
180 struct ath10k *ar = htt->ar; in ath10k_htt_tx_mgmt_inc_pending()
182 lockdep_assert_held(&htt->tx_lock); in ath10k_htt_tx_mgmt_inc_pending()
188 ar->hw_params.max_probe_resp_desc_thres < htt->num_pending_mgmt_tx) in ath10k_htt_tx_mgmt_inc_pending()
191 htt->num_pending_mgmt_tx++; in ath10k_htt_tx_mgmt_inc_pending()
196 void ath10k_htt_tx_mgmt_dec_pending(struct ath10k_htt *htt) in ath10k_htt_tx_mgmt_dec_pending() argument
198 lockdep_assert_held(&htt->tx_lock); in ath10k_htt_tx_mgmt_dec_pending()
200 if (!htt->ar->hw_params.max_probe_resp_desc_thres) in ath10k_htt_tx_mgmt_dec_pending()
203 htt->num_pending_mgmt_tx--; in ath10k_htt_tx_mgmt_dec_pending()
206 int ath10k_htt_tx_alloc_msdu_id(struct ath10k_htt *htt, struct sk_buff *skb) in ath10k_htt_tx_alloc_msdu_id() argument
208 struct ath10k *ar = htt->ar; in ath10k_htt_tx_alloc_msdu_id()
211 spin_lock_bh(&htt->tx_lock); in ath10k_htt_tx_alloc_msdu_id()
212 ret = idr_alloc(&htt->pending_tx, skb, 0, in ath10k_htt_tx_alloc_msdu_id()
213 htt->max_num_pending_tx, GFP_ATOMIC); in ath10k_htt_tx_alloc_msdu_id()
214 spin_unlock_bh(&htt->tx_lock); in ath10k_htt_tx_alloc_msdu_id()
221 void ath10k_htt_tx_free_msdu_id(struct ath10k_htt *htt, u16 msdu_id) in ath10k_htt_tx_free_msdu_id() argument
223 struct ath10k *ar = htt->ar; in ath10k_htt_tx_free_msdu_id()
225 lockdep_assert_held(&htt->tx_lock); in ath10k_htt_tx_free_msdu_id()
229 idr_remove(&htt->pending_tx, msdu_id); in ath10k_htt_tx_free_msdu_id()
232 static void ath10k_htt_tx_free_cont_txbuf_32(struct ath10k_htt *htt) in ath10k_htt_tx_free_cont_txbuf_32() argument
234 struct ath10k *ar = htt->ar; in ath10k_htt_tx_free_cont_txbuf_32()
237 if (!htt->txbuf.vaddr_txbuff_32) in ath10k_htt_tx_free_cont_txbuf_32()
240 size = htt->txbuf.size; in ath10k_htt_tx_free_cont_txbuf_32()
241 dma_free_coherent(ar->dev, size, htt->txbuf.vaddr_txbuff_32, in ath10k_htt_tx_free_cont_txbuf_32()
242 htt->txbuf.paddr); in ath10k_htt_tx_free_cont_txbuf_32()
243 htt->txbuf.vaddr_txbuff_32 = NULL; in ath10k_htt_tx_free_cont_txbuf_32()
246 static int ath10k_htt_tx_alloc_cont_txbuf_32(struct ath10k_htt *htt) in ath10k_htt_tx_alloc_cont_txbuf_32() argument
248 struct ath10k *ar = htt->ar; in ath10k_htt_tx_alloc_cont_txbuf_32()
251 size = htt->max_num_pending_tx * in ath10k_htt_tx_alloc_cont_txbuf_32()
254 htt->txbuf.vaddr_txbuff_32 = dma_alloc_coherent(ar->dev, size, in ath10k_htt_tx_alloc_cont_txbuf_32()
255 &htt->txbuf.paddr, in ath10k_htt_tx_alloc_cont_txbuf_32()
257 if (!htt->txbuf.vaddr_txbuff_32) in ath10k_htt_tx_alloc_cont_txbuf_32()
260 htt->txbuf.size = size; in ath10k_htt_tx_alloc_cont_txbuf_32()
265 static void ath10k_htt_tx_free_cont_txbuf_64(struct ath10k_htt *htt) in ath10k_htt_tx_free_cont_txbuf_64() argument
267 struct ath10k *ar = htt->ar; in ath10k_htt_tx_free_cont_txbuf_64()
270 if (!htt->txbuf.vaddr_txbuff_64) in ath10k_htt_tx_free_cont_txbuf_64()
273 size = htt->txbuf.size; in ath10k_htt_tx_free_cont_txbuf_64()
274 dma_free_coherent(ar->dev, size, htt->txbuf.vaddr_txbuff_64, in ath10k_htt_tx_free_cont_txbuf_64()
275 htt->txbuf.paddr); in ath10k_htt_tx_free_cont_txbuf_64()
276 htt->txbuf.vaddr_txbuff_64 = NULL; in ath10k_htt_tx_free_cont_txbuf_64()
279 static int ath10k_htt_tx_alloc_cont_txbuf_64(struct ath10k_htt *htt) in ath10k_htt_tx_alloc_cont_txbuf_64() argument
281 struct ath10k *ar = htt->ar; in ath10k_htt_tx_alloc_cont_txbuf_64()
284 size = htt->max_num_pending_tx * in ath10k_htt_tx_alloc_cont_txbuf_64()
287 htt->txbuf.vaddr_txbuff_64 = dma_alloc_coherent(ar->dev, size, in ath10k_htt_tx_alloc_cont_txbuf_64()
288 &htt->txbuf.paddr, in ath10k_htt_tx_alloc_cont_txbuf_64()
290 if (!htt->txbuf.vaddr_txbuff_64) in ath10k_htt_tx_alloc_cont_txbuf_64()
293 htt->txbuf.size = size; in ath10k_htt_tx_alloc_cont_txbuf_64()
298 static void ath10k_htt_tx_free_cont_frag_desc_32(struct ath10k_htt *htt) in ath10k_htt_tx_free_cont_frag_desc_32() argument
302 if (!htt->frag_desc.vaddr_desc_32) in ath10k_htt_tx_free_cont_frag_desc_32()
305 size = htt->max_num_pending_tx * in ath10k_htt_tx_free_cont_frag_desc_32()
308 dma_free_coherent(htt->ar->dev, in ath10k_htt_tx_free_cont_frag_desc_32()
310 htt->frag_desc.vaddr_desc_32, in ath10k_htt_tx_free_cont_frag_desc_32()
311 htt->frag_desc.paddr); in ath10k_htt_tx_free_cont_frag_desc_32()
313 htt->frag_desc.vaddr_desc_32 = NULL; in ath10k_htt_tx_free_cont_frag_desc_32()
316 static int ath10k_htt_tx_alloc_cont_frag_desc_32(struct ath10k_htt *htt) in ath10k_htt_tx_alloc_cont_frag_desc_32() argument
318 struct ath10k *ar = htt->ar; in ath10k_htt_tx_alloc_cont_frag_desc_32()
324 size = htt->max_num_pending_tx * in ath10k_htt_tx_alloc_cont_frag_desc_32()
326 htt->frag_desc.vaddr_desc_32 = dma_alloc_coherent(ar->dev, size, in ath10k_htt_tx_alloc_cont_frag_desc_32()
327 &htt->frag_desc.paddr, in ath10k_htt_tx_alloc_cont_frag_desc_32()
329 if (!htt->frag_desc.vaddr_desc_32) { in ath10k_htt_tx_alloc_cont_frag_desc_32()
333 htt->frag_desc.size = size; in ath10k_htt_tx_alloc_cont_frag_desc_32()
338 static void ath10k_htt_tx_free_cont_frag_desc_64(struct ath10k_htt *htt) in ath10k_htt_tx_free_cont_frag_desc_64() argument
342 if (!htt->frag_desc.vaddr_desc_64) in ath10k_htt_tx_free_cont_frag_desc_64()
345 size = htt->max_num_pending_tx * in ath10k_htt_tx_free_cont_frag_desc_64()
348 dma_free_coherent(htt->ar->dev, in ath10k_htt_tx_free_cont_frag_desc_64()
350 htt->frag_desc.vaddr_desc_64, in ath10k_htt_tx_free_cont_frag_desc_64()
351 htt->frag_desc.paddr); in ath10k_htt_tx_free_cont_frag_desc_64()
353 htt->frag_desc.vaddr_desc_64 = NULL; in ath10k_htt_tx_free_cont_frag_desc_64()
356 static int ath10k_htt_tx_alloc_cont_frag_desc_64(struct ath10k_htt *htt) in ath10k_htt_tx_alloc_cont_frag_desc_64() argument
358 struct ath10k *ar = htt->ar; in ath10k_htt_tx_alloc_cont_frag_desc_64()
364 size = htt->max_num_pending_tx * in ath10k_htt_tx_alloc_cont_frag_desc_64()
367 htt->frag_desc.vaddr_desc_64 = dma_alloc_coherent(ar->dev, size, in ath10k_htt_tx_alloc_cont_frag_desc_64()
368 &htt->frag_desc.paddr, in ath10k_htt_tx_alloc_cont_frag_desc_64()
370 if (!htt->frag_desc.vaddr_desc_64) { in ath10k_htt_tx_alloc_cont_frag_desc_64()
374 htt->frag_desc.size = size; in ath10k_htt_tx_alloc_cont_frag_desc_64()
379 static void ath10k_htt_tx_free_txq(struct ath10k_htt *htt) in ath10k_htt_tx_free_txq() argument
381 struct ath10k *ar = htt->ar; in ath10k_htt_tx_free_txq()
388 size = sizeof(*htt->tx_q_state.vaddr); in ath10k_htt_tx_free_txq()
390 dma_unmap_single(ar->dev, htt->tx_q_state.paddr, size, DMA_TO_DEVICE); in ath10k_htt_tx_free_txq()
391 kfree(htt->tx_q_state.vaddr); in ath10k_htt_tx_free_txq()
394 static int ath10k_htt_tx_alloc_txq(struct ath10k_htt *htt) in ath10k_htt_tx_alloc_txq() argument
396 struct ath10k *ar = htt->ar; in ath10k_htt_tx_alloc_txq()
404 htt->tx_q_state.num_peers = HTT_TX_Q_STATE_NUM_PEERS; in ath10k_htt_tx_alloc_txq()
405 htt->tx_q_state.num_tids = HTT_TX_Q_STATE_NUM_TIDS; in ath10k_htt_tx_alloc_txq()
406 htt->tx_q_state.type = HTT_Q_DEPTH_TYPE_BYTES; in ath10k_htt_tx_alloc_txq()
408 size = sizeof(*htt->tx_q_state.vaddr); in ath10k_htt_tx_alloc_txq()
409 htt->tx_q_state.vaddr = kzalloc(size, GFP_KERNEL); in ath10k_htt_tx_alloc_txq()
410 if (!htt->tx_q_state.vaddr) in ath10k_htt_tx_alloc_txq()
413 htt->tx_q_state.paddr = dma_map_single(ar->dev, htt->tx_q_state.vaddr, in ath10k_htt_tx_alloc_txq()
415 ret = dma_mapping_error(ar->dev, htt->tx_q_state.paddr); in ath10k_htt_tx_alloc_txq()
418 kfree(htt->tx_q_state.vaddr); in ath10k_htt_tx_alloc_txq()
425 static void ath10k_htt_tx_free_txdone_fifo(struct ath10k_htt *htt) in ath10k_htt_tx_free_txdone_fifo() argument
427 WARN_ON(!kfifo_is_empty(&htt->txdone_fifo)); in ath10k_htt_tx_free_txdone_fifo()
428 kfifo_free(&htt->txdone_fifo); in ath10k_htt_tx_free_txdone_fifo()
431 static int ath10k_htt_tx_alloc_txdone_fifo(struct ath10k_htt *htt) in ath10k_htt_tx_alloc_txdone_fifo() argument
436 size = roundup_pow_of_two(htt->max_num_pending_tx); in ath10k_htt_tx_alloc_txdone_fifo()
437 ret = kfifo_alloc(&htt->txdone_fifo, size, GFP_KERNEL); in ath10k_htt_tx_alloc_txdone_fifo()
441 static int ath10k_htt_tx_alloc_buf(struct ath10k_htt *htt) in ath10k_htt_tx_alloc_buf() argument
443 struct ath10k *ar = htt->ar; in ath10k_htt_tx_alloc_buf()
446 ret = ath10k_htt_alloc_txbuff(htt); in ath10k_htt_tx_alloc_buf()
452 ret = ath10k_htt_alloc_frag_desc(htt); in ath10k_htt_tx_alloc_buf()
458 ret = ath10k_htt_tx_alloc_txq(htt); in ath10k_htt_tx_alloc_buf()
464 ret = ath10k_htt_tx_alloc_txdone_fifo(htt); in ath10k_htt_tx_alloc_buf()
473 ath10k_htt_tx_free_txq(htt); in ath10k_htt_tx_alloc_buf()
476 ath10k_htt_free_frag_desc(htt); in ath10k_htt_tx_alloc_buf()
479 ath10k_htt_free_txbuff(htt); in ath10k_htt_tx_alloc_buf()
484 int ath10k_htt_tx_start(struct ath10k_htt *htt) in ath10k_htt_tx_start() argument
486 struct ath10k *ar = htt->ar; in ath10k_htt_tx_start()
490 htt->max_num_pending_tx); in ath10k_htt_tx_start()
492 spin_lock_init(&htt->tx_lock); in ath10k_htt_tx_start()
493 idr_init(&htt->pending_tx); in ath10k_htt_tx_start()
495 if (htt->tx_mem_allocated) in ath10k_htt_tx_start()
498 ret = ath10k_htt_tx_alloc_buf(htt); in ath10k_htt_tx_start()
502 htt->tx_mem_allocated = true; in ath10k_htt_tx_start()
507 idr_destroy(&htt->pending_tx); in ath10k_htt_tx_start()
515 struct ath10k_htt *htt = &ar->htt; in ath10k_htt_tx_clean_up_pending() local
523 ath10k_txrx_tx_unref(htt, &tx_done); in ath10k_htt_tx_clean_up_pending()
528 void ath10k_htt_tx_destroy(struct ath10k_htt *htt) in ath10k_htt_tx_destroy() argument
530 if (!htt->tx_mem_allocated) in ath10k_htt_tx_destroy()
533 ath10k_htt_free_txbuff(htt); in ath10k_htt_tx_destroy()
534 ath10k_htt_tx_free_txq(htt); in ath10k_htt_tx_destroy()
535 ath10k_htt_free_frag_desc(htt); in ath10k_htt_tx_destroy()
536 ath10k_htt_tx_free_txdone_fifo(htt); in ath10k_htt_tx_destroy()
537 htt->tx_mem_allocated = false; in ath10k_htt_tx_destroy()
540 void ath10k_htt_tx_stop(struct ath10k_htt *htt) in ath10k_htt_tx_stop() argument
542 idr_for_each(&htt->pending_tx, ath10k_htt_tx_clean_up_pending, htt->ar); in ath10k_htt_tx_stop()
543 idr_destroy(&htt->pending_tx); in ath10k_htt_tx_stop()
546 void ath10k_htt_tx_free(struct ath10k_htt *htt) in ath10k_htt_tx_free() argument
548 ath10k_htt_tx_stop(htt); in ath10k_htt_tx_free()
549 ath10k_htt_tx_destroy(htt); in ath10k_htt_tx_free()
563 int ath10k_htt_h2t_ver_req_msg(struct ath10k_htt *htt) in ath10k_htt_h2t_ver_req_msg() argument
565 struct ath10k *ar = htt->ar; in ath10k_htt_h2t_ver_req_msg()
582 ret = ath10k_htc_send(&htt->ar->htc, htt->eid, skb); in ath10k_htt_h2t_ver_req_msg()
591 int ath10k_htt_h2t_stats_req(struct ath10k_htt *htt, u8 mask, u64 cookie) in ath10k_htt_h2t_stats_req() argument
593 struct ath10k *ar = htt->ar; in ath10k_htt_h2t_stats_req()
623 ret = ath10k_htc_send(&htt->ar->htc, htt->eid, skb); in ath10k_htt_h2t_stats_req()
634 static int ath10k_htt_send_frag_desc_bank_cfg_32(struct ath10k_htt *htt) in ath10k_htt_send_frag_desc_bank_cfg_32() argument
636 struct ath10k *ar = htt->ar; in ath10k_htt_send_frag_desc_bank_cfg_32()
646 if (!htt->frag_desc.paddr) { in ath10k_htt_send_frag_desc_bank_cfg_32()
661 info |= SM(htt->tx_q_state.type, in ath10k_htt_send_frag_desc_bank_cfg_32()
672 cfg->bank_base_addrs[0] = __cpu_to_le32(htt->frag_desc.paddr); in ath10k_htt_send_frag_desc_bank_cfg_32()
674 cfg->bank_id[0].bank_max_id = __cpu_to_le16(htt->max_num_pending_tx - in ath10k_htt_send_frag_desc_bank_cfg_32()
677 cfg->q_state.paddr = cpu_to_le32(htt->tx_q_state.paddr); in ath10k_htt_send_frag_desc_bank_cfg_32()
678 cfg->q_state.num_peers = cpu_to_le16(htt->tx_q_state.num_peers); in ath10k_htt_send_frag_desc_bank_cfg_32()
679 cfg->q_state.num_tids = cpu_to_le16(htt->tx_q_state.num_tids); in ath10k_htt_send_frag_desc_bank_cfg_32()
685 ret = ath10k_htc_send(&htt->ar->htc, htt->eid, skb); in ath10k_htt_send_frag_desc_bank_cfg_32()
696 static int ath10k_htt_send_frag_desc_bank_cfg_64(struct ath10k_htt *htt) in ath10k_htt_send_frag_desc_bank_cfg_64() argument
698 struct ath10k *ar = htt->ar; in ath10k_htt_send_frag_desc_bank_cfg_64()
708 if (!htt->frag_desc.paddr) { in ath10k_htt_send_frag_desc_bank_cfg_64()
723 info |= SM(htt->tx_q_state.type, in ath10k_htt_send_frag_desc_bank_cfg_64()
734 cfg->bank_base_addrs[0] = __cpu_to_le64(htt->frag_desc.paddr); in ath10k_htt_send_frag_desc_bank_cfg_64()
736 cfg->bank_id[0].bank_max_id = __cpu_to_le16(htt->max_num_pending_tx - in ath10k_htt_send_frag_desc_bank_cfg_64()
739 cfg->q_state.paddr = cpu_to_le32(htt->tx_q_state.paddr); in ath10k_htt_send_frag_desc_bank_cfg_64()
740 cfg->q_state.num_peers = cpu_to_le16(htt->tx_q_state.num_peers); in ath10k_htt_send_frag_desc_bank_cfg_64()
741 cfg->q_state.num_tids = cpu_to_le16(htt->tx_q_state.num_tids); in ath10k_htt_send_frag_desc_bank_cfg_64()
747 ret = ath10k_htc_send(&htt->ar->htc, htt->eid, skb); in ath10k_htt_send_frag_desc_bank_cfg_64()
796 static int ath10k_htt_send_rx_ring_cfg_32(struct ath10k_htt *htt) in ath10k_htt_send_rx_ring_cfg_32() argument
798 struct ath10k *ar = htt->ar; in ath10k_htt_send_rx_ring_cfg_32()
848 fw_idx = __le32_to_cpu(*htt->rx_ring.alloc_idx.vaddr); in ath10k_htt_send_rx_ring_cfg_32()
851 __cpu_to_le32(htt->rx_ring.alloc_idx.paddr); in ath10k_htt_send_rx_ring_cfg_32()
852 ring->rx_ring_base_paddr = __cpu_to_le32(htt->rx_ring.base_paddr); in ath10k_htt_send_rx_ring_cfg_32()
853 ring->rx_ring_len = __cpu_to_le16(htt->rx_ring.size); in ath10k_htt_send_rx_ring_cfg_32()
859 ret = ath10k_htc_send(&htt->ar->htc, htt->eid, skb); in ath10k_htt_send_rx_ring_cfg_32()
868 static int ath10k_htt_send_rx_ring_cfg_64(struct ath10k_htt *htt) in ath10k_htt_send_rx_ring_cfg_64() argument
870 struct ath10k *ar = htt->ar; in ath10k_htt_send_rx_ring_cfg_64()
918 fw_idx = __le32_to_cpu(*htt->rx_ring.alloc_idx.vaddr); in ath10k_htt_send_rx_ring_cfg_64()
920 ring->fw_idx_shadow_reg_paddr = __cpu_to_le64(htt->rx_ring.alloc_idx.paddr); in ath10k_htt_send_rx_ring_cfg_64()
921 ring->rx_ring_base_paddr = __cpu_to_le64(htt->rx_ring.base_paddr); in ath10k_htt_send_rx_ring_cfg_64()
922 ring->rx_ring_len = __cpu_to_le16(htt->rx_ring.size); in ath10k_htt_send_rx_ring_cfg_64()
928 ret = ath10k_htc_send(&htt->ar->htc, htt->eid, skb); in ath10k_htt_send_rx_ring_cfg_64()
937 int ath10k_htt_h2t_aggr_cfg_msg(struct ath10k_htt *htt, in ath10k_htt_h2t_aggr_cfg_msg() argument
941 struct ath10k *ar = htt->ar; in ath10k_htt_h2t_aggr_cfg_msg()
975 ret = ath10k_htc_send(&htt->ar->htc, htt->eid, skb); in ath10k_htt_h2t_aggr_cfg_msg()
1019 ret = ath10k_htc_send(&ar->htc, ar->htt.eid, skb); in ath10k_htt_tx_fetch_resp()
1064 int ath10k_htt_mgmt_tx(struct ath10k_htt *htt, struct sk_buff *msdu) in ath10k_htt_mgmt_tx() argument
1066 struct ath10k *ar = htt->ar; in ath10k_htt_mgmt_tx()
1080 res = ath10k_htt_tx_alloc_msdu_id(htt, msdu); in ath10k_htt_mgmt_tx()
1119 res = ath10k_htc_send(&htt->ar->htc, htt->eid, txdesc); in ath10k_htt_mgmt_tx()
1130 spin_lock_bh(&htt->tx_lock); in ath10k_htt_mgmt_tx()
1131 ath10k_htt_tx_free_msdu_id(htt, msdu_id); in ath10k_htt_mgmt_tx()
1132 spin_unlock_bh(&htt->tx_lock); in ath10k_htt_mgmt_tx()
1137 static int ath10k_htt_tx_32(struct ath10k_htt *htt, in ath10k_htt_tx_32() argument
1141 struct ath10k *ar = htt->ar; in ath10k_htt_tx_32()
1162 res = ath10k_htt_tx_alloc_msdu_id(htt, msdu); in ath10k_htt_tx_32()
1168 prefetch_len = min(htt->prefetch_len, msdu->len); in ath10k_htt_tx_32()
1171 txbuf = htt->txbuf.vaddr_txbuff_32 + msdu_id; in ath10k_htt_tx_32()
1172 txbuf_paddr = htt->txbuf.paddr + in ath10k_htt_tx_32()
1204 ext_desc_t = htt->frag_desc.vaddr_desc_32; in ath10k_htt_tx_32()
1215 frags_paddr = htt->frag_desc.paddr + in ath10k_htt_tx_32()
1255 txbuf->htc_hdr.eid = htt->eid; in ath10k_htt_tx_32()
1321 res = ath10k_hif_tx_sg(htt->ar, in ath10k_htt_tx_32()
1322 htt->ar->htc.endpoint[htt->eid].ul_pipe_id, in ath10k_htt_tx_32()
1332 ath10k_htt_tx_free_msdu_id(htt, msdu_id); in ath10k_htt_tx_32()
1337 static int ath10k_htt_tx_64(struct ath10k_htt *htt, in ath10k_htt_tx_64() argument
1341 struct ath10k *ar = htt->ar; in ath10k_htt_tx_64()
1362 res = ath10k_htt_tx_alloc_msdu_id(htt, msdu); in ath10k_htt_tx_64()
1368 prefetch_len = min(htt->prefetch_len, msdu->len); in ath10k_htt_tx_64()
1371 txbuf = htt->txbuf.vaddr_txbuff_64 + msdu_id; in ath10k_htt_tx_64()
1372 txbuf_paddr = htt->txbuf.paddr + in ath10k_htt_tx_64()
1404 ext_desc_t = htt->frag_desc.vaddr_desc_64; in ath10k_htt_tx_64()
1416 frags_paddr = htt->frag_desc.paddr + in ath10k_htt_tx_64()
1457 txbuf->htc_hdr.eid = htt->eid; in ath10k_htt_tx_64()
1528 res = ath10k_hif_tx_sg(htt->ar, in ath10k_htt_tx_64()
1529 htt->ar->htc.endpoint[htt->eid].ul_pipe_id, in ath10k_htt_tx_64()
1539 ath10k_htt_tx_free_msdu_id(htt, msdu_id); in ath10k_htt_tx_64()
1564 void ath10k_htt_set_tx_ops(struct ath10k_htt *htt) in ath10k_htt_set_tx_ops() argument
1566 struct ath10k *ar = htt->ar; in ath10k_htt_set_tx_ops()
1569 htt->tx_ops = &htt_tx_ops_64; in ath10k_htt_set_tx_ops()
1571 htt->tx_ops = &htt_tx_ops_32; in ath10k_htt_set_tx_ops()