From: Leon Romanovsky <leon@kernel.org>
To: Doug Ledford <dledford@redhat.com>
Cc: linux-rdma@vger.kernel.org,
Chien Tin Tung <chien.tin.tung@intel.com>,
Steve Wise <swise@opengridcomputing.com>,
Stephen Hemminger <stephen@networkplumber.org>,
Jiri Pirko <jiri@mellanox.com>, Ariel Almog <ariela@mellanox.com>,
Linux Netdev <netdev@vger.kernel.org>,
Leon Romanovsky <leonro@mellanox.com>
Subject: [PATCH rdma-next 07/19] RDMA/core: Add iterator over ib_devices
Date: Wed, 21 Jun 2017 09:05:16 +0300 [thread overview]
Message-ID: <20170621060528.3752-8-leon@kernel.org> (raw)
In-Reply-To: <20170621060528.3752-1-leon@kernel.org>
From: Leon Romanovsky <leonro@mellanox.com>
The coming nldev needs iterate over all IB devices in the system
and in order do not expose the ib_devices list outside the devices.c,
it is necessary to provide function iterator.
Current version is written explicitly for nldev callback to avoid
over-engineering at this stage, but it can be easily extended for
other types.
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
---
drivers/infiniband/core/core_priv.h | 8 ++++++++
drivers/infiniband/core/device.c | 25 +++++++++++++++++++++++++
2 files changed, 33 insertions(+)
diff --git a/drivers/infiniband/core/core_priv.h b/drivers/infiniband/core/core_priv.h
index cb7d372e4bdf..4a150c4be175 100644
--- a/drivers/infiniband/core/core_priv.h
+++ b/drivers/infiniband/core/core_priv.h
@@ -92,6 +92,14 @@ void ib_enum_all_roce_netdevs(roce_netdev_filter filter,
roce_netdev_callback cb,
void *cookie);
+typedef int (*nldev_callback)(struct ib_device *device,
+ struct sk_buff *skb,
+ struct netlink_callback *cb,
+ unsigned int idx);
+
+int ib_enum_all_devs(nldev_callback nldev_cb, struct sk_buff *skb,
+ struct netlink_callback *cb);
+
enum ib_cache_gid_default_mode {
IB_CACHE_GID_DEFAULT_MODE_SET,
IB_CACHE_GID_DEFAULT_MODE_DELETE
diff --git a/drivers/infiniband/core/device.c b/drivers/infiniband/core/device.c
index 5326dcc6ede7..7a799fc90348 100644
--- a/drivers/infiniband/core/device.c
+++ b/drivers/infiniband/core/device.c
@@ -815,6 +815,31 @@ void ib_enum_all_roce_netdevs(roce_netdev_filter filter,
}
/**
+ * ib_enum_all_devs - enumerate all ib_devices
+ * @cb: Callback to call for each found ib_device
+ *
+ * Enumerates all ib_devices and calls callback() on each device.
+ */
+int ib_enum_all_devs(nldev_callback nldev_cb, struct sk_buff *skb,
+ struct netlink_callback *cb)
+{
+ struct ib_device *dev;
+ unsigned int idx = 0;
+ int ret = 0;
+
+ down_read(&lists_rwsem);
+ list_for_each_entry(dev, &device_list, core_list) {
+ ret = nldev_cb(dev, skb, cb, idx);
+ if (ret)
+ break;
+ idx++;
+ }
+
+ up_read(&lists_rwsem);
+ return ret;
+}
+
+/**
* ib_query_pkey - Get P_Key table entry
* @device:Device to query
* @port_num:Port number to query
--
2.13.1
next prev parent reply other threads:[~2017-06-21 6:05 UTC|newest]
Thread overview: 69+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-21 6:05 [PATCH rdma-next 00/19] RDMA Netlink Device Client Leon Romanovsky
2017-06-21 6:05 ` [PATCH rdma-next 02/19] RDMA/netlink: Simplify the put_msg and put_attr Leon Romanovsky
2017-06-21 14:01 ` Steve Wise
2017-06-21 14:01 ` Steve Wise
2017-06-21 6:05 ` [PATCH rdma-next 03/19] RDMA/netlink: Rename and remove redundant parameter from ibnl_unicast Leon Romanovsky
2017-06-21 14:01 ` Steve Wise
2017-06-21 14:01 ` Steve Wise
2017-06-21 6:05 ` [PATCH rdma-next 05/19] RDMA/netlink: Simplify and rename ibnl_chk_listeners Leon Romanovsky
[not found] ` <20170621060528.3752-6-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2017-06-21 14:04 ` Steve Wise
2017-06-21 14:04 ` Steve Wise
2017-06-21 6:05 ` Leon Romanovsky [this message]
[not found] ` <20170621060528.3752-8-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2017-06-21 14:07 ` [PATCH rdma-next 07/19] RDMA/core: Add iterator over ib_devices Steve Wise
2017-06-21 14:07 ` Steve Wise
2017-06-21 6:05 ` [PATCH rdma-next 08/19] RDMA/core: Expose translation from device name to ib_device Leon Romanovsky
[not found] ` <20170621060528.3752-9-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2017-06-21 14:09 ` Steve Wise
2017-06-21 14:09 ` Steve Wise
2017-06-21 15:00 ` Leon Romanovsky
2017-06-21 16:07 ` Jason Gunthorpe
[not found] ` <20170621160748.GA10200-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-06-22 5:31 ` Leon Romanovsky
2017-06-21 6:05 ` [PATCH rdma-next 10/19] RDMA/netlink: Reduce indirection access to cb_table Leon Romanovsky
[not found] ` <20170621060528.3752-11-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2017-06-21 14:13 ` Steve Wise
2017-06-21 14:13 ` Steve Wise
2017-06-21 6:05 ` [PATCH rdma-next 11/19] RDMA/netlink: Convert LS to doit callback Leon Romanovsky
[not found] ` <20170621060528.3752-12-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2017-06-21 14:18 ` Steve Wise
2017-06-21 14:18 ` Steve Wise
2017-06-21 14:53 ` Leon Romanovsky
2017-06-21 15:25 ` Steve Wise
2017-06-21 15:25 ` Steve Wise
2017-06-21 6:05 ` [PATCH rdma-next 12/19] RDMA/netlink: Update copyright Leon Romanovsky
2017-06-21 14:18 ` Steve Wise
2017-06-21 14:18 ` Steve Wise
[not found] ` <20170621060528.3752-1-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2017-06-21 6:05 ` [PATCH rdma-next 01/19] RDMA/netlink: Add flag to consolidate common handing Leon Romanovsky
[not found] ` <20170621060528.3752-2-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2017-06-21 14:01 ` Steve Wise
2017-06-21 14:01 ` Steve Wise
2017-06-21 6:05 ` [PATCH rdma-next 04/19] RDMA/netlink: Rename and remove redundant parameter from ibnl_multicast Leon Romanovsky
[not found] ` <20170621060528.3752-5-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2017-06-21 14:03 ` Steve Wise
2017-06-21 14:03 ` Steve Wise
2017-06-21 6:05 ` [PATCH rdma-next 06/19] RDMA/netlink: Rename netlink callback struct Leon Romanovsky
2017-06-21 14:04 ` Steve Wise
2017-06-21 14:04 ` Steve Wise
2017-06-21 6:05 ` [PATCH rdma-next 09/19] RDMA/netlink: Add and implement doit netlink callback Leon Romanovsky
2017-06-21 14:11 ` Steve Wise
2017-06-21 14:11 ` Steve Wise
2017-06-21 6:05 ` [PATCH rdma-next 13/19] RDMA/netlink: Add netlink device definitions to UAPI Leon Romanovsky
2017-06-21 14:21 ` Steve Wise
2017-06-21 14:21 ` Steve Wise
2017-06-21 16:11 ` Jason Gunthorpe
[not found] ` <20170621161149.GB10200-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-06-21 16:18 ` Tung, Chien Tin
[not found] ` <748B799B6A00724488C603FD7E5E7EB976FA5C5C-XfjTATA9Em864kNsxIetb7fspsVTdybXVpNB7YpNyf8@public.gmane.org>
2017-06-22 4:28 ` Leon Romanovsky
2017-06-21 6:05 ` [PATCH rdma-next 14/19] RDMA/netlink: Add nldev initialization flows Leon Romanovsky
[not found] ` <20170621060528.3752-15-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2017-06-21 14:22 ` Steve Wise
2017-06-21 14:22 ` Steve Wise
2017-06-21 6:05 ` [PATCH rdma-next 15/19] RDMA/netlink: Implement nldev device dumpit calback Leon Romanovsky
2017-06-21 14:25 ` Steve Wise
2017-06-21 14:25 ` Steve Wise
2017-06-21 6:05 ` [PATCH rdma-next 16/19] RDMa/netlink: Add nldev device doit implementation Leon Romanovsky
[not found] ` <20170621060528.3752-17-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2017-06-21 14:26 ` Steve Wise
2017-06-21 14:26 ` Steve Wise
2017-06-21 6:05 ` [PATCH rdma-next 17/19] RDMA/netlink: Add nldev port dumpit implementation Leon Romanovsky
[not found] ` <20170621060528.3752-18-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2017-06-21 14:28 ` Steve Wise
2017-06-21 14:28 ` Steve Wise
2017-06-21 14:42 ` Leon Romanovsky
[not found] ` <20170621144211.GE1248-U/DQcQFIOTAAJjI8aNfphQ@public.gmane.org>
2017-06-21 15:21 ` Leon Romanovsky
2017-06-21 6:05 ` [PATCH rdma-next 18/19] RDMA/netlink: Implement nldev port doit callback Leon Romanovsky
[not found] ` <20170621060528.3752-19-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2017-06-21 14:29 ` Steve Wise
2017-06-21 14:29 ` Steve Wise
2017-06-21 6:05 ` [PATCH rdma-next 19/19] RDMA/netlink: Expose device and port capability masks Leon Romanovsky
[not found] ` <20170621060528.3752-20-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2017-06-21 14:31 ` Steve Wise
2017-06-21 14:31 ` Steve Wise
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=20170621060528.3752-8-leon@kernel.org \
--to=leon@kernel.org \
--cc=ariela@mellanox.com \
--cc=chien.tin.tung@intel.com \
--cc=dledford@redhat.com \
--cc=jiri@mellanox.com \
--cc=leonro@mellanox.com \
--cc=linux-rdma@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=stephen@networkplumber.org \
--cc=swise@opengridcomputing.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.