From: Doug Ledford <dledford@redhat.com>
To: Michael Wang <yun.wang@profitbricks.com>
Cc: Roland Dreier <roland@kernel.org>,
Sean Hefty <sean.hefty@intel.com>,
Hal Rosenstock <hal.rosenstock@gmail.com>,
Ira Weiny <ira.weiny@intel.com>,
linux-rdma@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-nfs@vger.kernel.org, netdev@vger.kernel.org,
"J. Bruce Fields" <bfields@fieldses.org>,
Trond Myklebust <trond.myklebust@primarydata.com>,
"David S. Miller" <davem@davemloft.net>,
Or Gerlitz <ogerlitz@mellanox.com>,
Moni Shoua <monis@mellanox.com>,
PJ Waskiewicz <pj.waskiewicz@solidfire.com>,
Tatyana Nikolova <Tatyana.E.Nikolova@intel.com>,
Yan Burman <yanb@mellanox.com>,
Jack Morgenstein <jackm@dev.mellanox.co.il>,
Bart Van Assche <bvanassche@acm.org>,
Yann Droneaud <ydroneaud@opteya.com>,
Colin Ian King <colin.king@canonical.com>,
Majd Dibbiny <majd@mellanox.com>, Jiri Kosina <jkosina@suse.cz>,
Matan Barak <matanb@mellanox.com>,
Alex Estrin <alex.estrin@intel.com>,
Eric Dumazet <edumazet@google.com>,
Erez Shitrit <erezsh@mellanox.com>,
Sagi Grimberg <sagig@mellanox.com>,
Haggai Eran <haggaie@mellanox.com>,
Shachar Raindel <raindel@mellanox.com>,
Mike Marciniszyn <mike.marciniszyn@intel.com>,
Steve Wise <swise@opengridcomputing.com>, Tom Tucker <tom@ogc.us>,
Chuck Lever <chuck.lever@oracle.com>
Subject: Re: [RFC PATCH 07/11] IB/Verbs: Use management helper has_mcast() and, cap_mcast() for mcast-check
Date: Mon, 30 Mar 2015 12:11:58 -0400 [thread overview]
Message-ID: <1427731918.21101.198.camel@redhat.com> (raw)
In-Reply-To: <55157B71.6040505@profitbricks.com>
[-- Attachment #1: Type: text/plain, Size: 4988 bytes --]
On Fri, 2015-03-27 at 16:46 +0100, Michael Wang wrote:
> Introduce helper has_mcast() and cap_mcast() to help us check if an
> IB device or it's port support Multicast.
This probably needs reworded or rethought. In truth, *all* rdma devices
are multicast capable. *BUT*, IB/OPA devices require multicast
registration done the IB way (including for sendonly multicast sends),
while Ethernet devices do multicast the Ethernet way. These tests are
really just for IB specific multicast registration and deregistration.
Call it has_mcast() and cap_mcast() is incorrect.
> Cc: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
> Cc: Doug Ledford <dledford@redhat.com>
> Cc: Ira Weiny <ira.weiny@intel.com>
> Cc: Sean Hefty <sean.hefty@intel.com>
> Signed-off-by: Michael Wang <yun.wang@profitbricks.com>
> ---
> drivers/infiniband/core/cma.c | 2 +-
> drivers/infiniband/core/multicast.c | 8 ++++----
> include/rdma/ib_verbs.h | 28 ++++++++++++++++++++++++++++
> 3 files changed, 33 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
> index 276fb76..cbbc85b 100644
> --- a/drivers/infiniband/core/cma.c
> +++ b/drivers/infiniband/core/cma.c
> @@ -3398,7 +3398,7 @@ void rdma_leave_multicast(struct rdma_cm_id *id, struct sockaddr *addr)
> ib_detach_mcast(id->qp,
> &mc->multicast.ib->rec.mgid,
> be16_to_cpu(mc->multicast.ib->rec.mlid));
> - if (rdma_transport_is_ib(id_priv->cma_dev->device)) {
> + if (has_mcast(id_priv->cma_dev->device)) {
> switch (rdma_port_get_link_layer(id->device, id->port_num)) {
> case IB_LINK_LAYER_INFINIBAND:
> ib_sa_free_multicast(mc->multicast.ib);
> diff --git a/drivers/infiniband/core/multicast.c b/drivers/infiniband/core/multicast.c
> index 17573ff..ffeaf27 100644
> --- a/drivers/infiniband/core/multicast.c
> +++ b/drivers/infiniband/core/multicast.c
> @@ -780,7 +780,7 @@ static void mcast_event_handler(struct ib_event_handler *handler,
> int index;
>
> dev = container_of(handler, struct mcast_device, event_handler);
> - if (!rdma_port_ll_is_ib(dev->device, event->element.port_num))
> + if (!cap_mcast(dev->device, event->element.port_num))
> return;
>
> index = event->element.port_num - dev->start_port;
> @@ -807,7 +807,7 @@ static void mcast_add_one(struct ib_device *device)
> int i;
> int count = 0;
>
> - if (!rdma_transport_is_ib(device))
> + if (!has_mcast(device))
> return;
>
> dev = kmalloc(sizeof *dev + device->phys_port_cnt * sizeof *port,
> @@ -823,7 +823,7 @@ static void mcast_add_one(struct ib_device *device)
> }
>
> for (i = 0; i <= dev->end_port - dev->start_port; i++) {
> - if (!rdma_port_ll_is_ib(device, dev->start_port + i))
> + if (!cap_mcast(device, dev->start_port + i))
> continue;
> port = &dev->port[i];
> port->dev = dev;
> @@ -861,7 +861,7 @@ static void mcast_remove_one(struct ib_device *device)
> flush_workqueue(mcast_wq);
>
> for (i = 0; i <= dev->end_port - dev->start_port; i++) {
> - if (rdma_port_ll_is_ib(device, dev->start_port + i)) {
> + if (cap_mcast(device, dev->start_port + i)) {
> port = &dev->port[i];
> deref_port(port);
> wait_for_completion(&port->comp);
> diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
> index fa8ffa3..e796104 100644
> --- a/include/rdma/ib_verbs.h
> +++ b/include/rdma/ib_verbs.h
> @@ -1823,6 +1823,19 @@ static inline int has_sa(struct ib_device *device)
> }
>
> /**
> + * has_mcast - Check if a device support Multicast.
> + *
> + * @device: Device to be checked
> + *
> + * Return 0 when a device has none port to support
> + * Multicast.
> + */
> +static inline int has_mcast(struct ib_device *device)
> +{
> + return rdma_transport_is_ib(device);
> +}
> +
> +/**
> * cap_smi - Check if the port of device has the capability
> * Subnet Management Interface.
> *
> @@ -1852,6 +1865,21 @@ static inline int cap_sa(struct ib_device *device, u8 port_num)
> return rdma_port_ll_is_ib(device, port_num);
> }
>
> +/**
> + * cap_mcast - Check if the port of device has the capability
> + * Multicast.
> + *
> + * @device: Device to be checked
> + * @port_num: Port number of the device
> + *
> + * Return 0 when port of the device don't support
> + * Multicast.
> + */
> +static inline int cap_mcast(struct ib_device *device, u8 port_num)
> +{
> + return rdma_port_ll_is_ib(device, port_num);
> +}
> +
> int ib_query_gid(struct ib_device *device,
> u8 port_num, int index, union ib_gid *gid);
>
--
Doug Ledford <dledford@redhat.com>
GPG KeyID: 0E572FDD
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
next prev parent reply other threads:[~2015-03-30 16:12 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-27 15:39 [RFC PATCH 00/11] IB/Verbs: IB Management Helpers Michael Wang
2015-03-27 15:40 ` [PATCH 01/11] IB/Verbs: Use helpers to check transport and link layer Michael Wang
2015-03-30 15:56 ` Doug Ledford
2015-03-30 16:14 ` Michael Wang
2015-03-30 16:22 ` Doug Ledford
2015-03-30 17:04 ` Michael Wang
2015-03-27 15:42 ` [RFC PATCH 02/11] IB/Verbs: Use management helper tech_iboe() for iboe-check Michael Wang
2015-03-30 16:17 ` Doug Ledford
2015-03-30 16:23 ` Michael Wang
2015-03-27 15:43 ` [RFC PATCH 03/11] IB/Verbs: Use management helper has_mad() for mad-check Michael Wang
2015-03-27 15:44 ` [RFC PATCH 04/11] IB/Verbs: Use management helper cap_smi() for smi-check Michael Wang
2015-03-27 16:32 ` Jason Gunthorpe
2015-03-27 16:59 ` Yun Wang
2015-03-27 15:45 ` [RFC PATCH 05/11] IB/Verbs: Use management helper has_cm() for cm-check Michael Wang
2015-03-27 15:46 ` [RFC PATCH 06/11] IB/Verbs: Use management helper has_sa() and cap_sa(), for sa-check Michael Wang
2015-03-27 16:47 ` ira.weiny
2015-03-27 17:13 ` Yun Wang
2015-03-27 19:49 ` Doug Ledford
2015-03-30 16:16 ` Doug Ledford
2015-03-30 16:42 ` Michael Wang
2015-03-30 17:02 ` Doug Ledford
2015-03-31 13:22 ` Michael Wang
2015-03-31 23:12 ` Jason Gunthorpe
2015-04-01 0:51 ` ira.weiny
2015-04-01 1:31 ` Jason Gunthorpe
2015-03-27 15:46 ` [RFC PATCH 07/11] IB/Verbs: Use management helper has_mcast() and, cap_mcast() for mcast-check Michael Wang
2015-03-27 16:28 ` Jason Gunthorpe
2015-03-27 17:05 ` ira.weiny
2015-03-27 17:31 ` Yun Wang
2015-03-27 17:49 ` Jason Gunthorpe
2015-03-27 18:09 ` Yun Wang
2015-03-27 17:47 ` Jason Gunthorpe
2015-03-30 8:30 ` Michael Wang
2015-03-30 22:33 ` Jason Gunthorpe
2015-03-30 16:11 ` Doug Ledford [this message]
2015-03-30 16:20 ` Michael Wang
2015-03-30 23:47 ` ira.weiny
2015-03-31 7:25 ` Michael Wang
2015-03-27 15:47 ` [RFC PATCH 08/11] IB/Verbs: Use management helper has_iwarp() for, iwarp-check Michael Wang
2015-03-27 16:13 ` Jason Gunthorpe
2015-03-27 16:17 ` Michael Wang
2015-03-27 17:16 ` ira.weiny
2015-03-27 17:29 ` Jason Gunthorpe
2015-03-30 15:10 ` Michael Wang
2015-03-30 22:35 ` Jason Gunthorpe
2015-03-31 7:39 ` Michael Wang
2015-03-31 11:19 ` Tom Talpey
2015-03-31 11:41 ` Michael Wang
2015-03-31 13:56 ` Tom Talpey
2015-03-31 13:58 ` Michael Wang
2015-03-27 17:35 ` Yun Wang
2015-03-30 16:13 ` Doug Ledford
2015-03-30 16:21 ` Michael Wang
2015-03-31 23:20 ` Jason Gunthorpe
2015-03-27 15:48 ` [RFC PATCH 09/11] IB/Verbs: Use management helper has_ipoib() and, cap_ipoib() for ipoib-check Michael Wang
2015-03-27 16:06 ` Jason Gunthorpe
2015-03-27 16:15 ` Michael Wang
2015-03-27 16:38 ` Jason Gunthorpe
2015-03-27 15:49 ` [RFC PATCH 10/11] IB/Verbs: Use management helper cap_ib() for ib-check Michael Wang
2015-03-27 15:49 ` [RFC PATCH 11/11] IB/Verbs: Use management helper cap_eth() for eth-check Michael Wang
2015-04-06 20:22 ` [RFC PATCH 00/11] IB/Verbs: IB Management Helpers ira.weiny
2015-04-07 7:31 ` Michael Wang
2015-04-07 12:48 ` Michael Wang
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=1427731918.21101.198.camel@redhat.com \
--to=dledford@redhat.com \
--cc=Tatyana.E.Nikolova@intel.com \
--cc=alex.estrin@intel.com \
--cc=bfields@fieldses.org \
--cc=bvanassche@acm.org \
--cc=chuck.lever@oracle.com \
--cc=colin.king@canonical.com \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=erezsh@mellanox.com \
--cc=haggaie@mellanox.com \
--cc=hal.rosenstock@gmail.com \
--cc=ira.weiny@intel.com \
--cc=jackm@dev.mellanox.co.il \
--cc=jkosina@suse.cz \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-nfs@vger.kernel.org \
--cc=linux-rdma@vger.kernel.org \
--cc=majd@mellanox.com \
--cc=matanb@mellanox.com \
--cc=mike.marciniszyn@intel.com \
--cc=monis@mellanox.com \
--cc=netdev@vger.kernel.org \
--cc=ogerlitz@mellanox.com \
--cc=pj.waskiewicz@solidfire.com \
--cc=raindel@mellanox.com \
--cc=roland@kernel.org \
--cc=sagig@mellanox.com \
--cc=sean.hefty@intel.com \
--cc=swise@opengridcomputing.com \
--cc=tom@ogc.us \
--cc=trond.myklebust@primarydata.com \
--cc=yanb@mellanox.com \
--cc=ydroneaud@opteya.com \
--cc=yun.wang@profitbricks.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).