Lines Matching refs:tcb
114 tx_control_block_t *tcb; in igb_tx() local
306 tcb = igb_get_free_list(tx_ring); in igb_tx()
308 if (tcb == NULL) { in igb_tx()
317 LIST_PUSH_TAIL(&pending_list, &tcb->link); in igb_tx()
327 ASSERT((tcb->tx_buf.len + current_len) <= in igb_tx()
328 tcb->tx_buf.size); in igb_tx()
338 } else if ((tcb->tx_buf.len + current_len + next_len) > in igb_tx()
339 tcb->tx_buf.size) { in igb_tx()
365 desc_num = igb_tx_copy(tx_ring, tcb, current_mp, in igb_tx()
376 desc_num = igb_tx_bind(tx_ring, tcb, current_mp, in igb_tx()
393 ASSERT(tcb); in igb_tx()
394 ASSERT(tcb->mp == NULL); in igb_tx()
395 tcb->mp = mp; in igb_tx()
455 tcb = (tx_control_block_t *)LIST_GET_HEAD(&pending_list); in igb_tx()
456 while (tcb) { in igb_tx()
457 tcb->mp = NULL; in igb_tx()
459 igb_free_tcb(tcb); in igb_tx()
461 tcb = (tx_control_block_t *) in igb_tx()
462 LIST_GET_NEXT(&pending_list, &tcb->link); in igb_tx()
482 igb_tx_copy(igb_tx_ring_t *tx_ring, tx_control_block_t *tcb, mblk_t *mp, in igb_tx_copy() argument
489 tx_buf = &tcb->tx_buf; in igb_tx_copy()
505 tcb->frag_num++; in igb_tx_copy()
523 tcb->tx_type = USE_COPY; in igb_tx_copy()
530 igb_save_desc(tcb, tx_buf->dma_address, tx_buf->len); in igb_tx_copy()
543 igb_tx_bind(igb_tx_ring_t *tx_ring, tx_control_block_t *tcb, mblk_t *mp, in igb_tx_bind() argument
554 status = ddi_dma_addr_bind_handle(tcb->tx_dma_handle, NULL, in igb_tx_bind()
564 tcb->frag_num++; in igb_tx_bind()
565 tcb->tx_type = USE_DMA; in igb_tx_bind()
577 igb_save_desc(tcb, in igb_tx_bind()
584 ddi_dma_nextcookie(tcb->tx_dma_handle, &dma_cookie); in igb_tx_bind()
892 tx_control_block_t *tcb, *first_tcb; in igb_tx_fill_ring() local
958 tcb = (tx_control_block_t *)LIST_POP_HEAD(pending_list); in igb_tx_fill_ring()
959 first_tcb = tcb; in igb_tx_fill_ring()
960 while (tcb != NULL) { in igb_tx_fill_ring()
962 for (i = 0; i < tcb->desc_num; i++) { in igb_tx_fill_ring()
965 tbd->read.buffer_addr = tcb->desc[i].address; in igb_tx_fill_ring()
966 tbd->read.cmd_type_len = tcb->desc[i].length; in igb_tx_fill_ring()
982 tx_ring->work_list[tcb_index] = tcb; in igb_tx_fill_ring()
985 tcb = (tx_control_block_t *)LIST_POP_HEAD(pending_list); in igb_tx_fill_ring()
1080 igb_save_desc(tx_control_block_t *tcb, uint64_t address, size_t length) in igb_save_desc() argument
1084 desc = &tcb->desc[tcb->desc_num]; in igb_save_desc()
1088 tcb->desc_num++; in igb_save_desc()
1107 tx_control_block_t *tcb; in igb_tx_recycle_legacy() local
1144 tcb = tx_ring->work_list[index]; in igb_tx_recycle_legacy()
1145 ASSERT(tcb != NULL); in igb_tx_recycle_legacy()
1147 while (tcb != NULL) { in igb_tx_recycle_legacy()
1158 last_index = tcb->last_index; in igb_tx_recycle_legacy()
1174 while (tcb != NULL) { in igb_tx_recycle_legacy()
1180 LIST_PUSH_TAIL(&pending_list, &tcb->link); in igb_tx_recycle_legacy()
1186 desc_num += tcb->desc_num; in igb_tx_recycle_legacy()
1191 index = NEXT_INDEX(index, tcb->desc_num, in igb_tx_recycle_legacy()
1194 tcb = tx_ring->work_list[index]; in igb_tx_recycle_legacy()
1231 tcb = (tx_control_block_t *)LIST_GET_HEAD(&pending_list); in igb_tx_recycle_legacy()
1232 while (tcb != NULL) { in igb_tx_recycle_legacy()
1236 igb_free_tcb(tcb); in igb_tx_recycle_legacy()
1238 tcb = (tx_control_block_t *) in igb_tx_recycle_legacy()
1239 LIST_GET_NEXT(&pending_list, &tcb->link); in igb_tx_recycle_legacy()
1262 tx_control_block_t *tcb; in igb_tx_recycle_head_wb() local
1314 tcb = tx_ring->work_list[index]; in igb_tx_recycle_head_wb()
1315 ASSERT(tcb != NULL); in igb_tx_recycle_head_wb()
1318 tcb->desc_num) { in igb_tx_recycle_head_wb()
1331 LIST_PUSH_TAIL(&pending_list, &tcb->link); in igb_tx_recycle_head_wb()
1336 index = NEXT_INDEX(index, tcb->desc_num, tx_ring->ring_size); in igb_tx_recycle_head_wb()
1341 desc_num += tcb->desc_num; in igb_tx_recycle_head_wb()
1372 tcb = (tx_control_block_t *)LIST_GET_HEAD(&pending_list); in igb_tx_recycle_head_wb()
1373 while (tcb) { in igb_tx_recycle_head_wb()
1377 igb_free_tcb(tcb); in igb_tx_recycle_head_wb()
1379 tcb = (tx_control_block_t *) in igb_tx_recycle_head_wb()
1380 LIST_GET_NEXT(&pending_list, &tcb->link); in igb_tx_recycle_head_wb()
1399 igb_free_tcb(tx_control_block_t *tcb) in igb_free_tcb() argument
1401 switch (tcb->tx_type) { in igb_free_tcb()
1406 tcb->tx_buf.len = 0; in igb_free_tcb()
1413 (void) ddi_dma_unbind_handle(tcb->tx_dma_handle); in igb_free_tcb()
1422 if (tcb->mp != NULL) { in igb_free_tcb()
1423 freemsg(tcb->mp); in igb_free_tcb()
1424 tcb->mp = NULL; in igb_free_tcb()
1427 tcb->tx_type = USE_NONE; in igb_free_tcb()
1428 tcb->last_index = MAX_TX_RING_SIZE; in igb_free_tcb()
1429 tcb->frag_num = 0; in igb_free_tcb()
1430 tcb->desc_num = 0; in igb_free_tcb()
1443 tx_control_block_t *tcb; in igb_get_free_list() local
1454 tcb = tx_ring->free_list[tx_ring->tcb_head]; in igb_get_free_list()
1455 ASSERT(tcb != NULL); in igb_get_free_list()
1462 return (tcb); in igb_get_free_list()
1479 tx_control_block_t *tcb; in igb_put_free_list() local
1486 tcb = (tx_control_block_t *)LIST_POP_HEAD(pending_list); in igb_put_free_list()
1487 while (tcb != NULL) { in igb_put_free_list()
1489 tx_ring->free_list[index] = tcb; in igb_put_free_list()
1495 tcb = (tx_control_block_t *)LIST_POP_HEAD(pending_list); in igb_put_free_list()