Skip to content

Commit

Permalink
igb: always use adapter->itr as EITR value
Browse files Browse the repository at this point in the history
The igb driver was switching between adapter->itr containing the EITR value
and the number of interrupts per second.  This resulted in high latencies
being seen after brining the interface down and then back up.  To resolve
the issue the itr value will now only contain the value that should be
programmed into EITR.

Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Alexander Duyck authored and David S. Miller committed Apr 27, 2009
1 parent 0119830 commit 78b1f60
Showing 1 changed file with 6 additions and 5 deletions.
11 changes: 6 additions & 5 deletions drivers/net/igb/igb_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -2898,13 +2898,13 @@ static void igb_set_itr(struct igb_adapter *adapter)
switch (current_itr) {
/* counts and packets in update_itr are dependent on these numbers */
case lowest_latency:
new_itr = 70000;
new_itr = 56; /* aka 70,000 ints/sec */
break;
case low_latency:
new_itr = 20000; /* aka hwitr = ~200 */
new_itr = 196; /* aka 20,000 ints/sec */
break;
case bulk_latency:
new_itr = 4000;
new_itr = 980; /* aka 4,000 ints/sec */
break;
default:
break;
Expand All @@ -2923,7 +2923,8 @@ static void igb_set_itr(struct igb_adapter *adapter)
* by adding intermediate steps when interrupt rate is
* increasing */
new_itr = new_itr > adapter->itr ?
min(adapter->itr + (new_itr >> 2), new_itr) :
max((new_itr * adapter->itr) /
(new_itr + (adapter->itr >> 2)), new_itr) :
new_itr;
/* Don't write the value here; it resets the adapter's
* internal timer, and causes us to delay far longer than
Expand All @@ -2932,7 +2933,7 @@ static void igb_set_itr(struct igb_adapter *adapter)
* ends up being correct.
*/
adapter->itr = new_itr;
adapter->rx_ring->itr_val = 1000000000 / (new_itr * 256);
adapter->rx_ring->itr_val = new_itr;
adapter->rx_ring->set_itr = 1;
}

Expand Down

0 comments on commit 78b1f60

Please sign in to comment.