RDMA/bnxt_re: Update ABI to pass wqe-mode to user space
authorDevesh Sharma <devesh.sharma@broadcom.com>
Wed, 16 Jun 2021 20:28:17 +0000 (01:58 +0530)
committerJason Gunthorpe <jgg@nvidia.com>
Mon, 21 Jun 2021 23:58:52 +0000 (20:58 -0300)
Changing ucontext ABI response structure to pass wqe_mode to user library.
A flag in comp_mask has been set to indicate presence of wqe_mode.

Moved wqe-mode ABI to uapi/rdma/bnxt_re-abi.h

Link: https://lore.kernel.org/r/20210616202817.1185276-1-devesh.sharma@broadcom.com
Signed-off-by: Devesh Sharma <devesh.sharma@broadcom.com>
Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/infiniband/hw/bnxt_re/ib_verbs.c
drivers/infiniband/hw/bnxt_re/qplib_fp.h
drivers/infiniband/hw/bnxt_re/qplib_res.h
include/uapi/rdma/bnxt_re-abi.h

index a113d8d9e9edc7aee2ce8d33d2526dd67f559d07..5955713234cb9e2dfa769b838f189f5713a12684 100644 (file)
@@ -3882,6 +3882,9 @@ int bnxt_re_alloc_ucontext(struct ib_ucontext *ctx, struct ib_udata *udata)
        resp.max_cqd = dev_attr->max_cq_wqes;
        resp.rsvd    = 0;
 
+       resp.comp_mask |= BNXT_RE_UCNTX_CMASK_HAVE_MODE;
+       resp.mode = rdev->chip_ctx->modes.wqe_mode;
+
        rc = ib_copy_to_udata(udata, &resp, min(udata->outlen, sizeof(resp)));
        if (rc) {
                ibdev_err(ibdev, "Failed to copy user context");
index f50784405e27ec4876344cfae0f00837bd441f5c..0375019525431006769506523f6fa79b6b2d7337 100644 (file)
@@ -39,6 +39,8 @@
 #ifndef __BNXT_QPLIB_FP_H__
 #define __BNXT_QPLIB_FP_H__
 
+#include <rdma/bnxt_re-abi.h>
+
 /* Few helper structures temporarily defined here
  * should get rid of these when roce_hsi.h is updated
  * in original code base
index d2aea52bd1d879c6ab3d8ea5a32c1244f99b0899..c291f495ae91d6955b5a3e36251614e71b7e3ec5 100644 (file)
@@ -45,12 +45,6 @@ extern const struct bnxt_qplib_gid bnxt_qplib_gid_zero;
 #define CHIP_NUM_57504         0x1751
 #define CHIP_NUM_57502         0x1752
 
-enum bnxt_qplib_wqe_mode {
-       BNXT_QPLIB_WQE_MODE_STATIC      = 0x00,
-       BNXT_QPLIB_WQE_MODE_VARIABLE    = 0x01,
-       BNXT_QPLIB_WQE_MODE_INVALID     = 0x02
-};
-
 struct bnxt_qplib_drv_modes {
        u8      wqe_mode;
        /* Other modes to follow here */
index dc52e3cf574ca7d92b7898e7a44e6cb6f816cd5c..b1de99bf56ce6ba031fe7b3048f346dee763116f 100644 (file)
 #define BNXT_RE_CHIP_ID0_CHIP_MET_SFT          0x18
 
 enum {
-       BNXT_RE_UCNTX_CMASK_HAVE_CCTX = 0x1ULL
+       BNXT_RE_UCNTX_CMASK_HAVE_CCTX = 0x1ULL,
+       BNXT_RE_UCNTX_CMASK_HAVE_MODE = 0x02ULL,
+};
+
+enum bnxt_re_wqe_mode {
+       BNXT_QPLIB_WQE_MODE_STATIC      = 0x00,
+       BNXT_QPLIB_WQE_MODE_VARIABLE    = 0x01,
+       BNXT_QPLIB_WQE_MODE_INVALID     = 0x02,
 };
 
 struct bnxt_re_uctx_resp {
@@ -62,6 +69,8 @@ struct bnxt_re_uctx_resp {
        __aligned_u64 comp_mask;
        __u32 chip_id0;
        __u32 chip_id1;
+       __u32 mode;
+       __u32 rsvd1; /* padding */
 };
 
 /*