On Mon, Jul 09, 2018 at 08:49:38PM +0000, Bart Van Assche wrote: > On Sun, 2018-07-08 at 10:30 +0300, Leon Romanovsky wrote: > > On Fri, Jul 06, 2018 at 04:08:10PM -0700, Bart Van Assche wrote: > > > +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. > > Hi Leon, > > Since this patch changes begin_wqe() into a one-line function I expect that the > compiler will inline __begin_wqe() into begin_wqe(). Agree > > > > 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. > > I will use true and false instead of 1 and 0. But please note that the prototype > of begin_wqe() has not been changed so the begin_wqe() calls that do not modify > the work request send flags do not have to be modified. Right, but you removed updates of "wr->send_flags" in the lines above, and it will change behaviour of next begin_wqe() in that case. > > Bart. > > > >
Attachment:
signature.asc
Description: PGP signature