Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 45023
b: refs/heads/master
c: 2b65326
h: refs/heads/master
i:
  45021: 5faa6ac
  45019: 525f84b
  45015: 7e279e1
  45007: 85280b3
  44991: ae18399
v: v3
  • Loading branch information
Jesse Brandeburg authored and Jeff Garzik committed Dec 26, 2006
1 parent 79d17c7 commit c6878ff
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 17 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: 7d16e65ba57f181732ec52626736b27904198edf
refs/heads/master: 2b65326e67f89899e8bcaed1989d8cfb0ed01f55
40 changes: 24 additions & 16 deletions trunk/drivers/net/e1000/e1000_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -2628,29 +2628,34 @@ static unsigned int e1000_update_itr(struct e1000_adapter *adapter,
if (packets == 0)
goto update_itr_done;


switch (itr_setting) {
case lowest_latency:
if ((packets < 5) && (bytes > 512))
/* jumbo frames get bulk treatment*/
if (bytes/packets > 8000)
retval = bulk_latency;
else if ((packets < 5) && (bytes > 512))
retval = low_latency;
break;
case low_latency: /* 50 usec aka 20000 ints/s */
if (bytes > 10000) {
if ((packets < 10) ||
((bytes/packets) > 1200))
/* jumbo frames need bulk latency setting */
if (bytes/packets > 8000)
retval = bulk_latency;
else if ((packets < 10) || ((bytes/packets) > 1200))
retval = bulk_latency;
else if ((packets > 35))
retval = lowest_latency;
} else if (packets <= 2 && bytes < 512)
} else if (bytes/packets > 2000)
retval = bulk_latency;
else if (packets <= 2 && bytes < 512)
retval = lowest_latency;
break;
case bulk_latency: /* 250 usec aka 4000 ints/s */
if (bytes > 25000) {
if (packets > 35)
retval = low_latency;
} else {
if (bytes < 6000)
retval = low_latency;
} else if (bytes < 6000) {
retval = low_latency;
}
break;
}
Expand Down Expand Up @@ -2679,17 +2684,20 @@ static void e1000_set_itr(struct e1000_adapter *adapter)
adapter->tx_itr,
adapter->total_tx_packets,
adapter->total_tx_bytes);
/* conservative mode (itr 3) eliminates the lowest_latency setting */
if (adapter->itr_setting == 3 && adapter->tx_itr == lowest_latency)
adapter->tx_itr = low_latency;

adapter->rx_itr = e1000_update_itr(adapter,
adapter->rx_itr,
adapter->total_rx_packets,
adapter->total_rx_bytes);
/* conservative mode (itr 3) eliminates the lowest_latency setting */
if (adapter->itr_setting == 3 && adapter->rx_itr == lowest_latency)
adapter->rx_itr = low_latency;

current_itr = max(adapter->rx_itr, adapter->tx_itr);

/* conservative mode eliminates the lowest_latency setting */
if (current_itr == lowest_latency && (adapter->itr_setting == 3))
current_itr = low_latency;

switch (current_itr) {
/* counts and packets in update_itr are dependent on these numbers */
case lowest_latency:
Expand Down Expand Up @@ -3868,11 +3876,11 @@ e1000_clean_tx_irq(struct e1000_adapter *adapter,
cleaned = (i == eop);

if (cleaned) {
/* this packet count is wrong for TSO but has a
* tendency to make dynamic ITR change more
* towards bulk */
struct sk_buff *skb = buffer_info->skb;
unsigned int segs = skb_shinfo(skb)->gso_segs;
total_tx_packets += segs;
total_tx_packets++;
total_tx_bytes += buffer_info->skb->len;
total_tx_bytes += skb->len;
}
e1000_unmap_and_free_tx_resource(adapter, buffer_info);
tx_desc->upper.data = 0;
Expand Down

0 comments on commit c6878ff

Please sign in to comment.