Lines Matching defs:head

309 	struct cls_fl_head *head = rcu_dereference_bh(tp->root);
314 list_for_each_entry_rcu(mask, &head->masks, list) {
341 struct cls_fl_head *head;
343 head = kzalloc(sizeof(*head), GFP_KERNEL);
344 if (!head)
347 spin_lock_init(&head->masks_lock);
348 INIT_LIST_HEAD_RCU(&head->masks);
349 INIT_LIST_HEAD(&head->hw_filters);
350 rcu_assign_pointer(tp->root, head);
351 idr_init(&head->handle_idr);
353 return rhashtable_init(&head->ht, &mask_ht_params);
382 static bool fl_mask_put(struct cls_fl_head *head, struct fl_flow_mask *mask)
387 rhashtable_remove_fast(&head->ht, &mask->ht_node, mask_ht_params);
389 spin_lock(&head->masks_lock);
391 spin_unlock(&head->masks_lock);
518 static struct cls_fl_filter *__fl_get(struct cls_fl_head *head, u32 handle)
523 f = idr_find(&head->handle_idr, handle);
535 struct cls_fl_head *head = fl_head_dereference(tp);
548 idr_remove(&head->handle_idr, f->handle);
552 *last = fl_mask_put(head, f->mask);
563 struct cls_fl_head *head = container_of(to_rcu_work(work),
567 rhashtable_destroy(&head->ht);
568 kfree(head);
575 struct cls_fl_head *head = fl_head_dereference(tp);
580 list_for_each_entry_safe(mask, next_mask, &head->masks, list) {
587 idr_destroy(&head->handle_idr);
590 tcf_queue_work(&head->rwork, fl_destroy_sleepable);
602 struct cls_fl_head *head = fl_head_dereference(tp);
604 return __fl_get(head, handle);
1821 static struct fl_flow_mask *fl_create_new_mask(struct cls_fl_head *head,
1848 err = rhashtable_replace_fast(&head->ht, &mask->ht_node,
1853 spin_lock(&head->masks_lock);
1854 list_add_tail_rcu(&newmask->list, &head->masks);
1855 spin_unlock(&head->masks_lock);
1867 static int fl_check_assign_mask(struct cls_fl_head *head,
1881 fnew->mask = rhashtable_lookup_get_insert_fast(&head->ht,
1892 newmask = fl_create_new_mask(head, mask);
1912 rhashtable_remove_fast(&head->ht, &mask->ht_node,
1983 struct cls_fl_head *head = fl_head_dereference(tp);
2044 err = fl_check_assign_mask(head, fnew, fold, mask);
2096 idr_replace(&head->handle_idr, fnew, fnew->handle);
2102 fl_mask_put(head, fold->mask);
2114 err = idr_alloc_u32(&head->handle_idr, fnew, &handle,
2127 err = idr_alloc_u32(&head->handle_idr, fnew, &handle,
2156 fl_mask_put(head, fnew->mask);
2172 struct cls_fl_head *head = fl_head_dereference(tp);
2178 *last = list_empty(&head->masks);
2187 struct cls_fl_head *head = fl_head_dereference(tp);
2194 idr_for_each_entry_continue_ul(&head->handle_idr, f, tmp, id) {
2217 struct cls_fl_head *head = fl_head_dereference(tp);
2220 if (list_empty(&head->hw_filters)) {
2226 f = list_entry(&head->hw_filters, struct cls_fl_filter,
2228 list_for_each_entry_continue(f, &head->hw_filters, hw_list) {
2306 struct cls_fl_head *head = fl_head_dereference(tp);
2309 list_add(&f->hw_list, &head->hw_filters);
3194 struct cls_fl_head *head = fl_head_dereference(tp);
3197 tp->deleting = idr_is_empty(&head->handle_idr);