igb: Use rx/tx_itr_setting when setting up initial value of itr
authorAlexander Duyck <alexander.h.duyck@intel.com>
Tue, 12 Feb 2013 02:31:01 +0000 (02:31 +0000)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Thu, 18 Apr 2013 23:40:12 +0000 (16:40 -0700)
It turns out that the InterruptThrottleRate module parameter was only
having the effect of locking the ITR at the starting ITR value. This was
because the values stored in rx_itr_setting and tx_itr_setting were being
ignored when configuring the initial itr_val of the q_vector.

Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/igb/igb_main.c

index d27eb4e..d838ab1 100644 (file)
@@ -1179,6 +1179,17 @@ static int igb_alloc_q_vector(struct igb_adapter *adapter,
        /* initialize pointer to rings */
        ring = q_vector->ring;
 
+       /* intialize ITR */
+       if (rxr_count) {
+               /* rx or rx/tx vector */
+               if (!adapter->rx_itr_setting || adapter->rx_itr_setting > 3)
+                       q_vector->itr_val = adapter->rx_itr_setting;
+       } else {
+               /* tx only vector */
+               if (!adapter->tx_itr_setting || adapter->tx_itr_setting > 3)
+                       q_vector->itr_val = adapter->tx_itr_setting;
+       }
+
        if (txr_count) {
                /* assign generic ring traits */
                ring->dev = &adapter->pdev->dev;