Re: [PATCH v2 3/4] IB/mlx5, ib_post_send(), IB_WR_REG_SIG_MR: Do not modify the 'wr' argument

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Jul 06, 2018 at 04:08:10PM -0700, Bart Van Assche wrote:
> Since the next patch will constify the wr pointer, do not modify
> the data that pointer points at.
>
> Signed-off-by: Bart Van Assche <bart.vanassche@xxxxxxx>
> Cc: Saeed Mahameed <saeedm@xxxxxxxxxxxx>
> ---
>  drivers/infiniband/hw/mlx5/qp.c | 26 ++++++++++++++++----------
>  1 file changed, 16 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/infiniband/hw/mlx5/qp.c b/drivers/infiniband/hw/mlx5/qp.c
> index ecfe96c4b1db..b55950bb4291 100644
> --- a/drivers/infiniband/hw/mlx5/qp.c
> +++ b/drivers/infiniband/hw/mlx5/qp.c
> @@ -4316,10 +4316,10 @@ static void dump_wqe(struct mlx5_ib_qp *qp, int idx, int size_16)
>  	}
>  }
>
> -static int begin_wqe(struct mlx5_ib_qp *qp, void **seg,
> +static int __begin_wqe(struct mlx5_ib_qp *qp, void **seg,
>  		     struct mlx5_wqe_ctrl_seg **ctrl,
>  		     const struct ib_send_wr *wr, unsigned *idx,
> -		     int *size, int nreq)
> +		     int *size, int nreq, bool send_signaled, bool solicited)
>  {
>  	if (unlikely(mlx5_wq_overflow(&qp->sq, nreq, qp->ibqp.send_cq)))
>  		return -ENOMEM;
> @@ -4330,10 +4330,8 @@ static int begin_wqe(struct mlx5_ib_qp *qp, void **seg,
>  	*(uint32_t *)(*seg + 8) = 0;
>  	(*ctrl)->imm = send_ieth(wr);
>  	(*ctrl)->fm_ce_se = qp->sq_signal_bits |
> -		(wr->send_flags & IB_SEND_SIGNALED ?
> -		 MLX5_WQE_CTRL_CQ_UPDATE : 0) |
> -		(wr->send_flags & IB_SEND_SOLICITED ?
> -		 MLX5_WQE_CTRL_SOLICITED : 0);
> +		(send_signaled ? MLX5_WQE_CTRL_CQ_UPDATE : 0) |
> +		(solicited ? MLX5_WQE_CTRL_SOLICITED : 0);
>
>  	*seg += sizeof(**ctrl);
>  	*size = sizeof(**ctrl) / 16;
> @@ -4341,6 +4339,16 @@ static int begin_wqe(struct mlx5_ib_qp *qp, void **seg,
>  	return 0;
>  }
>
> +static int begin_wqe(struct mlx5_ib_qp *qp, void **seg,
> +		     struct mlx5_wqe_ctrl_seg **ctrl,
> +		     const struct ib_send_wr *wr, unsigned *idx,
> +		     int *size, int nreq)
> +{
> +	return __begin_wqe(qp, seg, ctrl, wr, idx, size, nreq,
> +			   wr->send_flags & IB_SEND_SIGNALED,
> +			   wr->send_flags & IB_SEND_SOLICITED);
> +}

It adds an extra call to data-path, most probably the effect of it will
be neglected, but it needs Ack from Max.


> +
>  static void finish_wqe(struct mlx5_ib_qp *qp,
>  		       struct mlx5_wqe_ctrl_seg *ctrl,
>  		       u8 size, unsigned idx, u64 wr_id,
> @@ -4499,10 +4507,8 @@ static int _mlx5_ib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
>  				 * SET_PSV WQEs are not signaled and solicited
>  				 * on error
>  				 */
> -				wr->send_flags &= ~IB_SEND_SIGNALED;
> -				wr->send_flags |= IB_SEND_SOLICITED;
> -				err = begin_wqe(qp, &seg, &ctrl, wr,
> -						&idx, &size, nreq);
> +				err = __begin_wqe(qp, &seg, &ctrl, wr, &idx,
> +						  &size, nreq, 0, 1);

1. 0 -> false, 1 -> true
2. There is another begin_wqe() in the case of IB_WR_REG_SIG_MR which
needs proper wr->send_flags.

>  				if (err) {
>  					mlx5_ib_warn(dev, "\n");
>  					err = -ENOMEM;
> --
> 2.18.0
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux