aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/qp.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx4/qp.c b/drivers/net/ethernet/mellanox/mlx4/qp.c
index 40e82edac99d..8720428c9807 100644
--- a/drivers/net/ethernet/mellanox/mlx4/qp.c
+++ b/drivers/net/ethernet/mellanox/mlx4/qp.c
@@ -478,6 +478,7 @@ int mlx4_init_qp_table(struct mlx4_dev *dev)
478 struct mlx4_qp_table *qp_table = &mlx4_priv(dev)->qp_table; 478 struct mlx4_qp_table *qp_table = &mlx4_priv(dev)->qp_table;
479 int err; 479 int err;
480 int reserved_from_top = 0; 480 int reserved_from_top = 0;
481 int reserved_from_bot;
481 int k; 482 int k;
482 483
483 spin_lock_init(&qp_table->lock); 484 spin_lock_init(&qp_table->lock);
@@ -534,9 +535,14 @@ int mlx4_init_qp_table(struct mlx4_dev *dev)
534 * b. All the proxy SQPs (8 per function) 535 * b. All the proxy SQPs (8 per function)
535 * c. All the tunnel QPs (8 per function) 536 * c. All the tunnel QPs (8 per function)
536 */ 537 */
538 reserved_from_bot = mlx4_num_reserved_sqps(dev);
539 if (reserved_from_bot + reserved_from_top > dev->caps.num_qps) {
540 mlx4_err(dev, "Number of reserved QPs is higher than number of QPs\n");
541 return -EINVAL;
542 }
537 543
538 err = mlx4_bitmap_init(&qp_table->bitmap, dev->caps.num_qps, 544 err = mlx4_bitmap_init(&qp_table->bitmap, dev->caps.num_qps,
539 (1 << 23) - 1, mlx4_num_reserved_sqps(dev), 545 (1 << 23) - 1, reserved_from_bot,
540 reserved_from_top); 546 reserved_from_top);
541 if (err) 547 if (err)
542 return err; 548 return err;