On Tue, Aug 25, 2020 at 11:13 AM Gal Pressman <galpress@xxxxxxxxxx> wrote: > > On 24/08/2020 13:32, Leon Romanovsky wrote: > > diff --git a/drivers/infiniband/hw/efa/efa.h b/drivers/infiniband/hw/efa/efa.h > > index 1889dd172a25..8547f9d543df 100644 > > --- a/drivers/infiniband/hw/efa/efa.h > > +++ b/drivers/infiniband/hw/efa/efa.h > > @@ -134,7 +134,7 @@ int efa_query_gid(struct ib_device *ibdev, u8 port, int index, > > int efa_query_pkey(struct ib_device *ibdev, u8 port, u16 index, > > u16 *pkey); > > int efa_alloc_pd(struct ib_pd *ibpd, struct ib_udata *udata); > > -void efa_dealloc_pd(struct ib_pd *ibpd, struct ib_udata *udata); > > +int efa_dealloc_pd(struct ib_pd *ibpd, struct ib_udata *udata); > > int efa_destroy_qp(struct ib_qp *ibqp, struct ib_udata *udata); > > struct ib_qp *efa_create_qp(struct ib_pd *ibpd, > > struct ib_qp_init_attr *init_attr, > > diff --git a/drivers/infiniband/hw/efa/efa_verbs.c b/drivers/infiniband/hw/efa/efa_verbs.c > > index 3f7f19b9f463..660a69943e02 100644 > > --- a/drivers/infiniband/hw/efa/efa_verbs.c > > +++ b/drivers/infiniband/hw/efa/efa_verbs.c > > @@ -383,13 +383,14 @@ int efa_alloc_pd(struct ib_pd *ibpd, struct ib_udata *udata) > > return err; > > } > > > > -void efa_dealloc_pd(struct ib_pd *ibpd, struct ib_udata *udata) > > +int efa_dealloc_pd(struct ib_pd *ibpd, struct ib_udata *udata) > > { > > struct efa_dev *dev = to_edev(ibpd->device); > > struct efa_pd *pd = to_epd(ibpd); > > > > ibdev_dbg(&dev->ibdev, "Dealloc pd[%d]\n", pd->pdn); > > efa_pd_dealloc(dev, pd->pdn); > > + return 0; > > } > > Nice change, thanks Leon. > At least for EFA, I prefer to return the return value of the destroy command > instead of silently ignoring it (same for the other patches). The problem with returning error is that ib_core will retrigger deallocation again,while it was supposed to succeed from the first try. See our discussion over bnxt_re patch. https://lore.kernel.org/linux-rdma/1598292876-26529-2-git-send-email-selvin.xavier@xxxxxxxxxxxx Thanks