On Tue, Apr 06, 2021 at 12:37:03PM +0200, Håkon Bugge wrote: > In cm_req_handler(), unify the check for RoCE and re-factor to avoid > one test. > > Suggested-by: Jason Gunthorpe <jgg@xxxxxxxxxx> > Fixes: 8f9748602491 ("IB/cm: Reduce dependency on gid attribute ndev check") > Fixes: 194f64a3cad3 ("RDMA/core: Fix corrupted SL on passive side") > Signed-off-by: Håkon Bugge <haakon.bugge@xxxxxxxxxx> > --- > drivers/infiniband/core/cm.c | 8 ++------ > 1 file changed, 2 insertions(+), 6 deletions(-) > > diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c > index 32c836b..074faff 100644 > --- a/drivers/infiniband/core/cm.c > +++ b/drivers/infiniband/core/cm.c > @@ -2138,21 +2138,17 @@ static int cm_req_handler(struct cm_work *work) > goto destroy; > } > > - if (cm_id_priv->av.ah_attr.type != RDMA_AH_ATTR_TYPE_ROCE) > - cm_process_routed_req(req_msg, work->mad_recv_wc->wc); > - > memset(&work->path[0], 0, sizeof(work->path[0])); > if (cm_req_has_alt_path(req_msg)) > memset(&work->path[1], 0, sizeof(work->path[1])); > grh = rdma_ah_read_grh(&cm_id_priv->av.ah_attr); > gid_attr = grh->sgid_attr; > > - if (gid_attr && > - rdma_protocol_roce(work->port->cm_dev->ib_device, > - work->port->port_num)) { > + if (gid_attr && cm_id_priv->av.ah_attr.type == RDMA_AH_ATTR_TYPE_ROCE) { I think your other note was right, the gid_attr cannot be NULL when in ROCE mode, so we can delete the 'gid_attr &&' term too Jason