Lines Matching refs:tcb
164 bnad_txq_cleanup(struct bnad *bnad, struct bna_tcb *tcb) in bnad_txq_cleanup() argument
166 struct bnad_tx_unmap *unmap_q = tcb->unmap_q; in bnad_txq_cleanup()
170 for (i = 0; i < tcb->q_depth; i++) { in bnad_txq_cleanup()
174 bnad_tx_buff_unmap(bnad, unmap_q, tcb->q_depth, i); in bnad_txq_cleanup()
186 bnad_txcmpl_process(struct bnad *bnad, struct bna_tcb *tcb) in bnad_txcmpl_process() argument
190 struct bnad_tx_unmap *unmap_q = tcb->unmap_q; in bnad_txcmpl_process()
195 if (!test_bit(BNAD_TXQ_TX_STARTED, &tcb->flags)) in bnad_txcmpl_process()
198 hw_cons = *(tcb->hw_consumer_index); in bnad_txcmpl_process()
199 cons = tcb->consumer_index; in bnad_txcmpl_process()
200 q_depth = tcb->q_depth; in bnad_txcmpl_process()
203 BUG_ON(!(wis <= BNA_QE_IN_USE_CNT(tcb, tcb->q_depth))); in bnad_txcmpl_process()
221 tcb->consumer_index = hw_cons; in bnad_txcmpl_process()
223 tcb->txq->tx_packets += sent_packets; in bnad_txcmpl_process()
224 tcb->txq->tx_bytes += sent_bytes; in bnad_txcmpl_process()
230 bnad_tx_complete(struct bnad *bnad, struct bna_tcb *tcb) in bnad_tx_complete() argument
235 if (test_and_set_bit(BNAD_TXQ_FREE_SENT, &tcb->flags)) in bnad_tx_complete()
238 sent = bnad_txcmpl_process(bnad, tcb); in bnad_tx_complete()
242 BNA_QE_FREE_CNT(tcb, tcb->q_depth) >= in bnad_tx_complete()
244 if (test_bit(BNAD_TXQ_TX_STARTED, &tcb->flags)) { in bnad_tx_complete()
251 if (likely(test_bit(BNAD_TXQ_TX_STARTED, &tcb->flags))) in bnad_tx_complete()
252 bna_ib_ack(tcb->i_dbell, sent); in bnad_tx_complete()
255 clear_bit(BNAD_TXQ_FREE_SENT, &tcb->flags); in bnad_tx_complete()
264 struct bna_tcb *tcb = (struct bna_tcb *)data; in bnad_msix_tx() local
265 struct bnad *bnad = tcb->bnad; in bnad_msix_tx()
267 bnad_tx_complete(bnad, tcb); in bnad_msix_tx()
815 struct bna_tcb *tcb = NULL; in bnad_isr() local
842 tcb = bnad->tx_info[i].tcb[j]; in bnad_isr()
843 if (tcb && test_bit(BNAD_TXQ_TX_STARTED, &tcb->flags)) in bnad_isr()
844 bnad_tx_complete(bnad, bnad->tx_info[i].tcb[j]); in bnad_isr()
968 struct bna_tcb *tcb = in bnad_cb_ethport_link_status() local
969 bnad->tx_info[tx_id].tcb[tcb_id]; in bnad_cb_ethport_link_status()
971 if (!tcb) in bnad_cb_ethport_link_status()
974 txq_id = tcb->id; in bnad_cb_ethport_link_status()
977 &tcb->flags)) { in bnad_cb_ethport_link_status()
1014 bnad_cb_tcb_setup(struct bnad *bnad, struct bna_tcb *tcb) in bnad_cb_tcb_setup() argument
1017 (struct bnad_tx_info *)tcb->txq->tx->priv; in bnad_cb_tcb_setup()
1019 tcb->priv = tcb; in bnad_cb_tcb_setup()
1020 tx_info->tcb[tcb->id] = tcb; in bnad_cb_tcb_setup()
1024 bnad_cb_tcb_destroy(struct bnad *bnad, struct bna_tcb *tcb) in bnad_cb_tcb_destroy() argument
1027 (struct bnad_tx_info *)tcb->txq->tx->priv; in bnad_cb_tcb_destroy()
1029 tx_info->tcb[tcb->id] = NULL; in bnad_cb_tcb_destroy()
1030 tcb->priv = NULL; in bnad_cb_tcb_destroy()
1057 struct bna_tcb *tcb; in bnad_cb_tx_stall() local
1062 tcb = tx_info->tcb[i]; in bnad_cb_tx_stall()
1063 if (!tcb) in bnad_cb_tx_stall()
1065 txq_id = tcb->id; in bnad_cb_tx_stall()
1066 clear_bit(BNAD_TXQ_TX_STARTED, &tcb->flags); in bnad_cb_tx_stall()
1075 struct bna_tcb *tcb; in bnad_cb_tx_resume() local
1080 tcb = tx_info->tcb[i]; in bnad_cb_tx_resume()
1081 if (!tcb) in bnad_cb_tx_resume()
1083 txq_id = tcb->id; in bnad_cb_tx_resume()
1085 BUG_ON(test_bit(BNAD_TXQ_TX_STARTED, &tcb->flags)); in bnad_cb_tx_resume()
1086 set_bit(BNAD_TXQ_TX_STARTED, &tcb->flags); in bnad_cb_tx_resume()
1087 BUG_ON(*(tcb->hw_consumer_index) != 0); in bnad_cb_tx_resume()
1115 struct bna_tcb *tcb; in bnad_tx_cleanup() local
1120 tcb = tx_info->tcb[i]; in bnad_tx_cleanup()
1121 if (!tcb) in bnad_tx_cleanup()
1124 bnad = tcb->bnad; in bnad_tx_cleanup()
1126 if (test_and_set_bit(BNAD_TXQ_FREE_SENT, &tcb->flags)) { in bnad_tx_cleanup()
1131 bnad_txq_cleanup(bnad, tcb); in bnad_tx_cleanup()
1134 clear_bit(BNAD_TXQ_FREE_SENT, &tcb->flags); in bnad_tx_cleanup()
1152 struct bna_tcb *tcb; in bnad_cb_tx_cleanup() local
1156 tcb = tx_info->tcb[i]; in bnad_cb_tx_cleanup()
1157 if (!tcb) in bnad_cb_tx_cleanup()
1532 if (tx_info->tcb[i] == NULL) in bnad_tx_msix_unregister()
1535 vector_num = tx_info->tcb[i]->intr_vector; in bnad_tx_msix_unregister()
1536 free_irq(bnad->msix_table[vector_num].vector, tx_info->tcb[i]); in bnad_tx_msix_unregister()
1552 vector_num = tx_info->tcb[i]->intr_vector; in bnad_tx_msix_register()
1553 sprintf(tx_info->tcb[i]->name, "%s TXQ %d", bnad->netdev->name, in bnad_tx_msix_register()
1554 tx_id + tx_info->tcb[i]->id); in bnad_tx_msix_register()
1557 tx_info->tcb[i]->name, in bnad_tx_msix_register()
1558 tx_info->tcb[i]); in bnad_tx_msix_register()
1943 if (tx_info->tcb[0]->intr_type == BNA_INTR_T_MSIX) in bnad_destroy_tx()
2429 if (bnad->tx_info[i].tcb[j]) { in bnad_netdev_qstats_fill()
2431 bnad->tx_info[i].tcb[j]->txq->tx_packets; in bnad_netdev_qstats_fill()
2433 bnad->tx_info[i].tcb[j]->txq->tx_bytes; in bnad_netdev_qstats_fill()
2825 bnad_txq_wi_prepare(struct bnad *bnad, struct bna_tcb *tcb, in bnad_txq_wi_prepare() argument
2837 vlan_tag = ((tcb->priority & 0x7) << VLAN_PRIO_SHIFT) in bnad_txq_wi_prepare()
2940 struct bna_tcb *tcb = NULL; in bnad_start_xmit() local
2968 tcb = bnad->tx_info[0].tcb[txq_id]; in bnad_start_xmit()
2974 if (unlikely(!tcb || !test_bit(BNAD_TXQ_TX_STARTED, &tcb->flags))) { in bnad_start_xmit()
2980 q_depth = tcb->q_depth; in bnad_start_xmit()
2981 prod = tcb->producer_index; in bnad_start_xmit()
2982 unmap_q = tcb->unmap_q; in bnad_start_xmit()
2994 if (unlikely(wis > BNA_QE_FREE_CNT(tcb, q_depth))) { in bnad_start_xmit()
2995 if ((*tcb->hw_consumer_index != tcb->consumer_index) && in bnad_start_xmit()
2996 !test_and_set_bit(BNAD_TXQ_FREE_SENT, &tcb->flags)) { in bnad_start_xmit()
2998 sent = bnad_txcmpl_process(bnad, tcb); in bnad_start_xmit()
2999 if (likely(test_bit(BNAD_TXQ_TX_STARTED, &tcb->flags))) in bnad_start_xmit()
3000 bna_ib_ack(tcb->i_dbell, sent); in bnad_start_xmit()
3002 clear_bit(BNAD_TXQ_FREE_SENT, &tcb->flags); in bnad_start_xmit()
3014 if (likely(wis > BNA_QE_FREE_CNT(tcb, q_depth))) { in bnad_start_xmit()
3023 txqent = &((struct bna_txq_entry *)tcb->sw_q)[prod]; in bnad_start_xmit()
3027 if (bnad_txq_wi_prepare(bnad, tcb, skb, txqent)) { in bnad_start_xmit()
3058 tcb->producer_index); in bnad_start_xmit()
3070 txqent = &((struct bna_txq_entry *)tcb->sw_q)[prod]; in bnad_start_xmit()
3080 tcb->producer_index); in bnad_start_xmit()
3096 bnad_tx_buff_unmap(bnad, unmap_q, q_depth, tcb->producer_index); in bnad_start_xmit()
3103 tcb->producer_index = prod; in bnad_start_xmit()
3107 if (unlikely(!test_bit(BNAD_TXQ_TX_STARTED, &tcb->flags))) in bnad_start_xmit()
3112 bna_txq_prod_indx_doorbell(tcb); in bnad_start_xmit()