summaryrefslogtreecommitdiff
path: root/include/linux/mlx5
diff options
context:
space:
mode:
authorVlad Buslov <vladbu@mellanox.com>2018-07-24 09:52:11 +0300
committerSaeed Mahameed <saeedm@mellanox.com>2018-09-06 07:14:57 +0300
commit9aff93d7d0d4b3f3076d7bd12a4ad06ef1cf9804 (patch)
tree0941d5daab6315479f9f3446b001ccd2629c65f4 /include/linux/mlx5
parent6e5e22839136fdb466af0aa46ff2404713dff974 (diff)
downloadlinux-9aff93d7d0d4b3f3076d7bd12a4ad06ef1cf9804.tar.xz
net/mlx5: Store flow counters in a list
In order to improve performance of flow counter stats query loop that traverses all configured flow counters, replace rb_tree with double-linked list. This change improves performance of traversing flow counters by removing the tree traversal. (profiling data showed that call to rb_next was most top CPU consumer) However, lookup of flow flow counter in list becomes linear, instead of logarithmic. This problem is fixed by next patch in series, which adds idr for fast lookup. Idr is to be used because it is not an intrusive data structure and doesn't require adding any new members to struct mlx5_fc, which allows its control data part to stay <= 1 cache line in size. Signed-off-by: Vlad Buslov <vladbu@mellanox.com> Acked-by: Amir Vadai <amir@vadai.me> Reviewed-by: Paul Blakey <paulb@mellanox.com> Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
Diffstat (limited to 'include/linux/mlx5')
-rw-r--r--include/linux/mlx5/driver.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/include/linux/mlx5/driver.h b/include/linux/mlx5/driver.h
index 4b53ac64004b..61bed33e6675 100644
--- a/include/linux/mlx5/driver.h
+++ b/include/linux/mlx5/driver.h
@@ -583,7 +583,7 @@ struct mlx5_irq_info {
};
struct mlx5_fc_stats {
- struct rb_root counters;
+ struct list_head counters;
struct llist_head addlist;
struct llist_head dellist;