> 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 > >