public inbox for netdev@vger.kernel.org 
 help / color / mirror / Atom feed
From: Leon Romanovsky <leon-DgEjT+Ai2ygdnm+yROfE0A@public•gmane.org>
To: Selvin Xavier <selvin.xavier-dY08KVG/lbpWk0Htik3J/w@public•gmane.org>
Cc: dledford-H+wXaHxf7aLQT0dZR+AlfA@public•gmane.org,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA@public•gmane.org,
	netdev-u79uwXL29TY76Z2rM5mHXA@public•gmane.org,
	michael.chan-dY08KVG/lbpWk0Htik3J/w@public•gmane.org,
	Eddie Wai <eddie.wai-dY08KVG/lbpWk0Htik3J/w@public•gmane.org>,
	Devesh Sharma
	<devesh.sharma-dY08KVG/lbpWk0Htik3J/w@public•gmane.org>,
	Somnath Kotur
	<somnath.kotur-dY08KVG/lbpWk0Htik3J/w@public•gmane.org>,
	Sriharsha Basavapatna
	<sriharsha.basavapatna-dY08KVG/lbpWk0Htik3J/w@public•gmane.org>
Subject: Re: [PATCH for bnxt_re V4 10/21] RDMA/bnxt_re: Support for CQ verbs
Date: Wed, 18 Jan 2017 10:19:15 +0200	[thread overview]
Message-ID: <20170118081915.GU32481@mtr-leonro.local> (raw)
In-Reply-To: <1482320530-5344-11-git-send-email-selvin.xavier-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>

