Lines Matching refs:tcb
23 ena_tx_control_block_t *tcb = &txq->et_tcbs[i]; in ena_free_tx_dma() local
24 ena_dma_free(&tcb->etcb_dma); in ena_free_tx_dma()
25 if (tcb->etcb_mp != NULL) in ena_free_tx_dma()
26 freemsg(tcb->etcb_mp); in ena_free_tx_dma()
81 ena_tx_control_block_t *tcb = &txq->et_tcbs[i]; in ena_alloc_tx_dma() local
90 if (!ena_dma_alloc(ena, &tcb->etcb_dma, &buf_conf, in ena_alloc_tx_dma()
96 tcb->etcb_id = i; in ena_alloc_tx_dma()
97 txq->et_tcbs_freelist[i] = tcb; in ena_alloc_tx_dma()
281 ena_tx_control_block_t *tcb; in ena_tcb_alloc() local
288 tcb = txq->et_tcbs_freelist[txq->et_tcbs_freelist_size]; in ena_tcb_alloc()
291 return (tcb); in ena_tcb_alloc()
295 ena_tcb_free(ena_txq_t *txq, ena_tx_control_block_t *tcb) in ena_tcb_free() argument
297 ASSERT3P(tcb, !=, NULL); in ena_tcb_free()
300 txq->et_tcbs_freelist[txq->et_tcbs_freelist_size++] = tcb; in ena_tcb_free()
305 ena_tx_copy_fragment(ena_tx_control_block_t *tcb, const mblk_t *mp, in ena_tx_copy_fragment() argument
310 (void *)(tcb->etcb_dma.edb_va + tcb->etcb_dma.edb_used_len); in ena_tx_copy_fragment()
317 VERIFY3U(tcb->etcb_dma.edb_used_len + len, <, tcb->etcb_dma.edb_len); in ena_tx_copy_fragment()
320 tcb->etcb_type = ENA_TCB_COPY; in ena_tx_copy_fragment()
321 tcb->etcb_dma.edb_used_len += len; in ena_tx_copy_fragment()
325 ena_tcb_pull(const ena_txq_t *txq, ena_tx_control_block_t *tcb, mblk_t *mp) in ena_tcb_pull() argument
332 ASSERT3P(tcb, !=, NULL); in ena_tcb_pull()
333 VERIFY0(tcb->etcb_dma.edb_used_len); in ena_tcb_pull()
343 ena_tx_copy_fragment(tcb, nmp, 0, nmp_len); in ena_tcb_pull()
347 ENA_DMA_SYNC(tcb->etcb_dma, DDI_DMA_SYNC_FORDEV); in ena_tcb_pull()
349 VERIFY3P(tcb->etcb_mp, ==, NULL); in ena_tcb_pull()
350 tcb->etcb_mp = mp; in ena_tcb_pull()
354 ena_fill_tx_data_desc(ena_txq_t *txq, ena_tx_control_block_t *tcb, in ena_fill_tx_data_desc() argument
379 ENAHW_TX_DESC_ADDR_LO(desc, tcb->etcb_dma.edb_cookie->dmac_laddress); in ena_fill_tx_data_desc()
380 ENAHW_TX_DESC_ADDR_HI(desc, tcb->etcb_dma.edb_cookie->dmac_laddress); in ena_fill_tx_data_desc()
413 ena_tx_control_block_t *tcb; in ena_ring_tx() local
466 tcb = ena_tcb_alloc(txq); in ena_ring_tx()
467 ASSERT3P(tcb, !=, NULL); in ena_ring_tx()
468 ena_tcb_pull(txq, tcb, mp); in ena_ring_tx()
473 ena_fill_tx_data_desc(txq, tcb, tcb->etcb_id, txq->et_sq_phase, desc, in ena_ring_tx()
475 DTRACE_PROBE3(tx__submit, ena_tx_control_block_t *, tcb, uint16_t, in ena_ring_tx()
476 tcb->etcb_id, enahw_tx_data_desc_t *, desc); in ena_ring_tx()
506 ena_tx_control_block_t *tcb; in ena_tx_intr_work() local
529 tcb = &txq->et_tcbs[req_id]; in ena_tx_intr_work()
531 ena_tx_control_block_t *, tcb); in ena_tx_intr_work()
534 tcb->etcb_dma.edb_used_len = 0; in ena_tx_intr_work()
535 mp = tcb->etcb_mp; in ena_tx_intr_work()
536 tcb->etcb_mp = NULL; in ena_tx_intr_work()
541 ena_tcb_free(txq, tcb); in ena_tx_intr_work()