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