]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
ixgbe: Change default Tx work limit size to 256 buffers
authorAlexander Duyck <alexander.h.duyck@intel.com>
Wed, 31 Aug 2011 00:01:06 +0000 (00:01 +0000)
committerJoe Jin <joe.jin@oracle.com>
Thu, 17 May 2012 14:02:34 +0000 (22:02 +0800)
This change makes it so that the default Tx work limit is 256 buffers or
1/2 of an entire ring instead of a full ring size so that it is much more
likely that we will be able to actually reach the work limit value.
Previously with the value set to an entire ring it would not have been
possible for us to trigger an event due to the fact that the Tx work is
stopped at the point where we cannot place one more buffer on the ring and
it is not restarted until cleanup is complete.

(cherry picked from commit 592245559e9007845ef6603cc930c784031eb076)
Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
drivers/net/ixgbe/ixgbe.h
drivers/net/ixgbe/ixgbe_main.c

index 58482fc3024b0b661e27b1a878511db7d33acf13..3f5a744f7099a2c0eb67be77c96f4d53f66c4a9f 100644 (file)
@@ -53,6 +53,7 @@
 
 /* TX/RX descriptor defines */
 #define IXGBE_DEFAULT_TXD                  512
+#define IXGBE_DEFAULT_TX_WORK              256
 #define IXGBE_MAX_TXD                     4096
 #define IXGBE_MIN_TXD                       64
 
index c334117b01539e117d1c3cd4d450211eca3bf782..a25b1f6424d6d805e2f14ba9a03e58a483009fe6 100644 (file)
@@ -803,7 +803,7 @@ static bool ixgbe_clean_tx_irq(struct ixgbe_q_vector *q_vector,
        struct ixgbe_tx_buffer *tx_buffer;
        union ixgbe_adv_tx_desc *tx_desc;
        unsigned int total_bytes = 0, total_packets = 0;
-       u16 budget = q_vector->tx.work_limit;
+       unsigned int budget = q_vector->tx.work_limit;
        u16 i = tx_ring->next_to_clean;
 
        tx_buffer = &tx_ring->tx_buffer_info[i];
@@ -890,7 +890,7 @@ static bool ixgbe_clean_tx_irq(struct ixgbe_q_vector *q_vector,
                ixgbe_tx_timeout_reset(adapter);
 
                /* the adapter is about to reset, no point in enabling stuff */
-               return budget;
+               return true;
        }
 
 #define TX_WAKE_THRESHOLD (DESC_NEEDED * 2)
@@ -907,7 +907,7 @@ static bool ixgbe_clean_tx_irq(struct ixgbe_q_vector *q_vector,
                }
        }
 
-       return budget;
+       return !!budget;
 }
 
 #ifdef CONFIG_IXGBE_DCA
@@ -5090,7 +5090,7 @@ static int __devinit ixgbe_sw_init(struct ixgbe_adapter *adapter)
        adapter->rx_ring_count = IXGBE_DEFAULT_RXD;
 
        /* set default work limits */
-       adapter->tx_work_limit = adapter->tx_ring_count;
+       adapter->tx_work_limit = IXGBE_DEFAULT_TX_WORK;
 
        /* initialize eeprom parameters */
        if (ixgbe_init_eeprom_params_generic(hw)) {