Lines Matching refs:f
83 struct tcindex_filter_result *f = p->perfect + key; in tcindex_lookup() local
85 return tcindex_filter_is_set(f) ? f : NULL; in tcindex_lookup()
88 struct tcindex_filter *f; in tcindex_lookup() local
91 for (f = rcu_dereference_bh_rtnl(*fp); in tcindex_lookup()
92 f; in tcindex_lookup()
93 fp = &f->next, f = rcu_dereference_bh_rtnl(*fp)) in tcindex_lookup()
94 if (f->key == key) in tcindex_lookup()
95 return &f->result; in tcindex_lookup()
106 struct tcindex_filter_result *f; in tcindex_classify() local
112 f = tcindex_lookup(p, key); in tcindex_classify()
113 if (!f) { in tcindex_classify()
123 *res = f->res; in tcindex_classify()
126 return tcf_exts_exec(skb, &f->exts, res); in tcindex_classify()
179 static void __tcindex_destroy_fexts(struct tcindex_filter *f) in __tcindex_destroy_fexts() argument
181 tcf_exts_destroy(&f->result.exts); in __tcindex_destroy_fexts()
182 tcf_exts_put_net(&f->result.exts); in __tcindex_destroy_fexts()
183 kfree(f); in __tcindex_destroy_fexts()
188 struct tcindex_filter *f = container_of(to_rcu_work(work), in tcindex_destroy_fexts_work() local
193 __tcindex_destroy_fexts(f); in tcindex_destroy_fexts_work()
203 struct tcindex_filter *f = NULL; in tcindex_delete() local
214 for (f = rtnl_dereference(*walk); f; in tcindex_delete()
215 walk = &f->next, f = rtnl_dereference(*walk)) { in tcindex_delete()
216 if (&f->result == r) in tcindex_delete()
223 rcu_assign_pointer(*walk, rtnl_dereference(f->next)); in tcindex_delete()
230 if (f) { in tcindex_delete()
231 if (tcf_exts_get_net(&f->result.exts)) in tcindex_delete()
232 tcf_queue_work(&f->rwork, tcindex_destroy_fexts_work); in tcindex_delete()
234 __tcindex_destroy_fexts(f); in tcindex_delete()
337 struct tcindex_filter *f = NULL; /* make gcc behave */ in tcindex_set_parms() local
464 f = kzalloc(sizeof(*f), GFP_KERNEL); in tcindex_set_parms()
465 if (!f) in tcindex_set_parms()
467 f->key = handle; in tcindex_set_parms()
468 f->next = NULL; in tcindex_set_parms()
469 err = tcindex_filter_result_init(&f->result, cp, net); in tcindex_set_parms()
471 kfree(f); in tcindex_set_parms()
484 kfree(f); in tcindex_set_parms()
499 f->result.res = r->res; in tcindex_set_parms()
500 tcf_exts_change(&f->result.exts, &r->exts); in tcindex_set_parms()
508 rcu_assign_pointer(*fp, f); in tcindex_set_parms()
561 struct tcindex_filter *f, *next; in tcindex_walk() local
581 for (f = rtnl_dereference(p->h[i]); f; f = next) { in tcindex_walk()
582 next = rtnl_dereference(f->next); in tcindex_walk()
584 if (walker->fn(tp, &f->result, walker) < 0) { in tcindex_walk()
624 struct tcindex_filter *f, *next; in tcindex_destroy() local
627 for (f = rtnl_dereference(p->h[i]); f; f = next) { in tcindex_destroy()
628 next = rtnl_dereference(f->next); in tcindex_destroy()
629 tcindex_delete(tp, &f->result, &last, rtnl_held, NULL); in tcindex_destroy()
664 struct tcindex_filter *f; in tcindex_dump() local
671 for (f = rtnl_dereference(*fp); in tcindex_dump()
672 !t->tcm_handle && f; in tcindex_dump()
673 fp = &f->next, f = rtnl_dereference(*fp)) { in tcindex_dump()
674 if (&f->result == r) in tcindex_dump()
675 t->tcm_handle = f->key; in tcindex_dump()