Lines Matching refs:tx_ring
33 int fm10k_setup_tx_resources(struct fm10k_ring *tx_ring) in fm10k_setup_tx_resources() argument
35 struct device *dev = tx_ring->dev; in fm10k_setup_tx_resources()
38 size = sizeof(struct fm10k_tx_buffer) * tx_ring->count; in fm10k_setup_tx_resources()
40 tx_ring->tx_buffer = vzalloc(size); in fm10k_setup_tx_resources()
41 if (!tx_ring->tx_buffer) in fm10k_setup_tx_resources()
44 u64_stats_init(&tx_ring->syncp); in fm10k_setup_tx_resources()
47 tx_ring->size = tx_ring->count * sizeof(struct fm10k_tx_desc); in fm10k_setup_tx_resources()
48 tx_ring->size = ALIGN(tx_ring->size, 4096); in fm10k_setup_tx_resources()
50 tx_ring->desc = dma_alloc_coherent(dev, tx_ring->size, in fm10k_setup_tx_resources()
51 &tx_ring->dma, GFP_KERNEL); in fm10k_setup_tx_resources()
52 if (!tx_ring->desc) in fm10k_setup_tx_resources()
58 vfree(tx_ring->tx_buffer); in fm10k_setup_tx_resources()
59 tx_ring->tx_buffer = NULL; in fm10k_setup_tx_resources()
78 err = fm10k_setup_tx_resources(interface->tx_ring[i]); in fm10k_setup_all_tx_resources()
91 fm10k_free_tx_resources(interface->tx_ring[i]); in fm10k_setup_all_tx_resources()
188 static void fm10k_clean_tx_ring(struct fm10k_ring *tx_ring) in fm10k_clean_tx_ring() argument
195 if (!tx_ring->tx_buffer) in fm10k_clean_tx_ring()
199 for (i = 0; i < tx_ring->count; i++) { in fm10k_clean_tx_ring()
200 tx_buffer = &tx_ring->tx_buffer[i]; in fm10k_clean_tx_ring()
201 fm10k_unmap_and_free_tx_resource(tx_ring, tx_buffer); in fm10k_clean_tx_ring()
205 netdev_tx_reset_queue(txring_txq(tx_ring)); in fm10k_clean_tx_ring()
207 size = sizeof(struct fm10k_tx_buffer) * tx_ring->count; in fm10k_clean_tx_ring()
208 memset(tx_ring->tx_buffer, 0, size); in fm10k_clean_tx_ring()
211 memset(tx_ring->desc, 0, tx_ring->size); in fm10k_clean_tx_ring()
220 void fm10k_free_tx_resources(struct fm10k_ring *tx_ring) in fm10k_free_tx_resources() argument
222 fm10k_clean_tx_ring(tx_ring); in fm10k_free_tx_resources()
224 vfree(tx_ring->tx_buffer); in fm10k_free_tx_resources()
225 tx_ring->tx_buffer = NULL; in fm10k_free_tx_resources()
228 if (!tx_ring->desc) in fm10k_free_tx_resources()
231 dma_free_coherent(tx_ring->dev, tx_ring->size, in fm10k_free_tx_resources()
232 tx_ring->desc, tx_ring->dma); in fm10k_free_tx_resources()
233 tx_ring->desc = NULL; in fm10k_free_tx_resources()
245 fm10k_clean_tx_ring(interface->tx_ring[i]); in fm10k_clean_all_tx_rings()
262 fm10k_free_tx_resources(interface->tx_ring[i]); in fm10k_free_all_tx_resources()
668 err = fm10k_xmit_frame_ring(skb, interface->tx_ring[r_idx]); in fm10k_xmit_frame()
695 struct fm10k_ring *tx_ring = interface->tx_ring[i]; in fm10k_tx_timeout() local
697 if (check_for_tx_hang(tx_ring) && fm10k_check_tx_hang(tx_ring)) in fm10k_tx_timeout()