mlx4: ensure number of Rx queues is a power of 2
authorRobin Jarry <robin.jarry@6wind.com>
Thu, 3 Mar 2016 14:27:40 +0000 (15:27 +0100)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Wed, 16 Mar 2016 17:52:17 +0000 (18:52 +0100)
In the documentation it is specified that the hardware only supports a
number of RX queues if it is a power of 2.

Since ibv_exp_create_qp may not return an error when the number of
queues is unsupported by hardware, sanitize the value in dev_configure.

Signed-off-by: Robin Jarry <robin.jarry@6wind.com>
drivers/net/mlx4/mlx4.c

index d3cea0f..295c38b 100644 (file)
@@ -733,6 +733,12 @@ dev_configure(struct rte_eth_dev *dev)
        }
        if (rxqs_n == priv->rxqs_n)
                return 0;
+       if ((rxqs_n & (rxqs_n - 1)) != 0) {
+               ERROR("%p: invalid number of RX queues (%u),"
+                     " must be a power of 2",
+                     (void *)dev, rxqs_n);
+               return EINVAL;
+       }
        INFO("%p: RX queues number update: %u -> %u",
             (void *)dev, priv->rxqs_n, rxqs_n);
        /* If RSS is enabled, disable it first. */