From: Michael Guralnik <michael...@mellanox.com>

Return ODP capabilities for DC to user in alloc_context.

Signed-off-by: Michael Guralnik <michael...@mellanox.com>
Reviewed-by: Moni Shoua <mo...@mellanox.com>
Signed-off-by: Leon Romanovsky <leo...@mellanox.com>
---
 drivers/infiniband/hw/mlx5/main.c | 6 ++++++
 include/uapi/rdma/mlx5-abi.h      | 2 ++
 2 files changed, 8 insertions(+)

diff --git a/drivers/infiniband/hw/mlx5/main.c 
b/drivers/infiniband/hw/mlx5/main.c
index 4a3d700cd783..a53e0dc7c17f 100644
--- a/drivers/infiniband/hw/mlx5/main.c
+++ b/drivers/infiniband/hw/mlx5/main.c
@@ -1954,6 +1954,12 @@ static int mlx5_ib_alloc_ucontext(struct ib_ucontext 
*uctx,
                resp.response_length += sizeof(resp.dump_fill_mkey);
        }
 
+       if (field_avail(typeof(resp), dc_odp_caps, udata->outlen)) {
+               resp.dc_odp_caps = dev->dc_odp_caps;
+               resp.comp_mask |= MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_DC_ODP_CAPS;
+               resp.response_length += sizeof(resp.dc_odp_caps);
+       }
+
        err = ib_copy_to_udata(udata, &resp, resp.response_length);
        if (err)
                goto out_mdev;
diff --git a/include/uapi/rdma/mlx5-abi.h b/include/uapi/rdma/mlx5-abi.h
index 624f5b53eb1f..12abc585f2ac 100644
--- a/include/uapi/rdma/mlx5-abi.h
+++ b/include/uapi/rdma/mlx5-abi.h
@@ -98,6 +98,7 @@ struct mlx5_ib_alloc_ucontext_req_v2 {
 enum mlx5_ib_alloc_ucontext_resp_mask {
        MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_CORE_CLOCK_OFFSET = 1UL << 0,
        MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_DUMP_FILL_MKEY    = 1UL << 1,
+       MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_DC_ODP_CAPS       = 1UL << 2,
 };
 
 enum mlx5_user_cmds_supp_uhw {
@@ -147,6 +148,7 @@ struct mlx5_ib_alloc_ucontext_resp {
        __u32   num_uars_per_page;
        __u32   num_dyn_bfregs;
        __u32   dump_fill_mkey;
+       __u32   dc_odp_caps;
 };
 
 struct mlx5_ib_alloc_pd_resp {
-- 
2.20.1

Reply via email to