Lines Matching refs:tx_queue

524 	struct efx_tx_queue *tx_queue;  in efx_ef10_link_piobufs()  local
556 efx_for_each_channel_tx_queue(tx_queue, channel) { in efx_ef10_link_piobufs()
562 tx_queue->channel->channel - 1) * in efx_ef10_link_piobufs()
572 if (tx_queue->queue == nic_data->pio_write_vi_base) { in efx_ef10_link_piobufs()
581 tx_queue->queue); in efx_ef10_link_piobufs()
593 tx_queue->queue, index, rc); in efx_ef10_link_piobufs()
594 tx_queue->piobuf = NULL; in efx_ef10_link_piobufs()
596 tx_queue->piobuf = in efx_ef10_link_piobufs()
599 tx_queue->piobuf_offset = offset; in efx_ef10_link_piobufs()
602 tx_queue->queue, index, in efx_ef10_link_piobufs()
603 tx_queue->piobuf_offset, in efx_ef10_link_piobufs()
604 tx_queue->piobuf); in efx_ef10_link_piobufs()
625 struct efx_tx_queue *tx_queue; in efx_ef10_forget_old_piobufs() local
629 efx_for_each_channel_tx_queue(tx_queue, channel) in efx_ef10_forget_old_piobufs()
630 tx_queue->piobuf = NULL; in efx_ef10_forget_old_piobufs()
1735 static int efx_ef10_tx_probe(struct efx_tx_queue *tx_queue) in efx_ef10_tx_probe() argument
1737 return efx_nic_alloc_buffer(tx_queue->efx, &tx_queue->txd.buf, in efx_ef10_tx_probe()
1738 (tx_queue->ptr_mask + 1) * in efx_ef10_tx_probe()
1744 static inline void efx_ef10_push_tx_desc(struct efx_tx_queue *tx_queue, in efx_ef10_push_tx_desc() argument
1750 write_ptr = tx_queue->write_count & tx_queue->ptr_mask; in efx_ef10_push_tx_desc()
1753 efx_writeo_page(tx_queue->efx, &reg, in efx_ef10_push_tx_desc()
1754 ER_DZ_TX_DESC_UPD, tx_queue->queue); in efx_ef10_push_tx_desc()
1757 static void efx_ef10_tx_init(struct efx_tx_queue *tx_queue) in efx_ef10_tx_init() argument
1761 bool csum_offload = tx_queue->queue & EFX_TXQ_TYPE_OFFLOAD; in efx_ef10_tx_init()
1762 size_t entries = tx_queue->txd.buf.len / EFX_BUF_SIZE; in efx_ef10_tx_init()
1763 struct efx_channel *channel = tx_queue->channel; in efx_ef10_tx_init()
1764 struct efx_nic *efx = tx_queue->efx; in efx_ef10_tx_init()
1773 MCDI_SET_DWORD(inbuf, INIT_TXQ_IN_SIZE, tx_queue->ptr_mask + 1); in efx_ef10_tx_init()
1775 MCDI_SET_DWORD(inbuf, INIT_TXQ_IN_LABEL, tx_queue->queue); in efx_ef10_tx_init()
1776 MCDI_SET_DWORD(inbuf, INIT_TXQ_IN_INSTANCE, tx_queue->queue); in efx_ef10_tx_init()
1783 dma_addr = tx_queue->txd.buf.dma_addr; in efx_ef10_tx_init()
1786 tx_queue->queue, entries, (u64)dma_addr); in efx_ef10_tx_init()
1806 tx_queue->buffer[0].flags = EFX_TX_BUF_OPTION; in efx_ef10_tx_init()
1807 tx_queue->insert_count = 1; in efx_ef10_tx_init()
1808 txd = efx_tx_desc(tx_queue, 0); in efx_ef10_tx_init()
1815 tx_queue->write_count = 1; in efx_ef10_tx_init()
1817 efx_ef10_push_tx_desc(tx_queue, txd); in efx_ef10_tx_init()
1823 tx_queue->queue); in efx_ef10_tx_init()
1826 static void efx_ef10_tx_fini(struct efx_tx_queue *tx_queue) in efx_ef10_tx_fini() argument
1830 struct efx_nic *efx = tx_queue->efx; in efx_ef10_tx_fini()
1835 tx_queue->queue); in efx_ef10_tx_fini()
1850 static void efx_ef10_tx_remove(struct efx_tx_queue *tx_queue) in efx_ef10_tx_remove() argument
1852 efx_nic_free_buffer(tx_queue->efx, &tx_queue->txd.buf); in efx_ef10_tx_remove()
1856 static inline void efx_ef10_notify_tx_desc(struct efx_tx_queue *tx_queue) in efx_ef10_notify_tx_desc() argument
1861 write_ptr = tx_queue->write_count & tx_queue->ptr_mask; in efx_ef10_notify_tx_desc()
1863 efx_writed_page(tx_queue->efx, &reg, in efx_ef10_notify_tx_desc()
1864 ER_DZ_TX_DESC_UPD_DWORD, tx_queue->queue); in efx_ef10_notify_tx_desc()
1867 static void efx_ef10_tx_write(struct efx_tx_queue *tx_queue) in efx_ef10_tx_write() argument
1869 unsigned int old_write_count = tx_queue->write_count; in efx_ef10_tx_write()
1874 tx_queue->xmit_more_available = false; in efx_ef10_tx_write()
1875 if (unlikely(tx_queue->write_count == tx_queue->insert_count)) in efx_ef10_tx_write()
1879 write_ptr = tx_queue->write_count & tx_queue->ptr_mask; in efx_ef10_tx_write()
1880 buffer = &tx_queue->buffer[write_ptr]; in efx_ef10_tx_write()
1881 txd = efx_tx_desc(tx_queue, write_ptr); in efx_ef10_tx_write()
1882 ++tx_queue->write_count; in efx_ef10_tx_write()
1896 } while (tx_queue->write_count != tx_queue->insert_count); in efx_ef10_tx_write()
1900 if (efx_nic_may_push_tx_desc(tx_queue, old_write_count)) { in efx_ef10_tx_write()
1901 txd = efx_tx_desc(tx_queue, in efx_ef10_tx_write()
1902 old_write_count & tx_queue->ptr_mask); in efx_ef10_tx_write()
1903 efx_ef10_push_tx_desc(tx_queue, txd); in efx_ef10_tx_write()
1904 ++tx_queue->pushes; in efx_ef10_tx_write()
1906 efx_ef10_notify_tx_desc(tx_queue); in efx_ef10_tx_write()
2578 struct efx_tx_queue *tx_queue; in efx_ef10_handle_tx_event() local
2592 tx_queue = efx_channel_get_tx_queue(channel, in efx_ef10_handle_tx_event()
2594 tx_descs = ((tx_ev_desc_ptr + 1 - tx_queue->read_count) & in efx_ef10_handle_tx_event()
2595 tx_queue->ptr_mask); in efx_ef10_handle_tx_event()
2596 efx_xmit_done(tx_queue, tx_ev_desc_ptr & tx_queue->ptr_mask); in efx_ef10_handle_tx_event()
2807 struct efx_tx_queue *tx_queue; in efx_ef10_fini_dmaq() local
2824 efx_for_each_channel_tx_queue(tx_queue, channel) in efx_ef10_fini_dmaq()
2825 efx_ef10_tx_fini(tx_queue); in efx_ef10_fini_dmaq()