• Home
  • Raw
  • Download

Lines Matching refs:tx_ring

217 	struct e1000_ring *tx_ring = adapter->tx_ring;  in e1000e_dump()  local
261 buffer_info = &tx_ring->buffer_info[tx_ring->next_to_clean]; in e1000e_dump()
263 0, tx_ring->next_to_use, tx_ring->next_to_clean, in e1000e_dump()
305 for (i = 0; tx_ring->desc && (i < tx_ring->count); i++) { in e1000e_dump()
307 tx_desc = E1000_TX_DESC(*tx_ring, i); in e1000e_dump()
308 buffer_info = &tx_ring->buffer_info[i]; in e1000e_dump()
310 if (i == tx_ring->next_to_use && i == tx_ring->next_to_clean) in e1000e_dump()
312 else if (i == tx_ring->next_to_use) in e1000e_dump()
314 else if (i == tx_ring->next_to_clean) in e1000e_dump()
639 static void e1000e_update_tdt_wa(struct e1000_ring *tx_ring, unsigned int i) in e1000e_update_tdt_wa() argument
641 struct e1000_adapter *adapter = tx_ring->adapter; in e1000e_update_tdt_wa()
645 writel(i, tx_ring->tail); in e1000e_update_tdt_wa()
647 if (unlikely(!ret_val && (i != readl(tx_ring->tail)))) { in e1000e_update_tdt_wa()
1071 static void e1000_put_txbuf(struct e1000_ring *tx_ring, in e1000_put_txbuf() argument
1074 struct e1000_adapter *adapter = tx_ring->adapter; in e1000_put_txbuf()
1098 struct e1000_ring *tx_ring = adapter->tx_ring; in e1000_print_hw_hang() local
1099 unsigned int i = tx_ring->next_to_clean; in e1000_print_hw_hang()
1100 unsigned int eop = tx_ring->buffer_info[i].next_to_watch; in e1000_print_hw_hang()
1101 struct e1000_tx_desc *eop_desc = E1000_TX_DESC(*tx_ring, eop); in e1000_print_hw_hang()
1157 readl(tx_ring->head), readl(tx_ring->tail), tx_ring->next_to_use, in e1000_print_hw_hang()
1158 tx_ring->next_to_clean, tx_ring->buffer_info[eop].time_stamp, in e1000_print_hw_hang()
1214 static bool e1000_clean_tx_irq(struct e1000_ring *tx_ring) in e1000_clean_tx_irq() argument
1216 struct e1000_adapter *adapter = tx_ring->adapter; in e1000_clean_tx_irq()
1226 i = tx_ring->next_to_clean; in e1000_clean_tx_irq()
1227 eop = tx_ring->buffer_info[i].next_to_watch; in e1000_clean_tx_irq()
1228 eop_desc = E1000_TX_DESC(*tx_ring, eop); in e1000_clean_tx_irq()
1231 (count < tx_ring->count)) { in e1000_clean_tx_irq()
1236 tx_desc = E1000_TX_DESC(*tx_ring, i); in e1000_clean_tx_irq()
1237 buffer_info = &tx_ring->buffer_info[i]; in e1000_clean_tx_irq()
1249 e1000_put_txbuf(tx_ring, buffer_info); in e1000_clean_tx_irq()
1253 if (i == tx_ring->count) in e1000_clean_tx_irq()
1257 if (i == tx_ring->next_to_use) in e1000_clean_tx_irq()
1259 eop = tx_ring->buffer_info[i].next_to_watch; in e1000_clean_tx_irq()
1260 eop_desc = E1000_TX_DESC(*tx_ring, eop); in e1000_clean_tx_irq()
1263 tx_ring->next_to_clean = i; in e1000_clean_tx_irq()
1269 e1000_desc_unused(tx_ring) >= TX_WAKE_THRESHOLD) { in e1000_clean_tx_irq()
1287 if (tx_ring->buffer_info[i].time_stamp && in e1000_clean_tx_irq()
1288 time_after(jiffies, tx_ring->buffer_info[i].time_stamp in e1000_clean_tx_irq()
1297 return count < tx_ring->count; in e1000_clean_tx_irq()
1943 struct e1000_ring *tx_ring = adapter->tx_ring; in e1000_intr_msix_tx() local
1948 if (!e1000_clean_tx_irq(tx_ring)) in e1000_intr_msix_tx()
1950 ew32(ICS, tx_ring->ims_val); in e1000_intr_msix_tx()
1988 struct e1000_ring *tx_ring = adapter->tx_ring; in e1000_configure_msix() local
2013 tx_ring->ims_val = E1000_IMS_TXQ0; in e1000_configure_msix()
2015 if (tx_ring->itr_val) in e1000_configure_msix()
2016 writel(1000000000 / (tx_ring->itr_val * 256), in e1000_configure_msix()
2017 tx_ring->itr_register); in e1000_configure_msix()
2019 writel(1, tx_ring->itr_register); in e1000_configure_msix()
2020 adapter->eiac_mask |= tx_ring->ims_val; in e1000_configure_msix()
2143 snprintf(adapter->tx_ring->name, in e1000_request_msix()
2144 sizeof(adapter->tx_ring->name) - 1, in e1000_request_msix()
2147 memcpy(adapter->tx_ring->name, netdev->name, IFNAMSIZ); in e1000_request_msix()
2149 e1000_intr_msix_tx, 0, adapter->tx_ring->name, in e1000_request_msix()
2153 adapter->tx_ring->itr_register = adapter->hw.hw_addr + in e1000_request_msix()
2155 adapter->tx_ring->itr_val = adapter->itr; in e1000_request_msix()
2341 int e1000e_setup_tx_resources(struct e1000_ring *tx_ring) in e1000e_setup_tx_resources() argument
2343 struct e1000_adapter *adapter = tx_ring->adapter; in e1000e_setup_tx_resources()
2346 size = sizeof(struct e1000_buffer) * tx_ring->count; in e1000e_setup_tx_resources()
2347 tx_ring->buffer_info = vzalloc(size); in e1000e_setup_tx_resources()
2348 if (!tx_ring->buffer_info) in e1000e_setup_tx_resources()
2352 tx_ring->size = tx_ring->count * sizeof(struct e1000_tx_desc); in e1000e_setup_tx_resources()
2353 tx_ring->size = ALIGN(tx_ring->size, 4096); in e1000e_setup_tx_resources()
2355 err = e1000_alloc_ring_dma(adapter, tx_ring); in e1000e_setup_tx_resources()
2359 tx_ring->next_to_use = 0; in e1000e_setup_tx_resources()
2360 tx_ring->next_to_clean = 0; in e1000e_setup_tx_resources()
2364 vfree(tx_ring->buffer_info); in e1000e_setup_tx_resources()
2426 static void e1000_clean_tx_ring(struct e1000_ring *tx_ring) in e1000_clean_tx_ring() argument
2428 struct e1000_adapter *adapter = tx_ring->adapter; in e1000_clean_tx_ring()
2433 for (i = 0; i < tx_ring->count; i++) { in e1000_clean_tx_ring()
2434 buffer_info = &tx_ring->buffer_info[i]; in e1000_clean_tx_ring()
2435 e1000_put_txbuf(tx_ring, buffer_info); in e1000_clean_tx_ring()
2439 size = sizeof(struct e1000_buffer) * tx_ring->count; in e1000_clean_tx_ring()
2440 memset(tx_ring->buffer_info, 0, size); in e1000_clean_tx_ring()
2442 memset(tx_ring->desc, 0, tx_ring->size); in e1000_clean_tx_ring()
2444 tx_ring->next_to_use = 0; in e1000_clean_tx_ring()
2445 tx_ring->next_to_clean = 0; in e1000_clean_tx_ring()
2447 writel(0, tx_ring->head); in e1000_clean_tx_ring()
2449 e1000e_update_tdt_wa(tx_ring, 0); in e1000_clean_tx_ring()
2451 writel(0, tx_ring->tail); in e1000_clean_tx_ring()
2460 void e1000e_free_tx_resources(struct e1000_ring *tx_ring) in e1000e_free_tx_resources() argument
2462 struct e1000_adapter *adapter = tx_ring->adapter; in e1000e_free_tx_resources()
2465 e1000_clean_tx_ring(tx_ring); in e1000e_free_tx_resources()
2467 vfree(tx_ring->buffer_info); in e1000e_free_tx_resources()
2468 tx_ring->buffer_info = NULL; in e1000e_free_tx_resources()
2470 dma_free_coherent(&pdev->dev, tx_ring->size, tx_ring->desc, in e1000e_free_tx_resources()
2471 tx_ring->dma); in e1000e_free_tx_resources()
2472 tx_ring->desc = NULL; in e1000e_free_tx_resources()
2656 adapter->tx_ring = kzalloc(size, GFP_KERNEL); in e1000_alloc_queues()
2657 if (!adapter->tx_ring) in e1000_alloc_queues()
2659 adapter->tx_ring->count = adapter->tx_ring_count; in e1000_alloc_queues()
2660 adapter->tx_ring->adapter = adapter; in e1000_alloc_queues()
2672 kfree(adapter->tx_ring); in e1000_alloc_queues()
2692 (adapter->rx_ring->ims_val & adapter->tx_ring->ims_val)) in e1000e_poll()
2693 tx_cleaned = e1000_clean_tx_irq(adapter->tx_ring); in e1000e_poll()
2938 struct e1000_ring *tx_ring = adapter->tx_ring; in e1000_configure_tx() local
2943 tdba = tx_ring->dma; in e1000_configure_tx()
2944 tdlen = tx_ring->count * sizeof(struct e1000_tx_desc); in e1000_configure_tx()
2950 tx_ring->head = adapter->hw.hw_addr + E1000_TDH(0); in e1000_configure_tx()
2951 tx_ring->tail = adapter->hw.hw_addr + E1000_TDT(0); in e1000_configure_tx()
4097 e1000_clean_tx_ring(adapter->tx_ring); in e1000e_down()
4361 err = e1000e_setup_tx_resources(adapter->tx_ring); in e1000_open()
4437 e1000e_free_tx_resources(adapter->tx_ring); in e1000_open()
4479 e1000e_free_tx_resources(adapter->tx_ring); in e1000_close()
4928 struct e1000_ring *tx_ring = adapter->tx_ring; in e1000_watchdog_task() local
5093 (e1000_desc_unused(tx_ring) + 1 < tx_ring->count)) in e1000_watchdog_task()
5167 static int e1000_tso(struct e1000_ring *tx_ring, struct sk_buff *skb, in e1000_tso() argument
5210 i = tx_ring->next_to_use; in e1000_tso()
5211 context_desc = E1000_CONTEXT_DESC(*tx_ring, i); in e1000_tso()
5212 buffer_info = &tx_ring->buffer_info[i]; in e1000_tso()
5228 if (i == tx_ring->count) in e1000_tso()
5230 tx_ring->next_to_use = i; in e1000_tso()
5235 static bool e1000_tx_csum(struct e1000_ring *tx_ring, struct sk_buff *skb, in e1000_tx_csum() argument
5238 struct e1000_adapter *adapter = tx_ring->adapter; in e1000_tx_csum()
5267 i = tx_ring->next_to_use; in e1000_tx_csum()
5268 buffer_info = &tx_ring->buffer_info[i]; in e1000_tx_csum()
5269 context_desc = E1000_CONTEXT_DESC(*tx_ring, i); in e1000_tx_csum()
5282 if (i == tx_ring->count) in e1000_tx_csum()
5284 tx_ring->next_to_use = i; in e1000_tx_csum()
5289 static int e1000_tx_map(struct e1000_ring *tx_ring, struct sk_buff *skb, in e1000_tx_map() argument
5293 struct e1000_adapter *adapter = tx_ring->adapter; in e1000_tx_map()
5300 i = tx_ring->next_to_use; in e1000_tx_map()
5303 buffer_info = &tx_ring->buffer_info[i]; in e1000_tx_map()
5322 if (i == tx_ring->count) in e1000_tx_map()
5336 if (i == tx_ring->count) in e1000_tx_map()
5339 buffer_info = &tx_ring->buffer_info[i]; in e1000_tx_map()
5362 tx_ring->buffer_info[i].skb = skb; in e1000_tx_map()
5363 tx_ring->buffer_info[i].segs = segs; in e1000_tx_map()
5364 tx_ring->buffer_info[i].bytecount = bytecount; in e1000_tx_map()
5365 tx_ring->buffer_info[first].next_to_watch = i; in e1000_tx_map()
5377 i += tx_ring->count; in e1000_tx_map()
5379 buffer_info = &tx_ring->buffer_info[i]; in e1000_tx_map()
5380 e1000_put_txbuf(tx_ring, buffer_info); in e1000_tx_map()
5386 static void e1000_tx_queue(struct e1000_ring *tx_ring, int tx_flags, int count) in e1000_tx_queue() argument
5388 struct e1000_adapter *adapter = tx_ring->adapter; in e1000_tx_queue()
5421 i = tx_ring->next_to_use; in e1000_tx_queue()
5424 buffer_info = &tx_ring->buffer_info[i]; in e1000_tx_queue()
5425 tx_desc = E1000_TX_DESC(*tx_ring, i); in e1000_tx_queue()
5432 if (i == tx_ring->count) in e1000_tx_queue()
5449 tx_ring->next_to_use = i; in e1000_tx_queue()
5452 e1000e_update_tdt_wa(tx_ring, i); in e1000_tx_queue()
5454 writel(i, tx_ring->tail); in e1000_tx_queue()
5500 static int __e1000_maybe_stop_tx(struct e1000_ring *tx_ring, int size) in __e1000_maybe_stop_tx() argument
5502 struct e1000_adapter *adapter = tx_ring->adapter; in __e1000_maybe_stop_tx()
5514 if (e1000_desc_unused(tx_ring) < size) in __e1000_maybe_stop_tx()
5523 static int e1000_maybe_stop_tx(struct e1000_ring *tx_ring, int size) in e1000_maybe_stop_tx() argument
5525 BUG_ON(size > tx_ring->count); in e1000_maybe_stop_tx()
5527 if (e1000_desc_unused(tx_ring) >= size) in e1000_maybe_stop_tx()
5529 return __e1000_maybe_stop_tx(tx_ring, size); in e1000_maybe_stop_tx()
5536 struct e1000_ring *tx_ring = adapter->tx_ring; in e1000_xmit_frame() local
5610 if (e1000_maybe_stop_tx(tx_ring, count + 2)) in e1000_xmit_frame()
5618 first = tx_ring->next_to_use; in e1000_xmit_frame()
5620 tso = e1000_tso(tx_ring, skb, protocol); in e1000_xmit_frame()
5628 else if (e1000_tx_csum(tx_ring, skb, protocol)) in e1000_xmit_frame()
5642 count = e1000_tx_map(tx_ring, skb, first, adapter->tx_fifo_limit, in e1000_xmit_frame()
5657 e1000_tx_queue(tx_ring, tx_flags, count); in e1000_xmit_frame()
5659 e1000_maybe_stop_tx(tx_ring, in e1000_xmit_frame()
5665 tx_ring->buffer_info[first].time_stamp = 0; in e1000_xmit_frame()
5666 tx_ring->next_to_use = first; in e1000_xmit_frame()
7045 kfree(adapter->tx_ring); in e1000_probe()
7117 kfree(adapter->tx_ring); in e1000_remove()