Lines Matching refs:pattern

80 	struct mlx5dr_ptrn_obj *pattern;  in dr_ptrn_alloc_pattern()  local
97 pattern = kzalloc(sizeof(*pattern), GFP_KERNEL); in dr_ptrn_alloc_pattern()
98 if (!pattern) in dr_ptrn_alloc_pattern()
101 pattern->data = kzalloc(num_of_actions * DR_MODIFY_ACTION_SIZE * in dr_ptrn_alloc_pattern()
102 sizeof(*pattern->data), GFP_KERNEL); in dr_ptrn_alloc_pattern()
103 if (!pattern->data) in dr_ptrn_alloc_pattern()
106 memcpy(pattern->data, data, num_of_actions * DR_MODIFY_ACTION_SIZE); in dr_ptrn_alloc_pattern()
107 pattern->chunk = chunk; in dr_ptrn_alloc_pattern()
108 pattern->index = index; in dr_ptrn_alloc_pattern()
109 pattern->num_of_actions = num_of_actions; in dr_ptrn_alloc_pattern()
111 list_add(&pattern->list, &mgr->ptrn_list); in dr_ptrn_alloc_pattern()
112 refcount_set(&pattern->refcount, 1); in dr_ptrn_alloc_pattern()
114 return pattern; in dr_ptrn_alloc_pattern()
117 kfree(pattern); in dr_ptrn_alloc_pattern()
124 dr_ptrn_free_pattern(struct mlx5dr_ptrn_obj *pattern) in dr_ptrn_free_pattern() argument
126 list_del(&pattern->list); in dr_ptrn_free_pattern()
127 mlx5dr_icm_free_chunk(pattern->chunk); in dr_ptrn_free_pattern()
128 kfree(pattern->data); in dr_ptrn_free_pattern()
129 kfree(pattern); in dr_ptrn_free_pattern()
137 struct mlx5dr_ptrn_obj *pattern; in mlx5dr_ptrn_cache_get_pattern() local
143 pattern = dr_ptrn_find_cached_pattern(mgr, in mlx5dr_ptrn_cache_get_pattern()
146 if (!pattern) { in mlx5dr_ptrn_cache_get_pattern()
148 pattern = dr_ptrn_alloc_pattern(mgr, num_of_actions, data); in mlx5dr_ptrn_cache_get_pattern()
149 if (!pattern) in mlx5dr_ptrn_cache_get_pattern()
152 hw_actions = (u64 *)pattern->data; in mlx5dr_ptrn_cache_get_pattern()
165 if (mlx5dr_send_postsend_pattern(mgr->dmn, pattern->chunk, in mlx5dr_ptrn_cache_get_pattern()
166 num_of_actions, pattern->data)) { in mlx5dr_ptrn_cache_get_pattern()
167 refcount_dec(&pattern->refcount); in mlx5dr_ptrn_cache_get_pattern()
171 refcount_inc(&pattern->refcount); in mlx5dr_ptrn_cache_get_pattern()
176 return pattern; in mlx5dr_ptrn_cache_get_pattern()
179 dr_ptrn_free_pattern(pattern); in mlx5dr_ptrn_cache_get_pattern()
187 struct mlx5dr_ptrn_obj *pattern) in mlx5dr_ptrn_cache_put_pattern() argument
191 if (refcount_dec_and_test(&pattern->refcount)) in mlx5dr_ptrn_cache_put_pattern()
192 dr_ptrn_free_pattern(pattern); in mlx5dr_ptrn_cache_put_pattern()
227 struct mlx5dr_ptrn_obj *pattern; in mlx5dr_ptrn_mgr_destroy() local
235 list_for_each_entry_safe(pattern, tmp, &mgr->ptrn_list, list) { in mlx5dr_ptrn_mgr_destroy()
236 list_del(&pattern->list); in mlx5dr_ptrn_mgr_destroy()
237 kfree(pattern->data); in mlx5dr_ptrn_mgr_destroy()
238 kfree(pattern); in mlx5dr_ptrn_mgr_destroy()