net/mlx5_core: Flow counters infrastructure
authorAmir Vadai <amirva@mellanox.com>
Fri, 13 May 2016 12:55:41 +0000 (12:55 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 16 May 2016 17:43:51 +0000 (13:43 -0400)
commit43a335e055bb7ebdc8a68ce7362ef26ef5bda92b
tree0441f14934b5e341f12df45bc86bbca9c3dc3d03
parentbd5251dbf156b6bc0661a9409d46e47160df61dd
net/mlx5_core: Flow counters infrastructure

If a counter has the aging flag set when created, it is added to a list
of counters that will be queried periodically from a workqueue.  query
result and last use timestamp are cached.
add/del counter must be very efficient since thousands of such
operations might be issued in a second.
There is only a single reference to counters without aging, therefore
no need for locks.
But, counters with aging enabled are stored in a list. In order to make
code as lockless as possible, all the list manipulation and access to
hardware is done from a single context - the periodic counters query
thread.

The hardware supports multiple counters per FTE, however currently we
are using one counter for each FTE.

Signed-off-by: Amir Vadai <amirva@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlx5/core/Makefile
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
drivers/net/ethernet/mellanox/mlx5/core/fs_core.h
drivers/net/ethernet/mellanox/mlx5/core/fs_counters.c [new file with mode: 0644]
include/linux/mlx5/driver.h
include/linux/mlx5/fs.h