Lines Matching defs:head

317 	struct cls_fl_head *head = rcu_dereference_bh(tp->root);
324 list_for_each_entry_rcu(mask, &head->masks, list) {
353 struct cls_fl_head *head;
355 head = kzalloc(sizeof(*head), GFP_KERNEL);
356 if (!head)
359 spin_lock_init(&head->masks_lock);
360 INIT_LIST_HEAD_RCU(&head->masks);
361 INIT_LIST_HEAD(&head->hw_filters);
362 rcu_assign_pointer(tp->root, head);
363 idr_init(&head->handle_idr);
365 return rhashtable_init(&head->ht, &mask_ht_params);
394 static bool fl_mask_put(struct cls_fl_head *head, struct fl_flow_mask *mask)
399 rhashtable_remove_fast(&head->ht, &mask->ht_node, mask_ht_params);
401 spin_lock(&head->masks_lock);
403 spin_unlock(&head->masks_lock);
525 static struct cls_fl_filter *__fl_get(struct cls_fl_head *head, u32 handle)
530 f = idr_find(&head->handle_idr, handle);
540 struct cls_fl_head *head = rcu_dereference_bh(tp->root);
543 f = idr_find(&head->handle_idr, handle);
551 struct cls_fl_head *head = fl_head_dereference(tp);
564 idr_remove(&head->handle_idr, f->handle);
568 *last = fl_mask_put(head, f->mask);
579 struct cls_fl_head *head = container_of(to_rcu_work(work),
583 rhashtable_destroy(&head->ht);
584 kfree(head);
591 struct cls_fl_head *head = fl_head_dereference(tp);
596 list_for_each_entry_safe(mask, next_mask, &head->masks, list) {
603 idr_destroy(&head->handle_idr);
606 tcf_queue_work(&head->rwork, fl_destroy_sleepable);
618 struct cls_fl_head *head = fl_head_dereference(tp);
620 return __fl_get(head, handle);
2105 static struct fl_flow_mask *fl_create_new_mask(struct cls_fl_head *head,
2132 err = rhashtable_replace_fast(&head->ht, &mask->ht_node,
2137 spin_lock(&head->masks_lock);
2138 list_add_tail_rcu(&newmask->list, &head->masks);
2139 spin_unlock(&head->masks_lock);
2151 static int fl_check_assign_mask(struct cls_fl_head *head,
2165 fnew->mask = rhashtable_lookup_get_insert_fast(&head->ht,
2176 newmask = fl_create_new_mask(head, mask);
2196 rhashtable_remove_fast(&head->ht, &mask->ht_node,
2234 struct cls_fl_head *head = fl_head_dereference(tp);
2293 err = idr_alloc_u32(&head->handle_idr, NULL, &handle,
2296 err = idr_alloc_u32(&head->handle_idr, NULL, &handle,
2359 err = fl_check_assign_mask(head, fnew, fold, mask);
2411 idr_replace(&head->handle_idr, fnew, fnew->handle);
2417 fl_mask_put(head, fold->mask);
2427 idr_replace(&head->handle_idr, fnew, fnew->handle);
2451 fl_mask_put(head, fnew->mask);
2465 idr_remove(&head->handle_idr, fnew->handle);
2482 struct cls_fl_head *head = fl_head_dereference(tp);
2488 *last = list_empty(&head->masks);
2497 struct cls_fl_head *head = fl_head_dereference(tp);
2504 idr_for_each_entry_continue_ul(&head->handle_idr, f, tmp, id) {
2527 struct cls_fl_head *head = fl_head_dereference(tp);
2530 if (list_empty(&head->hw_filters)) {
2536 f = list_entry(&head->hw_filters, struct cls_fl_filter,
2538 list_for_each_entry_continue(f, &head->hw_filters, hw_list) {
2616 struct cls_fl_head *head = fl_head_dereference(tp);
2619 list_add(&f->hw_list, &head->hw_filters);
3628 struct cls_fl_head *head = fl_head_dereference(tp);
3631 tp->deleting = idr_is_empty(&head->handle_idr);