Lines Matching defs:pattern

20 	struct mutex modify_hdr_mutex; /* protect the pattern cache */
64 /* Put this pattern in the head of the list,
80 struct mlx5dr_ptrn_obj *pattern;
97 pattern = kzalloc(sizeof(*pattern), GFP_KERNEL);
98 if (!pattern)
101 pattern->data = kzalloc(num_of_actions * DR_MODIFY_ACTION_SIZE *
102 sizeof(*pattern->data), GFP_KERNEL);
103 if (!pattern->data)
106 memcpy(pattern->data, data, num_of_actions * DR_MODIFY_ACTION_SIZE);
107 pattern->chunk = chunk;
108 pattern->index = index;
109 pattern->num_of_actions = num_of_actions;
111 list_add(&pattern->list, &mgr->ptrn_list);
112 refcount_set(&pattern->refcount, 1);
114 return pattern;
117 kfree(pattern);
124 dr_ptrn_free_pattern(struct mlx5dr_ptrn_obj *pattern)
126 list_del(&pattern->list);
127 mlx5dr_icm_free_chunk(pattern->chunk);
128 kfree(pattern->data);
129 kfree(pattern);
137 struct mlx5dr_ptrn_obj *pattern;
143 pattern = dr_ptrn_find_cached_pattern(mgr,
146 if (!pattern) {
147 /* Alloc and add new pattern to cache */
148 pattern = dr_ptrn_alloc_pattern(mgr, num_of_actions, data);
149 if (!pattern)
152 hw_actions = (u64 *)pattern->data;
153 /* Here we mask the pattern data to create a valid pattern
154 * since we do an OR operation between the arg and pattern
165 if (mlx5dr_send_postsend_pattern(mgr->dmn, pattern->chunk,
166 num_of_actions, pattern->data)) {
167 refcount_dec(&pattern->refcount);
171 refcount_inc(&pattern->refcount);
176 return pattern;
179 dr_ptrn_free_pattern(pattern);
187 struct mlx5dr_ptrn_obj *pattern)
191 if (refcount_dec_and_test(&pattern->refcount))
192 dr_ptrn_free_pattern(pattern);
211 mlx5dr_err(dmn, "Couldn't get modify-header-pattern memory\n");
227 struct mlx5dr_ptrn_obj *pattern;
235 list_for_each_entry_safe(pattern, tmp, &mgr->ptrn_list, list) {
236 list_del(&pattern->list);
237 kfree(pattern->data);
238 kfree(pattern);