ixgbe: setup redirection table for multiple packet buffers
authorJohn Fastabend <[email protected]>
Tue, 26 Apr 2011 07:26:19 +0000 (07:26 +0000)
committerJeff Kirsher <[email protected]>
Tue, 21 Jun 2011 08:21:10 +0000 (01:21 -0700)
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 <[email protected]>
Tested-by: Ross Brattain <[email protected]>
Signed-off-by: Jeff Kirsher <[email protected]>
drivers/net/ixgbe/ixgbe_main.c

index f829d3614521e170b6740aff94a7642926eb0007..e81dc853922b5178980d1d1fdc7b9843052f4a9d 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. */