Message ID | 1535987184-16417-1-git-send-email-tariqt@mellanox.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
Series | [net] net/mlx5: Fix SQ offset in QPs with small RQ | expand |
From: Tariq Toukan <tariqt@mellanox.com> Date: Mon, 3 Sep 2018 18:06:24 +0300 > Correct the formula for calculating the RQ page remainder, > which should be in byte granularity. The result will be > non-zero only for RQs smaller than PAGE_SIZE, as an RQ size > is a power of 2. > > Divide this by the SQ stride (MLX5_SEND_WQE_BB) to get the > SQ offset in strides granularity. > > Fixes: d7037ad73daa ("net/mlx5: Fix QP fragmented buffer allocation") > Signed-off-by: Tariq Toukan <tariqt@mellanox.com> > Reviewed-by: Eran Ben Elisha <eranbe@mellanox.com> > Signed-off-by: Saeed Mahameed <saeedm@mellanox.com> > --- > drivers/net/ethernet/mellanox/mlx5/core/wq.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > Hi Dave, > Please queue for -stable v4.18. Applied and queued up for -stable, thanks.
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/wq.c b/drivers/net/ethernet/mellanox/mlx5/core/wq.c index 86478a6b99c5..c8c315eb5128 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/wq.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/wq.c @@ -139,14 +139,15 @@ int mlx5_wq_qp_create(struct mlx5_core_dev *mdev, struct mlx5_wq_param *param, struct mlx5_wq_ctrl *wq_ctrl) { u32 sq_strides_offset; + u32 rq_pg_remainder; int err; mlx5_fill_fbc(MLX5_GET(qpc, qpc, log_rq_stride) + 4, MLX5_GET(qpc, qpc, log_rq_size), &wq->rq.fbc); - sq_strides_offset = - ((wq->rq.fbc.frag_sz_m1 + 1) % PAGE_SIZE) / MLX5_SEND_WQE_BB; + rq_pg_remainder = mlx5_wq_cyc_get_byte_size(&wq->rq) % PAGE_SIZE; + sq_strides_offset = rq_pg_remainder / MLX5_SEND_WQE_BB; mlx5_fill_fbc_offset(ilog2(MLX5_SEND_WQE_BB), MLX5_GET(qpc, qpc, log_sq_size),