On Wed, Jan 05, 2022 at 04:27:38PM +0800, Zhu Yanjun wrote: > On Wed, Jan 5, 2022 at 3:52 PM Leon Romanovsky <leon@xxxxxxxxxx> wrote: > > > > On Wed, Jan 05, 2022 at 05:12:36PM -0500, yanjun.zhu@xxxxxxxxx wrote: > > > From: Zhu Yanjun <yanjun.zhu@xxxxxxxxx> > > > > > > Use the standard method to produce udp source port. > > > > > > Signed-off-by: Zhu Yanjun <yanjun.zhu@xxxxxxxxx> > > > --- > > > drivers/infiniband/sw/rxe/rxe_verbs.c | 6 ++++++ > > > 1 file changed, 6 insertions(+) > > > > > > diff --git a/drivers/infiniband/sw/rxe/rxe_verbs.c b/drivers/infiniband/sw/rxe/rxe_verbs.c > > > index 0aa0d7e52773..42fa81b455de 100644 > > > --- a/drivers/infiniband/sw/rxe/rxe_verbs.c > > > +++ b/drivers/infiniband/sw/rxe/rxe_verbs.c > > > @@ -469,6 +469,12 @@ static int rxe_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr, > > > if (err) > > > goto err1; > > > > > > + if ((mask & IB_QP_AV) && (attr->ah_attr.ah_flags & IB_AH_GRH)) > > > > You are leaving src_port default and wired to same port as other QPs > > without any randomization. > > Hi, > > I do not get you. Why do you think I am leaving src_pport default? Because in original code, you randomized src_port without any relation to mask flags. qp->src_port = RXE_ROCE_V2_SPORT + (hash_32_generic(qp_num(qp), 14) & 0x3fff); After patch #5, if user doesn't pass "proper" mask, you will leave qp->src_port to be equal to RXE_ROCE_V2_SPORT, which is different from the current behaviour. Thanks > Thanks. > > Zhu Yanjun > > > > > Thanks > > > > > + qp->src_port = rdma_get_udp_sport(attr->ah_attr.grh.flow_label, > > > + qp->ibqp.qp_num, > > > + qp->attr.dest_qp_num); > > > + > > > + > > > return 0; > > > > > > err1: > > > -- > > > 2.27.0 > > >