+/**
+ * Linked mlx5 list constant object.
+ */
+struct mlx5_list_const {
+ char name[MLX5_NAME_SIZE]; /**< Name of the mlx5 list. */
+ void *ctx; /* user objects target to callback. */
+ bool lcores_share; /* Whether to share objects between the lcores. */
+ rte_spinlock_t lcore_lock; /* Lock for non-lcore list. */
+ mlx5_list_create_cb cb_create; /**< entry create callback. */
+ mlx5_list_match_cb cb_match; /**< entry match callback. */
+ mlx5_list_remove_cb cb_remove; /**< entry remove callback. */
+ mlx5_list_clone_cb cb_clone; /**< entry clone callback. */
+ mlx5_list_clone_free_cb cb_clone_free;
+ /**< entry clone free callback. */
+};
+
+/**
+ * Linked mlx5 list inconstant data.
+ */
+struct mlx5_list_inconst {
+ rte_rwlock_t lock; /* read/write lock. */
+ volatile uint32_t gen_cnt; /* List modification may update it. */
+ volatile uint32_t count; /* number of entries in list. */
+ struct mlx5_list_cache *cache[MLX5_LIST_MAX];
+ /* Lcore cache, last index is the global cache. */
+};
+