On Fri, Mar 27, 2020 at 09:37:33AM -0300, Jason Gunthorpe wrote: > On Sun, Mar 22, 2020 at 11:30:30AM +0200, Leon Romanovsky wrote: > > From: Mark Zhang <markz@xxxxxxxxxxxx> > > > > In the request handler of the response side, Set flow label of the > > recv_wc if it is not net. It will be used for all messages sent > > by the responder. > > > > Signed-off-by: Mark Zhang <markz@xxxxxxxxxxxx> > > Reviewed-by: Maor Gottlieb <maorg@xxxxxxxxxxxx> > > Signed-off-by: Leon Romanovsky <leonro@xxxxxxxxxxxx> > > drivers/infiniband/core/cm.c | 7 +++++++ > > 1 file changed, 7 insertions(+) > > > > diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c > > index bbbfa77dbce7..4ab2f71da522 100644 > > +++ b/drivers/infiniband/core/cm.c > > @@ -2039,6 +2039,7 @@ static int cm_req_handler(struct cm_work *work) > > struct cm_req_msg *req_msg; > > const struct ib_global_route *grh; > > const struct ib_gid_attr *gid_attr; > > + struct ib_grh *ibgrh; > > int ret; > > > > req_msg = (struct cm_req_msg *)work->mad_recv_wc->recv_buf.mad; > > @@ -2048,6 +2049,12 @@ static int cm_req_handler(struct cm_work *work) > > if (IS_ERR(cm_id_priv)) > > return PTR_ERR(cm_id_priv); > > > > + ibgrh = work->mad_recv_wc->recv_buf.grh; > > + if (!(be32_to_cpu(ibgrh->version_tclass_flow) & IB_GRH_FLOWLABEL_MASK)) > > + ibgrh->version_tclass_flow |= > > + cpu_to_be32(IBA_GET(CM_REQ_PRIMARY_FLOW_LABEL, > > + req_msg)); > > This doesn't seem right. I will check, this part looks strange while reading IBTA sections "13.5.4.3 CONSTRUCTING A RESPONSE WITHOUT A GRH" and "13.5.4.4 CONSTRUCTING A RESPONSE WITH A GRH" Thanks