net/mlx4_en: Report actual number of rings in indirection table
authorAmir Vadai <amirv@mellanox.com>
Mon, 27 Oct 2014 09:37:47 +0000 (11:37 +0200)
committerDavid S. Miller <davem@davemloft.net>
Tue, 28 Oct 2014 21:18:01 +0000 (17:18 -0400)
Hardware requires the number of rings in indirection table to be a power
of 2. When setting number of channels to a non power of 2 number,
indirection table is using only the closest power of 2 rings.
Report this number in 'ethtool -x' and not the total number of rx rings.

Signed-off-by: Amir Vadai <amirv@mellanox.com>
Signed-off-by: Eugenia Emantayev <eugenia@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlx4/en_ethtool.c

index 144d6bdc183f4c8cc60b985b077a05c966a99de9..8ea4d5be7376fc0892930e6f701c78676f5bb0e0 100644 (file)
@@ -982,6 +982,7 @@ static int mlx4_en_get_rxfh(struct net_device *dev, u32 *ring_index, u8 *key)
        int err = 0;
 
        rss_rings = priv->prof->rss_rings ?: priv->rx_ring_num;
+       rss_rings = 1 << ilog2(rss_rings);
 
        while (n--) {
                ring_index[n] = rss_map->qps[n % rss_rings].qpn -