[-- Attachment #1: Type: text/plain, Size: 3910 bytes --]

On Wed, Dec 21, 2016 at 03:41:59AM -0800, Selvin Xavier wrote:
> Implements support for create_cq, destroy_cq and req_notify_cq
> verbs.
>
> v3: Code cleanup based on errors reported by sparse on endianness check.
>     Removes unwanted macros.
>
> Signed-off-by: Eddie Wai <eddie.wai-dY08KVG/lbpWk0Htik3J/w@public•gmane.org>
> Signed-off-by: Devesh Sharma <devesh.sharma-dY08KVG/lbpWk0Htik3J/w@public•gmane.org>
> Signed-off-by: Somnath Kotur <somnath.kotur-dY08KVG/lbpWk0Htik3J/w@public•gmane.org>
> Signed-off-by: Sriharsha Basavapatna <sriharsha.basavapatna-dY08KVG/lbpWk0Htik3J/w@public•gmane.org>
> Signed-off-by: Selvin Xavier <selvin.xavier-dY08KVG/lbpWk0Htik3J/w@public•gmane.org>
> ---
>  drivers/infiniband/hw/bnxt_re/ib_verbs.c | 146 +++++++++++++++++++++++++
>  drivers/infiniband/hw/bnxt_re/ib_verbs.h |  19 ++++
>  drivers/infiniband/hw/bnxt_re/main.c     |   4 +
>  drivers/infiniband/hw/bnxt_re/qplib_fp.c | 181 +++++++++++++++++++++++++++++++
>  drivers/infiniband/hw/bnxt_re/qplib_fp.h |  50 +++++++++
>  include/uapi/rdma/bnxt_re-abi.h          |  12 ++
>  6 files changed, 412 insertions(+)
>
> diff --git a/drivers/infiniband/hw/bnxt_re/ib_verbs.c b/drivers/infiniband/hw/bnxt_re/ib_verbs.c
> index b09c2cb..e12e0c2 100644
> --- a/drivers/infiniband/hw/bnxt_re/ib_verbs.c
> +++ b/drivers/infiniband/hw/bnxt_re/ib_verbs.c
> @@ -492,6 +492,152 @@ struct ib_pd *bnxt_re_alloc_pd(struct ib_device *ibdev,
>  	return ERR_PTR(rc);
>  }
>
> +/* Completion Queues */
> +int bnxt_re_destroy_cq(struct ib_cq *ib_cq)
> +{
> +	struct bnxt_re_cq *cq = container_of(ib_cq, struct bnxt_re_cq, ib_cq);
> +	struct bnxt_re_dev *rdev = cq->rdev;
> +	int rc;
> +
> +	rc = bnxt_qplib_destroy_cq(&rdev->qplib_res, &cq->qplib_cq);
> +	if (rc) {
> +		dev_err(rdev_to_dev(rdev), "Failed to destroy HW CQ");
> +		return rc;
> +	}
> +	if (cq->umem && !IS_ERR(cq->umem))
> +		ib_umem_release(cq->umem);
> +
> +	if (cq) {
> +		kfree(cq->cql);
> +		kfree(cq);
> +	}
> +	atomic_dec(&rdev->cq_count);
> +	rdev->nq.budget--;
> +	return 0;
> +}
> +
> +struct ib_cq *bnxt_re_create_cq(struct ib_device *ibdev,
> +				const struct ib_cq_init_attr *attr,
> +				struct ib_ucontext *context,
> +				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_cq *cq = NULL;
> +	int rc, entries;
> +	int cqe = attr->cqe;
> +
> +	/* Validate CQ fields */
> +	if (cqe < 1 || cqe > dev_attr->max_cq_wqes) {
> +		dev_err(rdev_to_dev(rdev), "Failed to create CQ -max exceeded");
> +		return ERR_PTR(-EINVAL);
> +	}
> +	cq = kzalloc(sizeof(*cq), GFP_KERNEL);
> +	if (!cq)
> +		return ERR_PTR(-ENOMEM);
> +
> +	cq->rdev = rdev;
> +	cq->qplib_cq.cq_handle = (u64)(unsigned long)(&cq->qplib_cq);
> +
> +	entries = roundup_pow_of_two(cqe + 1);
> +	if (entries > dev_attr->max_cq_wqes + 1)
> +		entries = dev_attr->max_cq_wqes + 1;
> +
> +	if (context) {
> +		struct bnxt_re_cq_req req;
> +		struct bnxt_re_ucontext *uctx = container_of
> +						(context,
> +						 struct bnxt_re_ucontext,
> +						 ib_uctx);
> +		if (ib_copy_from_udata(&req, udata, sizeof(req))) {
> +			rc = -EFAULT;
> +			goto fail;
> +		}
> +
> +		cq->umem = ib_umem_get(context, req.cq_va,
> +				       entries * sizeof(struct cq_base),
> +				       IB_ACCESS_LOCAL_WRITE, 1);
> +		if (IS_ERR(cq->umem)) {
> +			rc = PTR_ERR(cq->umem);
> +			goto fail;
> +		}
> +		cq->qplib_cq.sghead = cq->umem->sg_head.sgl;
> +		cq->qplib_cq.nmap = cq->umem->nmap;
> +		cq->qplib_cq.dpi = uctx->dpi;
> +	} else {
> +		cq->max_cql = entries > MAX_CQL_PER_POLL ? MAX_CQL_PER_POLL :
> +					entries;

It is better to use already existing macros - min()
cq->max_cql = min(entries, MAX_CQL_PER_POLL);

I afraid that you can't avoid the respinning, you have more than month
till merge window.

Can you please remove useless wrappers and try to reuse kernel macros?

Thanks

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  parent reply	other threads:[~2017-01-18  8:19 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-12-21 11:41 [PATCH for bnxt_re V4 00/21] Broadcom RoCE Driver (bnxt_re) Selvin Xavier
2016-12-21 11:41 ` [PATCH for bnxt_re V4 01/21] RDMA/bnxt_re: Add bnxt_re RoCE driver files Selvin Xavier
2016-12-21 11:41 ` [PATCH for bnxt_re V4 02/21] RDMA/bnxt_re: Introducing autogenerated Host Software Interface(hsi) file Selvin Xavier
2016-12-21 11:41 ` [PATCH for bnxt_re V4 03/21] RDMA/bnxt_re: register with the NIC driver Selvin Xavier
2017-01-18 10:11   ` Leon Romanovsky
2017-02-06 20:26   ` Doug Ledford
2017-02-10 11:41     ` Selvin Xavier
2016-12-21 11:41 ` [PATCH for bnxt_re V4 06/21] RDMA/bnxt_re: Support for PD, ucontext and mmap verbs Selvin Xavier
2016-12-21 11:41 ` [PATCH for bnxt_re V4 07/21] RDMA/bnxt_re: Support for query and modify device verbs Selvin Xavier
2016-12-21 11:42 ` [PATCH for bnxt_re V4 12/21] RDMA/bnxt_re: Support memory registration verbs Selvin Xavier
2016-12-21 11:42 ` [PATCH for bnxt_re V4 13/21] RDMA/bnxt_re: Support QP verbs Selvin Xavier
2017-01-18  9:16   ` Leon Romanovsky
2016-12-21 11:42 ` [PATCH for bnxt_re V4 19/21] RDMA/bnxt_re: Set uverbs command mask Selvin Xavier
2016-12-21 11:42 ` [PATCH for bnxt_re V4 20/21] RDMA/bnxt_re: Add QP event handling Selvin Xavier
2017-01-24 12:20   ` Leon Romanovsky
     [not found]     ` <20170124122008.GH6005-U/DQcQFIOTAAJjI8aNfphQ@public.gmane.org>
2017-01-25  9:04       ` Selvin Xavier
     [not found] ` <1482320530-5344-1-git-send-email-selvin.xavier-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
2016-12-21 11:41   ` [PATCH for bnxt_re V4 04/21] RDMA/bnxt_re: Enabling RoCE control path Selvin Xavier
2016-12-21 11:41   ` [PATCH for bnxt_re V4 05/21] RDMA/bnxt_re: Adding Notification Queue support Selvin Xavier
2016-12-21 11:41   ` [PATCH for bnxt_re V4 08/21] RDMA/bnxt_re: Adding support for port related verbs Selvin Xavier
2016-12-21 11:41   ` [PATCH for bnxt_re V4 09/21] RDMA/bnxt_re: Support for GID " Selvin Xavier
2017-01-18  9:50     ` Leon Romanovsky
2016-12-21 11:41   ` [PATCH for bnxt_re V4 10/21] RDMA/bnxt_re: Support for CQ verbs Selvin Xavier
     [not found]     ` <1482320530-5344-11-git-send-email-selvin.xavier-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
2017-01-18  8:19       ` Leon Romanovsky [this message]
2016-12-21 11:42   ` [PATCH for bnxt_re V4 11/21] RDMA/bnxt_re: Support for AH verbs Selvin Xavier
2016-12-21 11:42   ` [PATCH for bnxt_re V4 14/21] RDMA/bnxt_re: Support post_send verb Selvin Xavier
2016-12-21 11:42   ` [PATCH for bnxt_re V4 15/21] RDMA/bnxt_re: Support post_recv Selvin Xavier
2017-01-24 11:59     ` Leon Romanovsky
2016-12-21 11:42   ` [PATCH for bnxt_re V4 16/21] RDMA/bnxt_re: Support poll_cq verb Selvin Xavier
2016-12-21 11:42   ` [PATCH for bnxt_re V4 17/21] RDMA/bnxt_re: Handling dispatching of events to IB stack Selvin Xavier
     [not found]     ` <1482320530-5344-18-git-send-email-selvin.xavier-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
2017-01-24 12:18       ` Leon Romanovsky
2017-01-25  9:03         ` Selvin Xavier
2016-12-21 11:42   ` [PATCH for bnxt_re V4 18/21] RDMA/bnxt_re: Support for DCB Selvin Xavier
2016-12-21 11:42   ` [PATCH for bnxt_re V4 21/21] RDMA/bnxt_re: Add bnxt_re driver build support Selvin Xavier
2017-02-07 15:27   ` [PATCH for bnxt_re V4 00/21] Broadcom RoCE Driver (bnxt_re) Doug Ledford
  -- strict thread matches above, loose matches on Subject: below --
2017-01-18  9:12 [PATCH for bnxt_re V4 10/21] RDMA/bnxt_re: Support for CQ verbs Selvin Xavier
2017-01-19  6:57 ` Doug Ledford

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170118081915.GU32481@mtr-leonro.local \
    --to=leon-dgejt+ai2ygdnm+yrofe0a@public$(echo .)gmane.org \
    --cc=devesh.sharma-dY08KVG/lbpWk0Htik3J/w@public$(echo .)gmane.org \
    --cc=dledford-H+wXaHxf7aLQT0dZR+AlfA@public$(echo .)gmane.org \
    --cc=eddie.wai-dY08KVG/lbpWk0Htik3J/w@public$(echo .)gmane.org \
    --cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public$(echo .)gmane.org \
    --cc=michael.chan-dY08KVG/lbpWk0Htik3J/w@public$(echo .)gmane.org \
    --cc=netdev-u79uwXL29TY76Z2rM5mHXA@public$(echo .)gmane.org \
    --cc=selvin.xavier-dY08KVG/lbpWk0Htik3J/w@public$(echo .)gmane.org \
    --cc=somnath.kotur-dY08KVG/lbpWk0Htik3J/w@public$(echo .)gmane.org \
    --cc=sriharsha.basavapatna-dY08KVG/lbpWk0Htik3J/w@public$(echo .)gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox