Lines Matching refs:tx_ring

218 	struct e1000_ring *tx_ring = adapter->tx_ring;  in e1000e_dump()  local
262 buffer_info = &tx_ring->buffer_info[tx_ring->next_to_clean]; in e1000e_dump()
264 0, tx_ring->next_to_use, tx_ring->next_to_clean, in e1000e_dump()
306 for (i = 0; tx_ring->desc && (i < tx_ring->count); i++) { in e1000e_dump()
308 tx_desc = E1000_TX_DESC(*tx_ring, i); in e1000e_dump()
309 buffer_info = &tx_ring->buffer_info[i]; in e1000e_dump()
311 if (i == tx_ring->next_to_use && i == tx_ring->next_to_clean) in e1000e_dump()
313 else if (i == tx_ring->next_to_use) in e1000e_dump()
315 else if (i == tx_ring->next_to_clean) in e1000e_dump()
640 static void e1000e_update_tdt_wa(struct e1000_ring *tx_ring, unsigned int i) in e1000e_update_tdt_wa() argument
642 struct e1000_adapter *adapter = tx_ring->adapter; in e1000e_update_tdt_wa()
646 writel(i, tx_ring->tail); in e1000e_update_tdt_wa()
648 if (unlikely(!ret_val && (i != readl(tx_ring->tail)))) { in e1000e_update_tdt_wa()
1072 static void e1000_put_txbuf(struct e1000_ring *tx_ring, in e1000_put_txbuf() argument
1075 struct e1000_adapter *adapter = tx_ring->adapter; in e1000_put_txbuf()
1099 struct e1000_ring *tx_ring = adapter->tx_ring; in e1000_print_hw_hang() local
1100 unsigned int i = tx_ring->next_to_clean; in e1000_print_hw_hang()
1101 unsigned int eop = tx_ring->buffer_info[i].next_to_watch; in e1000_print_hw_hang()
1102 struct e1000_tx_desc *eop_desc = E1000_TX_DESC(*tx_ring, eop); in e1000_print_hw_hang()
1158 readl(tx_ring->head), readl(tx_ring->tail), tx_ring->next_to_use, in e1000_print_hw_hang()
1159 tx_ring->next_to_clean, tx_ring->buffer_info[eop].time_stamp, in e1000_print_hw_hang()
1215 static bool e1000_clean_tx_irq(struct e1000_ring *tx_ring) in e1000_clean_tx_irq() argument
1217 struct e1000_adapter *adapter = tx_ring->adapter; in e1000_clean_tx_irq()
1227 i = tx_ring->next_to_clean; in e1000_clean_tx_irq()
1228 eop = tx_ring->buffer_info[i].next_to_watch; in e1000_clean_tx_irq()
1229 eop_desc = E1000_TX_DESC(*tx_ring, eop); in e1000_clean_tx_irq()
1232 (count < tx_ring->count)) { in e1000_clean_tx_irq()
1237 tx_desc = E1000_TX_DESC(*tx_ring, i); in e1000_clean_tx_irq()
1238 buffer_info = &tx_ring->buffer_info[i]; in e1000_clean_tx_irq()
1250 e1000_put_txbuf(tx_ring, buffer_info); in e1000_clean_tx_irq()
1254 if (i == tx_ring->count) in e1000_clean_tx_irq()
1258 if (i == tx_ring->next_to_use) in e1000_clean_tx_irq()
1260 eop = tx_ring->buffer_info[i].next_to_watch; in e1000_clean_tx_irq()
1261 eop_desc = E1000_TX_DESC(*tx_ring, eop); in e1000_clean_tx_irq()
1264 tx_ring->next_to_clean = i; in e1000_clean_tx_irq()
1270 e1000_desc_unused(tx_ring) >= TX_WAKE_THRESHOLD) { in e1000_clean_tx_irq()
1288 if (tx_ring->buffer_info[i].time_stamp && in e1000_clean_tx_irq()
1289 time_after(jiffies, tx_ring->buffer_info[i].time_stamp in e1000_clean_tx_irq()
1298 return count < tx_ring->count; in e1000_clean_tx_irq()
1940 struct e1000_ring *tx_ring = adapter->tx_ring; in e1000_intr_msix_tx() local
1945 if (!e1000_clean_tx_irq(tx_ring)) in e1000_intr_msix_tx()
1947 ew32(ICS, tx_ring->ims_val); in e1000_intr_msix_tx()
1985 struct e1000_ring *tx_ring = adapter->tx_ring; in e1000_configure_msix() local
2010 tx_ring->ims_val = E1000_IMS_TXQ0; in e1000_configure_msix()
2012 if (tx_ring->itr_val) in e1000_configure_msix()
2013 writel(1000000000 / (tx_ring->itr_val * 256), in e1000_configure_msix()
2014 tx_ring->itr_register); in e1000_configure_msix()
2016 writel(1, tx_ring->itr_register); in e1000_configure_msix()
2017 adapter->eiac_mask |= tx_ring->ims_val; in e1000_configure_msix()
2140 snprintf(adapter->tx_ring->name, in e1000_request_msix()
2141 sizeof(adapter->tx_ring->name) - 1, in e1000_request_msix()
2144 memcpy(adapter->tx_ring->name, netdev->name, IFNAMSIZ); in e1000_request_msix()
2146 e1000_intr_msix_tx, 0, adapter->tx_ring->name, in e1000_request_msix()
2150 adapter->tx_ring->itr_register = adapter->hw.hw_addr + in e1000_request_msix()
2152 adapter->tx_ring->itr_val = adapter->itr; in e1000_request_msix()
2339 int e1000e_setup_tx_resources(struct e1000_ring *tx_ring) in e1000e_setup_tx_resources() argument
2341 struct e1000_adapter *adapter = tx_ring->adapter; in e1000e_setup_tx_resources()
2344 size = sizeof(struct e1000_buffer) * tx_ring->count; in e1000e_setup_tx_resources()
2345 tx_ring->buffer_info = vzalloc(size); in e1000e_setup_tx_resources()
2346 if (!tx_ring->buffer_info) in e1000e_setup_tx_resources()
2350 tx_ring->size = tx_ring->count * sizeof(struct e1000_tx_desc); in e1000e_setup_tx_resources()
2351 tx_ring->size = ALIGN(tx_ring->size, 4096); in e1000e_setup_tx_resources()
2353 err = e1000_alloc_ring_dma(adapter, tx_ring); in e1000e_setup_tx_resources()
2357 tx_ring->next_to_use = 0; in e1000e_setup_tx_resources()
2358 tx_ring->next_to_clean = 0; in e1000e_setup_tx_resources()
2362 vfree(tx_ring->buffer_info); in e1000e_setup_tx_resources()
2424 static void e1000_clean_tx_ring(struct e1000_ring *tx_ring) in e1000_clean_tx_ring() argument
2426 struct e1000_adapter *adapter = tx_ring->adapter; in e1000_clean_tx_ring()
2431 for (i = 0; i < tx_ring->count; i++) { in e1000_clean_tx_ring()
2432 buffer_info = &tx_ring->buffer_info[i]; in e1000_clean_tx_ring()
2433 e1000_put_txbuf(tx_ring, buffer_info); in e1000_clean_tx_ring()
2437 size = sizeof(struct e1000_buffer) * tx_ring->count; in e1000_clean_tx_ring()
2438 memset(tx_ring->buffer_info, 0, size); in e1000_clean_tx_ring()
2440 memset(tx_ring->desc, 0, tx_ring->size); in e1000_clean_tx_ring()
2442 tx_ring->next_to_use = 0; in e1000_clean_tx_ring()
2443 tx_ring->next_to_clean = 0; in e1000_clean_tx_ring()
2452 void e1000e_free_tx_resources(struct e1000_ring *tx_ring) in e1000e_free_tx_resources() argument
2454 struct e1000_adapter *adapter = tx_ring->adapter; in e1000e_free_tx_resources()
2457 e1000_clean_tx_ring(tx_ring); in e1000e_free_tx_resources()
2459 vfree(tx_ring->buffer_info); in e1000e_free_tx_resources()
2460 tx_ring->buffer_info = NULL; in e1000e_free_tx_resources()
2462 dma_free_coherent(&pdev->dev, tx_ring->size, tx_ring->desc, in e1000e_free_tx_resources()
2463 tx_ring->dma); in e1000e_free_tx_resources()
2464 tx_ring->desc = NULL; in e1000e_free_tx_resources()
2648 adapter->tx_ring = kzalloc(size, GFP_KERNEL); in e1000_alloc_queues()
2649 if (!adapter->tx_ring) in e1000_alloc_queues()
2651 adapter->tx_ring->count = adapter->tx_ring_count; in e1000_alloc_queues()
2652 adapter->tx_ring->adapter = adapter; in e1000_alloc_queues()
2664 kfree(adapter->tx_ring); in e1000_alloc_queues()
2684 (adapter->rx_ring->ims_val & adapter->tx_ring->ims_val)) in e1000e_poll()
2685 tx_cleaned = e1000_clean_tx_irq(adapter->tx_ring); in e1000e_poll()
2930 struct e1000_ring *tx_ring = adapter->tx_ring; in e1000_configure_tx() local
2935 tdba = tx_ring->dma; in e1000_configure_tx()
2936 tdlen = tx_ring->count * sizeof(struct e1000_tx_desc); in e1000_configure_tx()
2942 tx_ring->head = adapter->hw.hw_addr + E1000_TDH(0); in e1000_configure_tx()
2943 tx_ring->tail = adapter->hw.hw_addr + E1000_TDT(0); in e1000_configure_tx()
2945 writel(0, tx_ring->head); in e1000_configure_tx()
2947 e1000e_update_tdt_wa(tx_ring, 0); in e1000_configure_tx()
2949 writel(0, tx_ring->tail); in e1000_configure_tx()
3809 struct e1000_ring *tx_ring = adapter->tx_ring; in e1000_flush_tx_ring() local
3817 BUG_ON(tdt != tx_ring->next_to_use); in e1000_flush_tx_ring()
3818 tx_desc = E1000_TX_DESC(*tx_ring, tx_ring->next_to_use); in e1000_flush_tx_ring()
3819 tx_desc->buffer_addr = tx_ring->dma; in e1000_flush_tx_ring()
3825 tx_ring->next_to_use++; in e1000_flush_tx_ring()
3826 if (tx_ring->next_to_use == tx_ring->count) in e1000_flush_tx_ring()
3827 tx_ring->next_to_use = 0; in e1000_flush_tx_ring()
3828 ew32(TDT(0), tx_ring->next_to_use); in e1000_flush_tx_ring()
4260 e1000_clean_tx_ring(adapter->tx_ring); in e1000e_down()
4530 err = e1000e_setup_tx_resources(adapter->tx_ring); in e1000_open()
4607 e1000e_free_tx_resources(adapter->tx_ring); in e1000_open()
4649 e1000e_free_tx_resources(adapter->tx_ring); in e1000_close()
5099 struct e1000_ring *tx_ring = adapter->tx_ring; in e1000_watchdog_task() local
5264 (e1000_desc_unused(tx_ring) + 1 < tx_ring->count)) in e1000_watchdog_task()
5338 static int e1000_tso(struct e1000_ring *tx_ring, struct sk_buff *skb, in e1000_tso() argument
5381 i = tx_ring->next_to_use; in e1000_tso()
5382 context_desc = E1000_CONTEXT_DESC(*tx_ring, i); in e1000_tso()
5383 buffer_info = &tx_ring->buffer_info[i]; in e1000_tso()
5399 if (i == tx_ring->count) in e1000_tso()
5401 tx_ring->next_to_use = i; in e1000_tso()
5406 static bool e1000_tx_csum(struct e1000_ring *tx_ring, struct sk_buff *skb, in e1000_tx_csum() argument
5409 struct e1000_adapter *adapter = tx_ring->adapter; in e1000_tx_csum()
5438 i = tx_ring->next_to_use; in e1000_tx_csum()
5439 buffer_info = &tx_ring->buffer_info[i]; in e1000_tx_csum()
5440 context_desc = E1000_CONTEXT_DESC(*tx_ring, i); in e1000_tx_csum()
5453 if (i == tx_ring->count) in e1000_tx_csum()
5455 tx_ring->next_to_use = i; in e1000_tx_csum()
5460 static int e1000_tx_map(struct e1000_ring *tx_ring, struct sk_buff *skb, in e1000_tx_map() argument
5464 struct e1000_adapter *adapter = tx_ring->adapter; in e1000_tx_map()
5471 i = tx_ring->next_to_use; in e1000_tx_map()
5474 buffer_info = &tx_ring->buffer_info[i]; in e1000_tx_map()
5493 if (i == tx_ring->count) in e1000_tx_map()
5507 if (i == tx_ring->count) in e1000_tx_map()
5510 buffer_info = &tx_ring->buffer_info[i]; in e1000_tx_map()
5533 tx_ring->buffer_info[i].skb = skb; in e1000_tx_map()
5534 tx_ring->buffer_info[i].segs = segs; in e1000_tx_map()
5535 tx_ring->buffer_info[i].bytecount = bytecount; in e1000_tx_map()
5536 tx_ring->buffer_info[first].next_to_watch = i; in e1000_tx_map()
5548 i += tx_ring->count; in e1000_tx_map()
5550 buffer_info = &tx_ring->buffer_info[i]; in e1000_tx_map()
5551 e1000_put_txbuf(tx_ring, buffer_info); in e1000_tx_map()
5557 static void e1000_tx_queue(struct e1000_ring *tx_ring, int tx_flags, int count) in e1000_tx_queue() argument
5559 struct e1000_adapter *adapter = tx_ring->adapter; in e1000_tx_queue()
5592 i = tx_ring->next_to_use; in e1000_tx_queue()
5595 buffer_info = &tx_ring->buffer_info[i]; in e1000_tx_queue()
5596 tx_desc = E1000_TX_DESC(*tx_ring, i); in e1000_tx_queue()
5603 if (i == tx_ring->count) in e1000_tx_queue()
5620 tx_ring->next_to_use = i; in e1000_tx_queue()
5661 static int __e1000_maybe_stop_tx(struct e1000_ring *tx_ring, int size) in __e1000_maybe_stop_tx() argument
5663 struct e1000_adapter *adapter = tx_ring->adapter; in __e1000_maybe_stop_tx()
5675 if (e1000_desc_unused(tx_ring) < size) in __e1000_maybe_stop_tx()
5684 static int e1000_maybe_stop_tx(struct e1000_ring *tx_ring, int size) in e1000_maybe_stop_tx() argument
5686 BUG_ON(size > tx_ring->count); in e1000_maybe_stop_tx()
5688 if (e1000_desc_unused(tx_ring) >= size) in e1000_maybe_stop_tx()
5690 return __e1000_maybe_stop_tx(tx_ring, size); in e1000_maybe_stop_tx()
5697 struct e1000_ring *tx_ring = adapter->tx_ring; in e1000_xmit_frame() local
5767 if (e1000_maybe_stop_tx(tx_ring, count + 2)) in e1000_xmit_frame()
5776 first = tx_ring->next_to_use; in e1000_xmit_frame()
5778 tso = e1000_tso(tx_ring, skb, protocol); in e1000_xmit_frame()
5786 else if (e1000_tx_csum(tx_ring, skb, protocol)) in e1000_xmit_frame()
5800 count = e1000_tx_map(tx_ring, skb, first, adapter->tx_fifo_limit, in e1000_xmit_frame()
5816 e1000_tx_queue(tx_ring, tx_flags, count); in e1000_xmit_frame()
5818 e1000_maybe_stop_tx(tx_ring, in e1000_xmit_frame()
5826 e1000e_update_tdt_wa(tx_ring, in e1000_xmit_frame()
5827 tx_ring->next_to_use); in e1000_xmit_frame()
5829 writel(tx_ring->next_to_use, tx_ring->tail); in e1000_xmit_frame()
5839 tx_ring->buffer_info[first].time_stamp = 0; in e1000_xmit_frame()
5840 tx_ring->next_to_use = first; in e1000_xmit_frame()
7290 kfree(adapter->tx_ring); in e1000_probe()
7362 kfree(adapter->tx_ring); in e1000_remove()