Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 166548
b: refs/heads/master
c: cdd7549
h: refs/heads/master
v: v3
  • Loading branch information
Jesse Brandeburg authored and David S. Miller committed Sep 27, 2009
1 parent 3995dc0 commit d7de00f
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 7 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: be0f071956e2142e2e88e9d6d5655ba1c75d07c8
refs/heads/master: cdd7549e27bf5e8abc4e19d5e8d110b8252b4fe4
15 changes: 9 additions & 6 deletions trunk/drivers/net/e1000/e1000_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -2733,8 +2733,9 @@ static int e1000_tx_map(struct e1000_adapter *adapter,
size -= 4;

buffer_info->length = size;
buffer_info->dma = skb_shinfo(skb)->dma_head + offset;
/* set time_stamp *before* dma to help avoid a possible race */
buffer_info->time_stamp = jiffies;
buffer_info->dma = skb_shinfo(skb)->dma_head + offset;
buffer_info->next_to_watch = i;

len -= size;
Expand Down Expand Up @@ -2774,8 +2775,8 @@ static int e1000_tx_map(struct e1000_adapter *adapter,
size -= 4;

buffer_info->length = size;
buffer_info->dma = map[f] + offset;
buffer_info->time_stamp = jiffies;
buffer_info->dma = map[f] + offset;
buffer_info->next_to_watch = i;

len -= size;
Expand Down Expand Up @@ -3459,7 +3460,9 @@ static bool e1000_clean_tx_irq(struct e1000_adapter *adapter,
* sees the new next_to_clean.
*/
smp_mb();
if (netif_queue_stopped(netdev)) {

if (netif_queue_stopped(netdev) &&
!(test_bit(__E1000_DOWN, &adapter->flags))) {
netif_wake_queue(netdev);
++adapter->restart_queue;
}
Expand All @@ -3469,8 +3472,8 @@ static bool e1000_clean_tx_irq(struct e1000_adapter *adapter,
/* Detect a transmit hang in hardware, this serializes the
* check with the clearing of time_stamp and movement of i */
adapter->detect_tx_hung = false;
if (tx_ring->buffer_info[i].time_stamp &&
time_after(jiffies, tx_ring->buffer_info[i].time_stamp +
if (tx_ring->buffer_info[eop].time_stamp &&
time_after(jiffies, tx_ring->buffer_info[eop].time_stamp +
(adapter->tx_timeout_factor * HZ))
&& !(er32(STATUS) & E1000_STATUS_TXOFF)) {

Expand All @@ -3492,7 +3495,7 @@ static bool e1000_clean_tx_irq(struct e1000_adapter *adapter,
readl(hw->hw_addr + tx_ring->tdt),
tx_ring->next_to_use,
tx_ring->next_to_clean,
tx_ring->buffer_info[i].time_stamp,
tx_ring->buffer_info[eop].time_stamp,
eop,
jiffies,
eop_desc->upper.fields.status);
Expand Down

0 comments on commit d7de00f

Please sign in to comment.