Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ab256e5a authored by Dotan Barak's avatar Dotan Barak Committed by David S. Miller
Browse files

net/mlx4: Add a check if there are too many reserved QPs



The number of reserved QPs is affected both from the firmware and
from the driver's requirements. This patch adds a check that
validates that this number is indeed feasable.

Signed-off-by: default avatarDotan Barak <dotanb@dev.mellanox.co.il>
Signed-off-by: default avatarMatan Barak <matanb@mellanox.com>
Signed-off-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent ddae0349
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -478,6 +478,7 @@ int mlx4_init_qp_table(struct mlx4_dev *dev)
	struct mlx4_qp_table *qp_table = &mlx4_priv(dev)->qp_table;
	int err;
	int reserved_from_top = 0;
	int reserved_from_bot;
	int k;

	spin_lock_init(&qp_table->lock);
@@ -534,9 +535,14 @@ int mlx4_init_qp_table(struct mlx4_dev *dev)
	* b. All the proxy SQPs (8 per function)
	* c. All the tunnel QPs (8 per function)
	*/
	reserved_from_bot = mlx4_num_reserved_sqps(dev);
	if (reserved_from_bot + reserved_from_top > dev->caps.num_qps) {
		mlx4_err(dev, "Number of reserved QPs is higher than number of QPs\n");
		return -EINVAL;
	}

	err = mlx4_bitmap_init(&qp_table->bitmap, dev->caps.num_qps,
			       (1 << 23) - 1, mlx4_num_reserved_sqps(dev),
			       (1 << 23) - 1, reserved_from_bot,
			       reserved_from_top);
	if (err)
		return err;