diff options
author | Leon Romanovsky <leonro@mellanox.com> | 2018-09-03 02:11:14 -0400 |
---|---|---|
committer | Jason Gunthorpe <jgg@mellanox.com> | 2018-09-06 15:16:12 -0400 |
commit | 8f28b178f71cc56eccf2a6e2c0ace17c82f900d7 (patch) | |
tree | 9323ffd9700bfba2f99a48b3fe511ad18be6019e | |
parent | 954a8e3aea87e896e320cf648c1a5bbe47de443e (diff) |
RDMA/mlx4: Ensure that maximal send/receive SGE less than supported by HW
In calculating the global maximum number of the Scatter/Gather elements
supported, the following four maximum parameters must be taken into
consideration: max_sg_rq, max_sg_sq, max_desc_sz_rq and max_desc_sz_sq.
However instead of bringing this complexity to query_device, which still
won't be sufficient anyway (the calculations are dependent on QP type),
the safer approach will be to restore old code, which will give us 32
SGEs.
Fixes: 33023fb85a42 ("IB/core: add max_send_sge and max_recv_sge attributes")
Reported-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
-rw-r--r-- | drivers/infiniband/hw/mlx4/main.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/infiniband/hw/mlx4/main.c b/drivers/infiniband/hw/mlx4/main.c index ca0f1ee26091..0bbeaaae47e0 100644 --- a/drivers/infiniband/hw/mlx4/main.c +++ b/drivers/infiniband/hw/mlx4/main.c | |||
@@ -517,9 +517,11 @@ static int mlx4_ib_query_device(struct ib_device *ibdev, | |||
517 | props->page_size_cap = dev->dev->caps.page_size_cap; | 517 | props->page_size_cap = dev->dev->caps.page_size_cap; |
518 | props->max_qp = dev->dev->quotas.qp; | 518 | props->max_qp = dev->dev->quotas.qp; |
519 | props->max_qp_wr = dev->dev->caps.max_wqes - MLX4_IB_SQ_MAX_SPARE; | 519 | props->max_qp_wr = dev->dev->caps.max_wqes - MLX4_IB_SQ_MAX_SPARE; |
520 | props->max_send_sge = dev->dev->caps.max_sq_sg; | 520 | props->max_send_sge = |
521 | props->max_recv_sge = dev->dev->caps.max_rq_sg; | 521 | min(dev->dev->caps.max_sq_sg, dev->dev->caps.max_rq_sg); |
522 | props->max_sge_rd = MLX4_MAX_SGE_RD; | 522 | props->max_recv_sge = |
523 | min(dev->dev->caps.max_sq_sg, dev->dev->caps.max_rq_sg); | ||
524 | props->max_sge_rd = MLX4_MAX_SGE_RD; | ||
523 | props->max_cq = dev->dev->quotas.cq; | 525 | props->max_cq = dev->dev->quotas.cq; |
524 | props->max_cqe = dev->dev->caps.max_cqes; | 526 | props->max_cqe = dev->dev->caps.max_cqes; |
525 | props->max_mr = dev->dev->quotas.mpt; | 527 | props->max_mr = dev->dev->quotas.mpt; |