Lines Matching full:tcb

348 /* TCB (Transmit Control Block: Host Side) */
349 struct tcb { struct
350 struct tcb *next; /* Next entry in ring */ argument
360 /* TCB (Transmit Control Block) memory and lists */
361 struct tcb *tcb_ring; argument
364 struct tcb *tcb_qhead;
365 struct tcb *tcb_qtail;
368 struct tcb *send_head;
369 struct tcb *send_tail;
459 spinlock_t tcb_send_qlock; /* protects the tx_ring send tcb list */
460 spinlock_t tcb_ready_qlock; /* protects the tx_ring ready tcb list */
1753 struct tcb *tcb = tx_ring->tcb_ring; in et131x_init_send() local
1755 tx_ring->tcb_qhead = tcb; in et131x_init_send()
1757 memset(tcb, 0, sizeof(struct tcb) * NUM_TCB); in et131x_init_send()
1760 tcb->next = tcb + 1; in et131x_init_send()
1761 tcb++; in et131x_init_send()
1764 tcb--; in et131x_init_send()
1765 tx_ring->tcb_qtail = tcb; in et131x_init_send()
1766 tcb->next = NULL; in et131x_init_send()
2359 /* Allocate memory for the TCB's (Transmit Control Block) */ in et131x_tx_dma_memory_alloc()
2360 tx_ring->tcb_ring = kcalloc(NUM_TCB, sizeof(struct tcb), in et131x_tx_dma_memory_alloc()
2412 /* Free the memory for the tcb structures */ in et131x_tx_dma_memory_free()
2417 static int nic_send_packet(struct et131x_adapter *adapter, struct tcb *tcb) in nic_send_packet() argument
2423 struct sk_buff *skb = tcb->skb; in nic_send_packet()
2515 tcb->index_start = tx_ring->send_idx; in nic_send_packet()
2516 tcb->stale = 0; in nic_send_packet()
2549 tcb->index = NUM_DESC_PER_RING_TX - 1; in nic_send_packet()
2551 tcb->index = ET_DMA10_WRAP|(NUM_DESC_PER_RING_TX - 1); in nic_send_packet()
2553 tcb->index = tx_ring->send_idx - 1; in nic_send_packet()
2559 tx_ring->send_tail->next = tcb; in nic_send_packet()
2561 tx_ring->send_head = tcb; in nic_send_packet()
2563 tx_ring->send_tail = tcb; in nic_send_packet()
2565 WARN_ON(tcb->next != NULL); in nic_send_packet()
2587 struct tcb *tcb; in send_packet() local
2597 tcb = tx_ring->tcb_qhead; in send_packet()
2599 if (tcb == NULL) { in send_packet()
2604 tx_ring->tcb_qhead = tcb->next; in send_packet()
2611 tcb->skb = skb; in send_packet()
2612 tcb->next = NULL; in send_packet()
2614 status = nic_send_packet(adapter, tcb); in send_packet()
2620 tx_ring->tcb_qtail->next = tcb; in send_packet()
2623 tx_ring->tcb_qhead = tcb; in send_packet()
2625 tx_ring->tcb_qtail = tcb; in send_packet()
2633 /* free_send_packet - Recycle a struct tcb */
2635 struct tcb *tcb) in free_send_packet() argument
2643 if (tcb->skb) { in free_send_packet()
2644 stats->tx_bytes += tcb->skb->len; in free_send_packet()
2652 INDEX10(tcb->index_start); in free_send_packet()
2661 add_10bit(&tcb->index_start, 1); in free_send_packet()
2662 if (INDEX10(tcb->index_start) >= in free_send_packet()
2664 tcb->index_start &= ~ET_DMA10_MASK; in free_send_packet()
2665 tcb->index_start ^= ET_DMA10_WRAP; in free_send_packet()
2667 } while (desc != tx_ring->tx_desc_ring + INDEX10(tcb->index)); in free_send_packet()
2669 dev_kfree_skb_any(tcb->skb); in free_send_packet()
2672 memset(tcb, 0, sizeof(struct tcb)); in free_send_packet()
2674 /* Add the TCB to the Ready Q */ in free_send_packet()
2680 tx_ring->tcb_qtail->next = tcb; in free_send_packet()
2682 tx_ring->tcb_qhead = tcb; in free_send_packet()
2684 tx_ring->tcb_qtail = tcb; in free_send_packet()
2693 struct tcb *tcb; in et131x_free_busy_send_packets() local
2698 /* Any packets being sent? Check the first TCB on the send list */ in et131x_free_busy_send_packets()
2701 tcb = tx_ring->send_head; in et131x_free_busy_send_packets()
2703 while (tcb != NULL && freed < NUM_TCB) { in et131x_free_busy_send_packets()
2704 struct tcb *next = tcb->next; in et131x_free_busy_send_packets()
2716 free_send_packet(adapter, tcb); in et131x_free_busy_send_packets()
2720 tcb = tx_ring->send_head; in et131x_free_busy_send_packets()
2739 struct tcb *tcb; in et131x_handle_send_pkts() local
2751 tcb = tx_ring->send_head; in et131x_handle_send_pkts()
2753 while (tcb && in et131x_handle_send_pkts()
2754 ((serviced ^ tcb->index) & ET_DMA10_WRAP) && in et131x_handle_send_pkts()
2755 index < INDEX10(tcb->index)) { in et131x_handle_send_pkts()
2757 tx_ring->send_head = tcb->next; in et131x_handle_send_pkts()
2758 if (tcb->next == NULL) in et131x_handle_send_pkts()
2762 free_send_packet(adapter, tcb); in et131x_handle_send_pkts()
2766 tcb = tx_ring->send_head; in et131x_handle_send_pkts()
2768 while (tcb && in et131x_handle_send_pkts()
2769 !((serviced ^ tcb->index) & ET_DMA10_WRAP) && in et131x_handle_send_pkts()
2770 index > (tcb->index & ET_DMA10_MASK)) { in et131x_handle_send_pkts()
2772 tx_ring->send_head = tcb->next; in et131x_handle_send_pkts()
2773 if (tcb->next == NULL) in et131x_handle_send_pkts()
2777 free_send_packet(adapter, tcb); in et131x_handle_send_pkts()
2781 tcb = tx_ring->send_head; in et131x_handle_send_pkts()
3392 struct tcb *tcb = tx_ring->send_head; in et131x_isr() local
3394 if (tcb) in et131x_isr()
3395 if (++tcb->stale > 1) in et131x_isr()
3400 else if (tcb == NULL) in et131x_isr()
3772 /* TCB is not available */ in et131x_tx()
3801 struct tcb *tcb; in et131x_tx_timeout() local
3822 tcb = tx_ring->send_head; in et131x_tx_timeout()
3825 if (tcb) { in et131x_tx_timeout()
3826 tcb->count++; in et131x_tx_timeout()
3828 if (tcb->count > NIC_SEND_HANG_THRESHOLD) { in et131x_tx_timeout()
3830 "Send stuck - reset. tcb->WrIndex %x\n", in et131x_tx_timeout()
3831 tcb->index); in et131x_tx_timeout()