]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
ixgbe: setup redirection table for multiple packet buffers
authorJohn Fastabend <john.r.fastabend@intel.com>
Tue, 26 Apr 2011 07:26:19 +0000 (07:26 +0000)
committerJoe Jin <joe.jin@oracle.com>
Thu, 2 Feb 2012 13:19:14 +0000 (21:19 +0800)
Setup RSS redirection table to be compatible with multiple packet
buffers. Currently, this works on 82599 devices because the RSS
redirection index is masked by the number of queues per packet
buffer.

This sets the cap on the RSS table to maxq.

Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
Tested-by: Ross Brattain <ross.b.brattain@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
(cherry picked from commit 86b4db3bcce714d6bdd8c056158821301624bf00)

Signed-off-by: Joe Jin <joe.jin@oracle.com>
drivers/net/ixgbe/ixgbe_main.c

index fde8394e5aacab44da88f181bf5404eba72a488e..8071c0681d8c6843f112927561e22184a582f045 100644 (file)
@@ -2939,6 +2939,10 @@ static void ixgbe_setup_mrqc(struct ixgbe_adapter *adapter)
        u32 rxcsum;
        int i, j;
        u8 tcs = netdev_get_num_tc(adapter->netdev);
+       int maxq = adapter->ring_feature[RING_F_RSS].indices;
+
+       if (tcs)
+               maxq = min(maxq, adapter->num_tx_queues / tcs);
 
        /* Fill out hash function seeds */
        for (i = 0; i < 10; i++)
@@ -2946,7 +2950,7 @@ static void ixgbe_setup_mrqc(struct ixgbe_adapter *adapter)
 
        /* Fill out redirection table */
        for (i = 0, j = 0; i < 128; i++, j++) {
-               if (j == adapter->ring_feature[RING_F_RSS].indices)
+               if (j == maxq)
                        j = 0;
                /* reta = 4-byte sliding window of
                 * 0x00..(indices-1)(indices-1)00..etc. */