[dpdk-dev,v2,7/7] mlx4: make sure that number of RX queues is a power of 2

Message ID 1457015260-3041-8-git-send-email-adrien.mazarguil@6wind.com (mailing list archive)
State Accepted, archived
Delegated to: Bruce Richardson
Headers

Commit Message

Adrien Mazarguil March 3, 2016, 2:27 p.m. UTC
  From: Robin Jarry <robin.jarry@6wind.com>

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 | 6 ++++++
 1 file changed, 6 insertions(+)
  

Patch

diff --git a/drivers/net/mlx4/mlx4.c b/drivers/net/mlx4/mlx4.c
index 3c1f4c2..67025c7 100644
--- a/drivers/net/mlx4/mlx4.c
+++ b/drivers/net/mlx4/mlx4.c
@@ -734,6 +734,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. */