X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fmlx5%2Fmlx5_utils.h;h=7a62187f8e82a09174f20e59fc6c131e73fc581c;hb=f5b0aed2df07d65398ab4dfd442ed27f8db1da6b;hp=be6e5f67aa478ef6afb3ebf780ea23397bb2ec6a;hpb=a12c188b858d99ab6ba4a33b79115c578e533f00;p=dpdk.git diff --git a/drivers/net/mlx5/mlx5_utils.h b/drivers/net/mlx5/mlx5_utils.h index be6e5f67aa..7a62187f8e 100644 --- a/drivers/net/mlx5/mlx5_utils.h +++ b/drivers/net/mlx5/mlx5_utils.h @@ -274,7 +274,7 @@ struct mlx5_hlist; */ struct mlx5_hlist_entry { LIST_ENTRY(mlx5_hlist_entry) next; /* entry pointers in the list. */ - uint64_t key; /* user defined 'key', could be the hash signature. */ + uint32_t idx; /* Bucket index the entry belongs to. */ uint32_t ref_cnt; /* Reference count. */ }; @@ -328,6 +328,13 @@ typedef struct mlx5_hlist_entry *(*mlx5_hlist_create_cb) (struct mlx5_hlist *list, uint64_t key, void *ctx); +/* Hash list bucket head. */ +struct mlx5_hlist_bucket { + struct mlx5_hlist_head head; /* List head. */ + rte_rwlock_t lock; /* Bucket lock. */ + uint32_t gen_cnt; /* List modification will update generation count. */ +} __rte_cache_aligned; + /** * Hash list table structure * @@ -344,15 +351,14 @@ struct mlx5_hlist { uint32_t entry_sz; /**< Size of entry, used to allocate entry. */ /**< mask to get the index of the list heads. */ uint32_t mask; - rte_rwlock_t lock; - uint32_t gen_cnt; /* List modification will update generation count. */ bool direct_key; /* Use the new entry key directly as hash index. */ bool write_most; /* List mostly used for append new or destroy. */ void *ctx; mlx5_hlist_create_cb cb_create; /**< entry create callback. */ mlx5_hlist_match_cb cb_match; /**< entry match callback. */ mlx5_hlist_remove_cb cb_remove; /**< entry remove callback. */ - struct mlx5_hlist_head heads[]; /**< list head arrays. */ + struct mlx5_hlist_bucket buckets[] __rte_cache_aligned; + /**< list bucket arrays. */ }; /**