All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jason Gunthorpe <jgg@ziepe.ca>
To: "Saleem, Shiraz" <shiraz.saleem@intel.com>
Cc: "Kirsher, Jeffrey T" <jeffrey.t.kirsher@intel.com>,
	"davem@davemloft.net" <davem@davemloft.net>,
	"gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org>,
	"Ismail, Mustafa" <mustafa.ismail@intel.com>,
	"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	"linux-rdma@vger.kernel.org" <linux-rdma@vger.kernel.org>,
	"nhorman@redhat.com" <nhorman@redhat.com>,
	"sassmann@redhat.com" <sassmann@redhat.com>,
	"parav@mellanox.com" <parav@mellanox.com>
Subject: Re: [PATCH v3 05/20] RDMA/irdma: Add driver framework definitions
Date: Tue, 17 Dec 2019 17:00:33 -0400	[thread overview]
Message-ID: <20191217210033.GB17227@ziepe.ca> (raw)
In-Reply-To: <9DD61F30A802C4429A01CA4200E302A7B6B8FBCA@fmsmsx124.amr.corp.intel.com>

On Thu, Dec 12, 2019 at 01:40:27AM +0000, Saleem, Shiraz wrote:

> > > +/* client interface functions */
> > > +static const struct i40e_client_ops i40e_ops = {
> > > +	.open = i40iw_open,
> > > +	.close = i40iw_close,
> > > +	.l2_param_change = i40iw_l2param_change };
> > 
> > Wasn't the whole point of virtual bus to avoid stuff like this? Why isn't a client the
> > virtual bus object and this information extended into the driver ops?
> 
> These are the private interface calls between lan and rdma.
> These ops are implemented by RDMA driver but invoked by
> netdev driver.

AFAIK you are supposed to provide things like this as part of your
device driver ops, ie open is probe, close is unbind, etc.

