qede: Reconfigure rss indirection direction table when rss count is updated
authorSudarsana Reddy Kalluru <sudarsana.kalluru@cavium.com>
Fri, 21 Oct 2016 08:43:43 +0000 (04:43 -0400)
committerDavid S. Miller <davem@davemloft.net>
Sat, 22 Oct 2016 21:08:07 +0000 (17:08 -0400)
Rx indirection table entries are in the range [0, (rss_count - 1)]. If
user reduces the rss count, the table entries may not be in the ccorrect
range. Need to reconfigure the table with new rss_count as a basis.

Signed-off-by: Sudarsana Reddy Kalluru <Sudarsana.Kalluru@cavium.com>
Signed-off-by: Yuval Mintz <Yuval.Mintz@cavium.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/qlogic/qede/qede_ethtool.c

index 7da184cfe72e073223dbf1d021ac8d5bc946a184..d47bdaa1f9a86b53990148d4cda9b3d33db1a1e3 100644 (file)
@@ -822,6 +822,13 @@ static int qede_set_channels(struct net_device *dev,
        edev->req_queues = count;
        edev->req_num_tx = channels->tx_count;
        edev->req_num_rx = channels->rx_count;
+       /* Reset the indirection table if rx queue count is updated */
+       if ((edev->req_queues - edev->req_num_tx) != QEDE_RSS_COUNT(edev)) {
+               edev->rss_params_inited &= ~QEDE_RSS_INDIR_INITED;
+               memset(&edev->rss_params.rss_ind_table, 0,
+                      sizeof(edev->rss_params.rss_ind_table));
+       }
+
        if (netif_running(dev))
                qede_reload(edev, NULL, NULL);