aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/e1000
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/e1000')
-rw-r--r--drivers/net/e1000/e1000_main.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index 44ba52229c73..9d82bbb1a826 100644
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -1993,10 +1993,13 @@ e1000_unmap_and_free_tx_resource(struct e1000_adapter *adapter,
1993 buffer_info->dma, 1993 buffer_info->dma,
1994 buffer_info->length, 1994 buffer_info->length,
1995 PCI_DMA_TODEVICE); 1995 PCI_DMA_TODEVICE);
1996 buffer_info->dma = 0;
1996 } 1997 }
1997 if (buffer_info->skb) 1998 if (buffer_info->skb) {
1998 dev_kfree_skb_any(buffer_info->skb); 1999 dev_kfree_skb_any(buffer_info->skb);
1999 memset(buffer_info, 0, sizeof(struct e1000_buffer)); 2000 buffer_info->skb = NULL;
2001 }
2002 /* buffer_info must be completely set up in the transmit path */
2000} 2003}
2001 2004
2002/** 2005/**
@@ -2661,6 +2664,7 @@ e1000_tso(struct e1000_adapter *adapter, struct e1000_tx_ring *tx_ring,
2661 context_desc->cmd_and_length = cpu_to_le32(cmd_length); 2664 context_desc->cmd_and_length = cpu_to_le32(cmd_length);
2662 2665
2663 buffer_info->time_stamp = jiffies; 2666 buffer_info->time_stamp = jiffies;
2667 buffer_info->next_to_watch = i;
2664 2668
2665 if (++i == tx_ring->count) i = 0; 2669 if (++i == tx_ring->count) i = 0;
2666 tx_ring->next_to_use = i; 2670 tx_ring->next_to_use = i;
@@ -2695,6 +2699,7 @@ e1000_tx_csum(struct e1000_adapter *adapter, struct e1000_tx_ring *tx_ring,
2695 context_desc->cmd_and_length = cpu_to_le32(E1000_TXD_CMD_DEXT); 2699 context_desc->cmd_and_length = cpu_to_le32(E1000_TXD_CMD_DEXT);
2696 2700
2697 buffer_info->time_stamp = jiffies; 2701 buffer_info->time_stamp = jiffies;
2702 buffer_info->next_to_watch = i;
2698 2703
2699 if (unlikely(++i == tx_ring->count)) i = 0; 2704 if (unlikely(++i == tx_ring->count)) i = 0;
2700 tx_ring->next_to_use = i; 2705 tx_ring->next_to_use = i;
@@ -2763,6 +2768,7 @@ e1000_tx_map(struct e1000_adapter *adapter, struct e1000_tx_ring *tx_ring,
2763 size, 2768 size,
2764 PCI_DMA_TODEVICE); 2769 PCI_DMA_TODEVICE);
2765 buffer_info->time_stamp = jiffies; 2770 buffer_info->time_stamp = jiffies;
2771 buffer_info->next_to_watch = i;
2766 2772
2767 len -= size; 2773 len -= size;
2768 offset += size; 2774 offset += size;
@@ -2802,6 +2808,7 @@ e1000_tx_map(struct e1000_adapter *adapter, struct e1000_tx_ring *tx_ring,
2802 size, 2808 size,
2803 PCI_DMA_TODEVICE); 2809 PCI_DMA_TODEVICE);
2804 buffer_info->time_stamp = jiffies; 2810 buffer_info->time_stamp = jiffies;
2811 buffer_info->next_to_watch = i;
2805 2812
2806 len -= size; 2813 len -= size;
2807 offset += size; 2814 offset += size;
@@ -3620,7 +3627,7 @@ e1000_clean_tx_irq(struct e1000_adapter *adapter,
3620 cleaned = (i == eop); 3627 cleaned = (i == eop);
3621 3628
3622 e1000_unmap_and_free_tx_resource(adapter, buffer_info); 3629 e1000_unmap_and_free_tx_resource(adapter, buffer_info);
3623 memset(tx_desc, 0, sizeof(struct e1000_tx_desc)); 3630 tx_desc->upper.data = 0;
3624 3631
3625 if (unlikely(++i == tx_ring->count)) i = 0; 3632 if (unlikely(++i == tx_ring->count)) i = 0;
3626 } 3633 }