Commit 0d235c3f authored by Matan Barak's avatar Matan Barak Committed by Saeed Mahameed

net/mlx5: Add hash table to search FTEs in a flow-group

When adding a flow table entry (fte) to a flow group (fg), we first
need to check whether this fte exist. In such a case we just merge
the destinations (if possible). Currently, this is done by traversing
the fte list available in a fg. This could take a lot of time when
using large flow groups. Speeding this up by using rhashtable, which
is much faster.
Signed-off-by: default avatarMatan Barak <matanb@mellanox.com>
Reviewed-by: default avatarMaor Gottlieb <maorg@mellanox.com>
Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
parent 667cb65a
...@@ -34,6 +34,7 @@ ...@@ -34,6 +34,7 @@
#define _MLX5_FS_CORE_ #define _MLX5_FS_CORE_
#include <linux/mlx5/fs.h> #include <linux/mlx5/fs.h>
#include <linux/rhashtable.h>
enum fs_node_type { enum fs_node_type {
FS_TYPE_NAMESPACE, FS_TYPE_NAMESPACE,
...@@ -168,6 +169,7 @@ struct fs_fte { ...@@ -168,6 +169,7 @@ struct fs_fte {
u32 modify_id; u32 modify_id;
enum fs_fte_status status; enum fs_fte_status status;
struct mlx5_fc *counter; struct mlx5_fc *counter;
struct rhash_head hash;
}; };
/* Type of children is mlx5_flow_table/namespace */ /* Type of children is mlx5_flow_table/namespace */
...@@ -197,6 +199,7 @@ struct mlx5_flow_group { ...@@ -197,6 +199,7 @@ struct mlx5_flow_group {
u32 start_index; u32 start_index;
u32 max_ftes; u32 max_ftes;
u32 id; u32 id;
struct rhashtable ftes_hash;
}; };
struct mlx5_flow_root_namespace { struct mlx5_flow_root_namespace {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment