RE: [PATCH v2 rdma-next 2/2] RDMA/qedr: Add EDPM max size to alloc ucontext response

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> From: linux-rdma-owner@xxxxxxxxxxxxxxx <linux-rdma-
> owner@xxxxxxxxxxxxxxx> On Behalf Of Leon Romanovsky
> 
> On Mon, Jul 06, 2020 at 10:32:14PM +0300, Michal Kalderon wrote:
> > User space should receive the maximum edpm size from kernel driver,
> > similar to other edpm/ldpm related limits.
> > Add an additional parameter to the alloc_ucontext_resp structure for
> > the edpm maximum size.
> >
> > In addition, pass an indication from user-space to kernel (and not
> > just kernel to user) that the DPM sizes are supported.
> >
> > This is for supporting backward-forward compatibility between driver
> > and lib for everything related to DPM transaction and limit sizes.
> >
> > This should have been part of commit mentioned in Fixes tag.
> > Fixes: 93a3d05f9d68 ("RDMA/qedr: Add kernel capability flags for dpm
> > enabled mode")
> > Signed-off-by: Ariel Elior <ariel.elior@xxxxxxxxxxx>
> > Signed-off-by: Michal Kalderon <michal.kalderon@xxxxxxxxxxx>
> > ---
> >  drivers/infiniband/hw/qedr/verbs.c | 9 ++++++---
> >  include/uapi/rdma/qedr-abi.h       | 6 +++++-
> >  2 files changed, 11 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/infiniband/hw/qedr/verbs.c
> > b/drivers/infiniband/hw/qedr/verbs.c
> > index fbb0c66c7f2c..f03178866b50 100644
> > --- a/drivers/infiniband/hw/qedr/verbs.c
> > +++ b/drivers/infiniband/hw/qedr/verbs.c
> > @@ -320,9 +320,12 @@ int qedr_alloc_ucontext(struct ib_ucontext *uctx,
> struct ib_udata *udata)
> >  				  QEDR_DPM_TYPE_ROCE_LEGACY |
> >  				  QEDR_DPM_TYPE_ROCE_EDPM_MODE;
> >
> > -	uresp.dpm_flags |= QEDR_DPM_SIZES_SET;
> > -	uresp.ldpm_limit_size = QEDR_LDPM_MAX_SIZE;
> > -	uresp.edpm_trans_size = QEDR_EDPM_TRANS_SIZE;
> > +	if (!!(ureq.context_flags & QEDR_SUPPORT_DPM_SIZES)) {
> 
> "!!" is not needed here.
> 
> Thanks
You're right, I'll fix. Thanks.

> 
> > +		uresp.dpm_flags |= QEDR_DPM_SIZES_SET;
> > +		uresp.ldpm_limit_size = QEDR_LDPM_MAX_SIZE;
> > +		uresp.edpm_trans_size = QEDR_EDPM_TRANS_SIZE;
> > +		uresp.edpm_limit_size = QEDR_EDPM_MAX_SIZE;
> > +	}
> >
> >  	uresp.wids_enabled = 1;
> >  	uresp.wid_count = oparams.wid_count; diff --git
> > a/include/uapi/rdma/qedr-abi.h b/include/uapi/rdma/qedr-abi.h index
> > b261c9fca07b..bf7333b2b5d7 100644
> > --- a/include/uapi/rdma/qedr-abi.h
> > +++ b/include/uapi/rdma/qedr-abi.h
> > @@ -40,7 +40,8 @@
> >  /* user kernel communication data structures. */  enum
> > qedr_alloc_ucontext_flags {
> >  	QEDR_ALLOC_UCTX_EDPM_MODE	= 1 << 0,
> > -	QEDR_ALLOC_UCTX_DB_REC		= 1 << 1
> > +	QEDR_ALLOC_UCTX_DB_REC		= 1 << 1,
> > +	QEDR_SUPPORT_DPM_SIZES		= 1 << 2,
> >  };
> >
> >  struct qedr_alloc_ucontext_req {
> > @@ -50,6 +51,7 @@ struct qedr_alloc_ucontext_req {
> >
> >  #define QEDR_LDPM_MAX_SIZE	(8192)
> >  #define QEDR_EDPM_TRANS_SIZE	(64)
> > +#define QEDR_EDPM_MAX_SIZE
> 	(ROCE_REQ_MAX_INLINE_DATA_SIZE)
> >
> >  enum qedr_rdma_dpm_type {
> >  	QEDR_DPM_TYPE_NONE		= 0,
> > @@ -77,6 +79,8 @@ struct qedr_alloc_ucontext_resp {
> >  	__u16 ldpm_limit_size;
> >  	__u8 edpm_trans_size;
> >  	__u8 reserved;
> > +	__u16 edpm_limit_size;
> > +	__u8 padding[6];
> >  };
> >
> >  struct qedr_alloc_pd_ureq {
> > --
> > 2.14.5
> >




[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux