linux/drivers/infiniband/core
Christoph Lameter b40f4757da IB/core: Make device counter infrastructure dynamic
In practice, each RDMA device has a unique set of counters that the
hardware implements.  Having a central set of counters that they must
all adhere to is limiting and causes many useful counters to not be
available.

Therefore we create a dynamic counter registration infrastructure.

The driver must implement a stats structure allocation routine, in
which the driver must place the directory name it wants, a list of
names for all of the counters, an array of u64 counters themselves,
plus a few generic configuration options.

We then implement a core routine to create a sysfs file for each
of the named stats elements, and a core routine to retrieve the
stats when any of the sysfs attribute files are read.

To avoid excessive beating on the stats generation routine in the
drivers, the core code also caches the stats for a short period of
time so that someone attempting to read all of the stats in a
given device's directory will not result in a stats generation
call per file read.

Future work will attempt to standardize just the shared stats
elements, and possibly add a method to get the stats via netlink
in addition to sysfs.

Signed-off-by: Christoph Lameter <cl@linux.com>
Signed-off-by: Mark Bloch <markb@mellanox.com>
Reviewed-by: Steve Wise <swise@opengridcomputing.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
[ Add caching, make structure names more informative, add i40iw support,
  other significant rewrites from the original patch ]
2016-05-26 12:52:51 -04:00
..
Makefile IB/SA: Integrate ib_sa module into ib_core module 2016-05-24 14:42:36 -04:00
addr.c IB/core: Add IP to GID netlink offload 2016-05-24 14:44:04 -04:00
agent.c IB: split struct ib_send_wr 2015-10-08 11:09:10 +01:00
agent.h IB/mad: Add final OPA MAD processing 2015-06-12 14:49:18 -04:00
cache.c IB/core: Fix oops in ib_cache_gid_set_default_gid 2016-04-22 20:26:44 -04:00
cm.c IB/core: Use hop-limit from IP stack for RoCE 2016-01-19 15:26:56 -05:00
cm_msgs.h IB/core: Fix unaligned accesses 2015-05-05 13:21:27 -04:00
cma.c Merge branches 'cxgb4-2', 'i40iw-2', 'ipoib', 'misc-4.7' and 'mlx5-fcs' into k.o/for-4.7 2016-05-13 19:40:38 -04:00
cma_configfs.c configfs: switch ->default groups to a linked list 2016-03-06 16:11:24 +01:00
core_priv.h IB/core: Add IP to GID netlink offload 2016-05-24 14:44:04 -04:00
cq.c IB: add a proper completion queue abstraction 2015-12-11 14:10:43 -08:00
device.c IB/core: Add IP to GID netlink offload 2016-05-24 14:44:04 -04:00
fmr_pool.c IB/core: trivial prink cleanup. 2016-03-03 10:20:25 -05:00
iwcm.c IB/core: Fix a potential array overrun in CMA and SA agent 2016-05-13 19:40:02 -04:00
iwcm.h
iwpm_msg.c iwpm: crash fix for large connections test 2016-03-16 13:48:32 -04:00
iwpm_util.c IB/IWPM: Fix a potential skb leak 2016-05-13 19:40:01 -04:00
iwpm_util.h iwpm: crash fix for large connections test 2016-03-16 13:48:32 -04:00
mad.c IB/MAD: Integrate ib_mad module into ib_core module 2016-05-24 14:40:13 -04:00
mad_priv.h IB/mad: use CQ abstraction 2016-01-19 15:25:45 -05:00
mad_rmpp.c IB/mad: Add final OPA MAD processing 2015-06-12 14:49:18 -04:00
mad_rmpp.h RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00
mr_pool.c IB/core: add a simple MR pool 2016-05-13 13:37:18 -04:00
multicast.c IB/core: Support new type of join-state for multicast 2016-05-25 15:39:03 -04:00
netlink.c IB/core: Remove unnecessary check in ibnl_rcv_msg 2016-05-13 19:40:01 -04:00
opa_smi.h IB: Add rdma_cap_ib_switch helper and use where appropriate 2015-07-14 13:20:08 -04:00
packer.c IB/core: trivial prink cleanup. 2016-03-03 10:20:25 -05:00
roce_gid_mgmt.c IB/core: Move rdma_is_upper_dev_rcu to header file 2015-12-23 10:35:12 -05:00
rw.c IB/core: Enhance ib_map_mr_sg() 2016-05-13 13:37:57 -04:00
sa.h
sa_query.c Merge branches 'misc-4.7-2', 'ipoib' and 'ib-router' into k.o/for-4.7 2016-05-26 11:55:19 -04:00
smi.c IB: Add rdma_cap_ib_switch helper and use where appropriate 2015-07-14 13:20:08 -04:00
smi.h IB: Add rdma_cap_ib_switch helper and use where appropriate 2015-07-14 13:20:08 -04:00
sysfs.c IB/core: Make device counter infrastructure dynamic 2016-05-26 12:52:51 -04:00
ucm.c IB/security: Restrict use of the write() interface 2016-04-28 12:03:16 -04:00
ucma.c IB/security: Restrict use of the write() interface 2016-04-28 12:03:16 -04:00
ud_header.c IB/core: trivial prink cleanup. 2016-03-03 10:20:25 -05:00
umem.c mm/gup: Switch all callers of get_user_pages() to not pass tsk/mm 2016-02-16 10:11:12 +01:00
umem_odp.c mm/gup: Introduce get_user_pages_remote() 2016-02-16 10:04:09 +01:00
umem_rbtree.c IB/core: Implement support for MMU notifiers regarding on demand paging regions 2014-12-15 18:13:36 -08:00
user_mad.c IB/mad: pass ib_mad_send_buf explicitly to the recv_handler 2016-01-19 15:25:36 -05:00
uverbs.h IB: remove in-kernel support for memory windows 2015-12-23 14:29:04 -05:00
uverbs_cmd.c IB/core: Do not require CAP_NET_ADMIN for packet sniffing 2016-05-18 10:31:58 -04:00
uverbs_main.c IB/security: Restrict use of the write() interface 2016-04-28 12:03:16 -04:00
uverbs_marshall.c IB/core: Add gid_type to gid attribute 2015-12-23 10:35:10 -05:00
verbs.c IB/core: Enhance ib_map_mr_sg() 2016-05-13 13:37:57 -04:00