提交 ab256e5a 编写于 作者: D Dotan Barak 提交者: David S. Miller

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: NDotan Barak <dotanb@dev.mellanox.co.il>
Signed-off-by: NMatan Barak <matanb@mellanox.com>
Signed-off-by: NOr Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 ddae0349
...@@ -478,6 +478,7 @@ int mlx4_init_qp_table(struct mlx4_dev *dev) ...@@ -478,6 +478,7 @@ int mlx4_init_qp_table(struct mlx4_dev *dev)
struct mlx4_qp_table *qp_table = &mlx4_priv(dev)->qp_table; struct mlx4_qp_table *qp_table = &mlx4_priv(dev)->qp_table;
int err; int err;
int reserved_from_top = 0; int reserved_from_top = 0;
int reserved_from_bot;
int k; int k;
spin_lock_init(&qp_table->lock); spin_lock_init(&qp_table->lock);
...@@ -534,9 +535,14 @@ int mlx4_init_qp_table(struct mlx4_dev *dev) ...@@ -534,9 +535,14 @@ int mlx4_init_qp_table(struct mlx4_dev *dev)
* b. All the proxy SQPs (8 per function) * b. All the proxy SQPs (8 per function)
* c. All the tunnel QPs (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, 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); reserved_from_top);
if (err) if (err)
return err; return err;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册