i40evf: program RSS LUT correctly
[pandora-kernel.git] / drivers / net / ethernet / intel / i40evf / i40evf_main.c
index e35e66f..2797548 100644 (file)
@@ -1412,6 +1412,14 @@ restart_watchdog:
        schedule_work(&adapter->adminq_task);
 }
 
+/**
+ * i40evf_configure_rss - increment to next available tx queue
+ * @adapter: board private structure
+ * @j: queue counter
+ *
+ * Helper function for RSS programming to increment through available
+ * queus. Returns the next queue value.
+ **/
 static int next_queue(struct i40evf_adapter *adapter, int j)
 {
        j += 1;
@@ -1451,10 +1459,14 @@ static void i40evf_configure_rss(struct i40evf_adapter *adapter)
        /* Populate the LUT with max no. of queues in round robin fashion */
        j = adapter->vsi_res->num_queue_pairs;
        for (i = 0; i <= I40E_VFQF_HLUT_MAX_INDEX; i++) {
-               lut = next_queue(adapter, j);
-               lut |= next_queue(adapter, j) << 8;
-               lut |= next_queue(adapter, j) << 16;
-               lut |= next_queue(adapter, j) << 24;
+               j = next_queue(adapter, j);
+               lut = j;
+               j = next_queue(adapter, j);
+               lut |= j << 8;
+               j = next_queue(adapter, j);
+               lut |= j << 16;
+               j = next_queue(adapter, j);
+               lut |= j << 24;
                wr32(hw, I40E_VFQF_HLUT(i), lut);
        }
        i40e_flush(hw);