igb: cap interrupts at 20K per queue when in itr mode 3
authorNick Nunley <nicholasx.d.nunley@intel.com>
Wed, 17 Feb 2010 01:03:19 +0000 (01:03 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 17 Feb 2010 21:21:35 +0000 (13:21 -0800)
In order to maintain similar performance between MSI-X and
legacy/MSI interrupts, this patch reduces the number of interrupts
when receiving small packets to 20K when in interrupt throttle
rate mode 3.

Signed-off-by: Nicholas Nunley <nicholasx.d.nunley@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/igb/igb_main.c

index eb48e1a084ddc3b35490eadf4fe937ff0852eb36..4ccc7fc70f53ed2e1082bce8d8925786938941b1 100644 (file)
@@ -3260,6 +3260,10 @@ static void igb_update_ring_itr(struct igb_q_vector *q_vector)
        else
                new_val = avg_wire_size / 2;
 
+       /* when in itr mode 3 do not exceed 20K ints/sec */
+       if (adapter->rx_itr_setting == 3 && new_val < 196)
+               new_val = 196;
+
 set_itr_val:
        if (new_val != q_vector->itr_val) {
                q_vector->itr_val = new_val;