ixgbe: handle parameters for tx and rx EITR, no div0
authorShannon Nelson <shannon.nelson@intel.com>
Tue, 24 Nov 2009 18:51:06 +0000 (18:51 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sun, 29 Nov 2009 08:33:58 +0000 (00:33 -0800)
The driver was doing a divide by zero when adjusting tx-usecs.
This patch removes the divide by zero code and changes the logic slightly
to ignore tx-usecs in the case of shared TxRx vectors.

Cc: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Shannon Nelson <shannon.nelson@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ixgbe/ixgbe_ethtool.c

index 84ab4db..a5ca289 100644 (file)
@@ -1972,6 +1972,10 @@ static int ixgbe_get_coalesce(struct net_device *netdev,
                break;
        }
 
+       /* if in mixed tx/rx queues per vector mode, report only rx settings */
+       if (adapter->q_vector[0]->txr_count && adapter->q_vector[0]->rxr_count)
+               return 0;
+
        /* only valid if in constant ITR mode */
        switch (adapter->tx_itr_setting) {
        case 0:
@@ -1997,12 +2001,9 @@ static int ixgbe_set_coalesce(struct net_device *netdev,
        struct ixgbe_q_vector *q_vector;
        int i;
 
-       /*
-        * don't accept tx specific changes if we've got mixed RxTx vectors
-        * test and jump out here if needed before changing the rx numbers
-        */
-       if ((1000000/ec->tx_coalesce_usecs) != adapter->tx_eitr_param &&
-           adapter->q_vector[0]->txr_count && adapter->q_vector[0]->rxr_count)
+       /* don't accept tx specific changes if we've got mixed RxTx vectors */
+       if (adapter->q_vector[0]->txr_count && adapter->q_vector[0]->rxr_count
+          && ec->tx_coalesce_usecs)
                return -EINVAL;
 
        if (ec->tx_max_coalesced_frames_irq)