On Mon, Dec 31, 2018 at 01:10:06AM -0500, Devesh Sharma wrote: > User space verbs provider library would need chip context. > Changing the ABI to add chip version details in structure. > Furthermore, changing the kernel driver ucontext allocation > code to initializ the abi structure with appropriate values. > > Signed-off-by: Devesh Sharma <devesh.sharma@xxxxxxxxxxxx> > drivers/infiniband/hw/bnxt_re/ib_verbs.c | 12 +++++++++--- > include/uapi/rdma/bnxt_re-abi.h | 9 ++++++--- > 2 files changed, 15 insertions(+), 6 deletions(-) > > diff --git a/drivers/infiniband/hw/bnxt_re/ib_verbs.c b/drivers/infiniband/hw/bnxt_re/ib_verbs.c > index 7a09ca7..3bec789 100644 > +++ b/drivers/infiniband/hw/bnxt_re/ib_verbs.c > @@ -3693,9 +3693,10 @@ struct ib_ucontext *bnxt_re_alloc_ucontext(struct ib_device *ibdev, > struct ib_udata *udata) > { > struct bnxt_re_dev *rdev = to_bnxt_re_dev(ibdev, ibdev); > + struct bnxt_qplib_dev_attr *dev_attr = &rdev->dev_attr; > struct bnxt_re_uctx_resp resp; > struct bnxt_re_ucontext *uctx; > - struct bnxt_qplib_dev_attr *dev_attr = &rdev->dev_attr; > + u32 chip_met_rev_num = 0; > int rc; > > dev_dbg(rdev_to_dev(rdev), "ABI version requested %d", > @@ -3720,8 +3721,13 @@ struct ib_ucontext *bnxt_re_alloc_ucontext(struct ib_device *ibdev, > } > spin_lock_init(&uctx->sh_lock); > > - resp.dev_id = rdev->en_dev->pdev->devfn; /*Temp, Use idr_alloc instead*/ > - resp.max_qp = rdev->qplib_ctx.qpc_count; > + chip_met_rev_num = rdev->chip_ctx->chip_num; > + chip_met_rev_num |= ((u32)rdev->chip_ctx->chip_rev & 0xFF) << > + BNXT_RE_CHIP_ID0_CHIP_REV_SFT; > + chip_met_rev_num |= ((u32)rdev->chip_ctx->chip_metal & 0xFF) << > + BNXT_RE_CHIP_ID0_CHIP_MET_SFT; > + resp.chip_id0 = chip_met_rev_num; > + resp.chip_id1 = 0; /* future extension of chip info */ > resp.pg_size = PAGE_SIZE; > resp.cqe_sz = sizeof(struct cq_base); > resp.max_cqd = dev_attr->max_cq_wqes; > diff --git a/include/uapi/rdma/bnxt_re-abi.h b/include/uapi/rdma/bnxt_re-abi.h > index a7a6111..c62b106 100644 > +++ b/include/uapi/rdma/bnxt_re-abi.h > @@ -42,11 +42,14 @@ > > #include <linux/types.h> > > -#define BNXT_RE_ABI_VERSION 1 > +#define BNXT_RE_ABI_VERSION 2 > > +#define BNXT_RE_CHIP_ID0_CHIP_NUM_SFT 0x00 > +#define BNXT_RE_CHIP_ID0_CHIP_REV_SFT 0x10 > +#define BNXT_RE_CHIP_ID0_CHIP_MET_SFT 0x18 > struct bnxt_re_uctx_resp { > - __u32 dev_id; > - __u32 max_qp; > + __u32 chip_id0; > + __u32 chip_id1; You changed something called max_qp into chip_id1 ? How is that backwards compatible??? Where is the matching rdma-core patch for this change? Jason