> > > +/**
> > > + * irdma_event_handler - Called by LAN driver to notify events
> > > + * @ldev: Peer device structure
> > > + * @event: event from LAN driver
> > > + */
> > > +static void irdma_event_handler(struct iidc_peer_dev *ldev,
> > > +				struct iidc_event *event)
> > > +{
> > > +	struct irdma_l2params l2params = {};
> > > +	struct irdma_device *iwdev;
> > > +	int i;
> > > +
> > > +	iwdev = irdma_get_device(ldev->netdev);
> > > +	if (!iwdev)
> > > +		return;
> > > +
> > > +	if (test_bit(IIDC_EVENT_LINK_CHANGE, event->type)) {
> > 
> > Is this atomic? Why using test_bit?
> No its not. What do you suggest we use?

Just test the bit?

if (event->type & BIT(IIDC_EVENT_LINK_CHANGE)) ?

test_bit is the atomic version of those that matches atomic
set_bit/clear_bit

> > > +		ldev->ops->reg_for_notification(ldev, &events);
> > > +	dev_info(rfdev_to_dev(dev), "IRDMA VSI Open Successful");
> > 
> > Lets not do this kind of logging..
> >
> 
> There is some dev_info which should be cleaned up to dev_dbg.
> But logging this info is useful to know that this functions VSI (and associated ibdev)
> is up and reading for RDMA traffic.
> Is info logging to be avoided altogether?

Certainly not at display-by-default level. If every driver printed
when it binds we'd have a mess.

> > > new file mode 100644
> > > index 000000000000..b418e76a3302
> > > +++ b/drivers/infiniband/hw/irdma/main.c
> > > @@ -0,0 +1,630 @@
> > > +// SPDX-License-Identifier: GPL-2.0 or Linux-OpenIB
> > > +/* Copyright (c) 2015 - 2019 Intel Corporation */ #include "main.h"
> > > +
> > > +/* Legacy i40iw module parameters */
> > > +static int resource_profile;
> > > +module_param(resource_profile, int, 0644);
> > > +MODULE_PARM_DESC(resource_profile, "Resource Profile: 0=PF only,
> > > +1=Weighted VF, 2=Even Distribution");
> > > +
> > > +static int max_rdma_vfs = 32;
> > > +module_param(max_rdma_vfs, int, 0644);
> > MODULE_PARM_DESC(max_rdma_vfs,
> > > +"Maximum VF count: 0-32 32=default");
> > > +
> > > +static int mpa_version = 2;
> > > +module_param(mpa_version, int, 0644); MODULE_PARM_DESC(mpa_version,
> > > +"MPA version: deprecated parameter");
> > > +
> > > +static int push_mode;
> > > +module_param(push_mode, int, 0644);
> > > +MODULE_PARM_DESC(push_mode, "Low latency mode: deprecated
> > > +parameter");
> > > +
> > > +static int debug;
> > > +module_param(debug, int, 0644);
> > > +MODULE_PARM_DESC(debug, "debug flags: deprecated parameter");
> > 
> > Generally no to module parameters
> 
> Agree. But these are module params that existed in i40iw.
> And irdma replaces i40iw and has a module alias
> for it.

Provide non-module parameter alternatives for all of these, and it can
be OK only because of the module alias, and only if Doug lets you
remove i40iw.

 
> > > +static struct workqueue_struct *irdma_wq;
> > 
> > Another wq already?
> This wq is used for deferred handling of irdma service tasks.
> Such as rebuild/recovery after reset.

We have system global wqs. Why are they not OK?
 
Jason

  parent reply	other threads:[~2019-12-17 21:00 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-09 22:49 [net-next v3 00/20][pull request] Intel Wired LAN Driver Updates 2019-12-09 Jeff Kirsher
2019-12-09 22:49 ` [PATCH v3 01/20] virtual-bus: Implementation of Virtual Bus Jeff Kirsher
2019-12-10  6:49   ` Leon Romanovsky
2019-12-10 17:51     ` Jason Gunthorpe
2019-12-10 15:20   ` Greg KH
2019-12-10 18:22   ` Jason Gunthorpe
2019-12-09 22:49 ` [PATCH v3 02/20] ice: Initialize and register a virtual bus to provide RDMA Jeff Kirsher
2019-12-10 15:32   ` Greg KH
2019-12-23 19:06   ` Allan, Bruce W
2019-12-09 22:49 ` [PATCH v3 03/20] ice: Implement peer communications Jeff Kirsher
2019-12-09 22:49 ` [PATCH v3 04/20] i40e: Register a virtbus device to provide RDMA Jeff Kirsher
2019-12-10 15:33   ` Greg KH
2019-12-10 15:39   ` Greg KH
2019-12-13 23:08     ` Saleem, Shiraz
2019-12-14  8:37       ` Greg KH
2019-12-18 18:57         ` Saleem, Shiraz
2019-12-18 19:20           ` Jason Gunthorpe
2020-01-02 16:01             ` Saleem, Shiraz
2019-12-19  8:46           ` 'Greg KH'
2019-12-16  3:48     ` Parav Pandit
2019-12-16  7:15       ` Greg KH
2019-12-16  8:36         ` Parav Pandit
2019-12-16  8:58           ` Greg KH
2019-12-16  9:17             ` Parav Pandit
2019-12-09 22:49 ` [PATCH v3 05/20] RDMA/irdma: Add driver framework definitions Jeff Kirsher
2019-12-10 19:04   ` Jason Gunthorpe
2019-12-11  6:07     ` Leon Romanovsky
2019-12-12  1:40     ` Saleem, Shiraz
2019-12-12  8:39       ` Leon Romanovsky
2019-12-12  9:12         ` gregkh
2019-12-17 21:00       ` Jason Gunthorpe [this message]
2019-12-21  0:00   ` Keller, Jacob E
2019-12-09 22:49 ` [PATCH v3 06/20] RDMA/irdma: Implement device initialization definitions Jeff Kirsher
2019-12-09 22:49 ` [PATCH v3 07/20] RDMA/irdma: Implement HW Admin Queue OPs Jeff Kirsher
2019-12-09 22:49 ` [PATCH v3 08/20] RDMA/irdma: Add HMC backing store setup functions Jeff Kirsher
2019-12-09 22:49 ` [PATCH v3 09/20] RDMA/irdma: Add privileged UDA queue implementation Jeff Kirsher
2019-12-09 22:49 ` [PATCH v3 10/20] RDMA/irdma: Add QoS definitions Jeff Kirsher
2019-12-09 22:49 ` [PATCH v3 11/20] RDMA/irdma: Add connection manager Jeff Kirsher
2019-12-09 22:49 ` [PATCH v3 12/20] RDMA/irdma: Add PBLE resource manager Jeff Kirsher
2019-12-09 22:49 ` [PATCH v3 13/20] RDMA/irdma: Implement device supported verb APIs Jeff Kirsher
2019-12-09 22:49 ` [PATCH v3 14/20] RDMA/irdma: Add RoCEv2 UD OP support Jeff Kirsher
2019-12-09 22:49 ` [PATCH v3 15/20] RDMA/irdma: Add user/kernel shared libraries Jeff Kirsher
2019-12-09 22:49 ` [PATCH v3 16/20] RDMA/irdma: Add miscellaneous utility definitions Jeff Kirsher
2019-12-09 22:49 ` [PATCH v3 17/20] RDMA/irdma: Add dynamic tracing for CM Jeff Kirsher
2019-12-09 22:49 ` [PATCH v3 18/20] RDMA/irdma: Add ABI definitions Jeff Kirsher
2019-12-09 22:49 ` [PATCH v3 19/20] RDMA: Add irdma Kconfig/Makefile and remove i40iw Jeff Kirsher
2019-12-11 20:02   ` Jason Gunthorpe
2019-12-13 23:06     ` Saleem, Shiraz
2019-12-17 21:04       ` Jason Gunthorpe
2020-01-02 16:00         ` Saleem, Shiraz
2020-01-02 17:04           ` Jason Gunthorpe
2020-01-02 17:50             ` Saleem, Shiraz
2020-01-02 18:06               ` Jason Gunthorpe
2019-12-09 22:49 ` [PATCH v3 20/20] RDMA/irdma: Update MAINTAINERS file Jeff Kirsher
2019-12-10  7:33 ` [net-next v3 00/20][pull request] Intel Wired LAN Driver Updates 2019-12-09 Greg KH
2019-12-10 17:22 ` Jason Gunthorpe
2019-12-10 18:06   ` Jeff Kirsher
2019-12-10 18:25     ` Jason Gunthorpe
2019-12-10 18:41       ` Jeff Kirsher
2019-12-10 19:11         ` Jason Gunthorpe
2019-12-10 19:23           ` Jeff Kirsher
2019-12-10 19:44             ` Jason Gunthorpe

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=20191217210033.GB17227@ziepe.ca \
    --to=jgg@ziepe.ca \
    --cc=davem@davemloft.net \
    --cc=gregkh@linuxfoundation.org \
    --cc=jeffrey.t.kirsher@intel.com \
    --cc=linux-rdma@vger.kernel.org \
    --cc=mustafa.ismail@intel.com \
    --cc=netdev@vger.kernel.org \
    --cc=nhorman@redhat.com \
    --cc=parav@mellanox.com \
    --cc=sassmann@redhat.com \
    --cc=shiraz.saleem@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.