From patchwork Tue Mar 20 21:18:40 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jason Gunthorpe X-Patchwork-Id: 10297957 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 25C0160349 for ; Tue, 20 Mar 2018 21:19:18 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1691B2969D for ; Tue, 20 Mar 2018 21:19:18 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 0B2A9296A1; Tue, 20 Mar 2018 21:19:18 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 80FE2296A2 for ; Tue, 20 Mar 2018 21:19:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751411AbeCTVTP (ORCPT ); Tue, 20 Mar 2018 17:19:15 -0400 Received: from mail-wr0-f195.google.com ([209.85.128.195]:43455 "EHLO mail-wr0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751334AbeCTVTJ (ORCPT ); Tue, 20 Mar 2018 17:19:09 -0400 Received: by mail-wr0-f195.google.com with SMTP id o1so3158995wro.10 for ; Tue, 20 Mar 2018 14:19:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ziepe.ca; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=qNjxno2GhprNr194JyxNuCd4RoDQ7kUG9ESX4HOTyns=; b=nCueQxh5w2qsgGNTfwQ4+WUqhNHKBojKqwxaxu0H8929cKFWeqEjHYSB8dFZqAEQHY oNIoVjO6xlh1Ve6n0t+MzAuUFD9BTlbDXh2UsF1ax0qf1F+Y1cM1qt/ZqNhci3ycjjV5 oqN9ZnqA4suj4v5sGI+wzfNisZYzDkD2hIuSQlmPIhyaPu2e6Yn7CDen8oG1z9Jfs3qs 5uoP6SvZI0oKoktv84pFRMivEgIMIDym7TB3plSsl1Pz3p6NUmdwBeXXgFQHHBn3H6GS qNKWNSX5LRTKKmWAwRSvolpGUI2172eUYiYZE5QJc24zeBzK0xf98SrB5tIRr1y2YvRo leSA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=qNjxno2GhprNr194JyxNuCd4RoDQ7kUG9ESX4HOTyns=; b=iBzChiKNQIUufPovhCWWJZiIbJzT+HGIp9QURpaa5lY1kcC4NCS5NJfX8xRPdCH4YD 3s+llTxERt/DZPpZ3uO5hFJxPMtuvBzooq/pLYfDmvATve75LNm1QTQd/Kos/hEZAQN3 jM56qA44KGMXg86xpp5iOp8ED8Hd8ek7WHgyBPMJHEZ2sFXbFpF/wcxswUOI6f82UzTE cZz9AACyQwFAbbGp4sEUB9fATi/GcTBOEfp56pKFw9aR7O56zTaYb2tO8Uo8tjF9MZuu UGtKJ57SdXy0u8glSvlwd0ng9SjMGmD13ao5BZ2qYXcQ/St+yf/ivZf7sufCj4cfGJEx l5IQ== X-Gm-Message-State: AElRT7EKCmEFwkMBers5xo9CJqJcxm+KZvWRW0Y9VoTeyJeoDOP0F193 z8xS8g265/+EkvtSiDG/6EGGpdnD6yc= X-Google-Smtp-Source: AG47ELt5vbX0mVgTyhMAHZhbnWmdpdpVNQVTr1lzRmrIOXIWFUMU7b5XPTn3sz7EX4/w97Um/lrS4A== X-Received: by 10.223.134.4 with SMTP id 4mr7186505wrv.230.1521580747664; Tue, 20 Mar 2018 14:19:07 -0700 (PDT) Received: from ziepe.ca (S010614cc2056d97f.ed.shawcable.net. [174.3.196.123]) by smtp.gmail.com with ESMTPSA id q9sm2458782wrf.11.2018.03.20.14.18.59 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 20 Mar 2018 14:19:03 -0700 (PDT) Received: from jgg by mlx.ziepe.ca with local (Exim 4.86_2) (envelope-from ) id 1eyOen-0002fL-Dr; Tue, 20 Mar 2018 15:18:57 -0600 From: Jason Gunthorpe To: linux-rdma@vger.kernel.org Cc: Jason Gunthorpe , Tatyana Nikolova , Yishai Hadas , Matan Barak Subject: [PATCH rdma-core 10/20] nes: Move nes to exclusively use the kernel uapi headers Date: Tue, 20 Mar 2018 15:18:40 -0600 Message-Id: <20180320211850.10090-11-jgg@ziepe.ca> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180320211850.10090-1-jgg@ziepe.ca> References: <20180320211850.10090-1-jgg@ziepe.ca> Sender: linux-rdma-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-rdma@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Jason Gunthorpe Using the driver support macros we can now directly create the required driver structs automatically. Signed-off-by: Jason Gunthorpe --- kernel-headers/CMakeLists.txt | 1 + providers/nes/nes-abi.h | 73 +++++++------------------------------------ providers/nes/nes_umain.c | 2 +- providers/nes/nes_uverbs.c | 4 +-- 4 files changed, 16 insertions(+), 64 deletions(-) diff --git a/kernel-headers/CMakeLists.txt b/kernel-headers/CMakeLists.txt index 768cc32167cf29..b884e68b1f20a0 100644 --- a/kernel-headers/CMakeLists.txt +++ b/kernel-headers/CMakeLists.txt @@ -58,6 +58,7 @@ rdma_kernel_provider_abi( rdma/ib_user_verbs.h rdma/mlx4-abi.h rdma/mlx5-abi.h + rdma/nes-abi.h rdma/qedr-abi.h rdma/rdma_user_rxe.h ) diff --git a/providers/nes/nes-abi.h b/providers/nes/nes-abi.h index 54e8708cbf6471..0a531230b06273 100644 --- a/providers/nes/nes-abi.h +++ b/providers/nes/nes-abi.h @@ -36,66 +36,17 @@ #include #include - -struct nes_get_context { - struct ibv_get_context cmd; - __u32 reserved32; - __u8 userspace_ver; - __u8 reserved8[3]; -}; - - -struct nes_ualloc_ucontext_resp { - struct ib_uverbs_get_context_resp ibv_resp; - __u32 max_pds; /* maximum pds allowed for this user process */ - __u32 max_qps; /* maximum qps allowed for this user process */ - __u32 wq_size; /* defines the size of the WQs (sq+rq) allocated to the mmaped area */ - __u8 virtwq; - __u8 kernel_ver; - __u8 reserved[2]; -}; - -struct nes_ualloc_pd_resp { - struct ib_uverbs_alloc_pd_resp ibv_resp; - __u32 pd_id; - __u32 db_index; -}; - -struct nes_ucreate_cq { - struct ibv_create_cq ibv_cmd; - __u64 user_cq_buffer; - __u32 mcrqf; - __u8 reserved[4]; -}; - -struct nes_ucreate_cq_resp { - struct ib_uverbs_create_cq_resp ibv_resp; - __u32 cq_id; - __u32 cq_size; - __u32 mmap_db_index; - __u32 reserved; -}; - -struct nes_ureg_mr { - struct ibv_reg_mr ibv_cmd; - __u32 reg_type; /* indicates if id is memory, QP or CQ */ - __u32 reserved; -}; - -struct nes_ucreate_qp { - struct ibv_create_qp ibv_cmd; - __u64 user_sq_buffer; - __u64 user_qp_buffer; -}; - -struct nes_ucreate_qp_resp { - struct ib_uverbs_create_qp_resp ibv_resp; - __u32 qp_id; - __u32 actual_sq_size; - __u32 actual_rq_size; - __u32 mmap_sq_db_index; - __u32 mmap_rq_db_index; - __u32 nes_drv_opt; -}; +#include + +DECLARE_DRV_CMD(nes_ualloc_pd, IB_USER_VERBS_CMD_ALLOC_PD, + empty, nes_alloc_pd_resp); +DECLARE_DRV_CMD(nes_ucreate_cq, IB_USER_VERBS_CMD_CREATE_CQ, + nes_create_cq_req, nes_create_cq_resp); +DECLARE_DRV_CMD(nes_ucreate_qp, IB_USER_VERBS_CMD_CREATE_QP, + nes_create_qp_req, nes_create_qp_resp); +DECLARE_DRV_CMD(nes_get_context, IB_USER_VERBS_CMD_GET_CONTEXT, + nes_alloc_ucontext_req, nes_alloc_ucontext_resp); +DECLARE_DRV_CMD(nes_ureg_mr, IB_USER_VERBS_CMD_REG_MR, + nes_mem_reg_req, empty); #endif /* nes_ABI_H */ diff --git a/providers/nes/nes_umain.c b/providers/nes/nes_umain.c index 1a7913271af8ba..dce46e6b867a16 100644 --- a/providers/nes/nes_umain.c +++ b/providers/nes/nes_umain.c @@ -103,7 +103,7 @@ static struct verbs_context *nes_ualloc_context(struct ibv_device *ibdev, struct ibv_pd *ibv_pd; struct nes_uvcontext *nesvctx; struct nes_get_context cmd; - struct nes_ualloc_ucontext_resp resp; + struct nes_get_context_resp resp; char value[16]; uint32_t nes_drv_opt = 0; diff --git a/providers/nes/nes_uverbs.c b/providers/nes/nes_uverbs.c index be3b057c5bf7b4..5f13c1b11ada06 100644 --- a/providers/nes/nes_uverbs.c +++ b/providers/nes/nes_uverbs.c @@ -127,7 +127,7 @@ struct ibv_pd *nes_ualloc_pd(struct ibv_context *context) return NULL; } nesupd->pd_id = resp.pd_id; - nesupd->db_index = resp.db_index; + nesupd->db_index = resp.mmap_db_index; nesupd->udoorbell = mmap(NULL, page_size, PROT_WRITE | PROT_READ, MAP_SHARED, context->cmd_fd, nesupd->db_index * page_size); @@ -967,7 +967,7 @@ static int nes_vmapped_qp(struct nes_uqp *nesuqp, struct ibv_pd *pd, struct ibv_ } // So now the memory has been registered.. memset (&cmd, 0, sizeof(cmd) ); - cmd.user_sq_buffer = (__u64) ((uintptr_t) nesuqp->sq_vbase); + cmd.user_wqe_buffers = (__u64) ((uintptr_t) nesuqp->sq_vbase); cmd.user_qp_buffer = (__u64) ((uintptr_t) nesuqp); ret = ibv_cmd_create_qp(pd, &nesuqp->ibv_qp, attr, &cmd.ibv_cmd, sizeof cmd, &resp->ibv_resp, sizeof (struct nes_ucreate_qp_resp) );