Lines Matching refs:f

299 	struct flow_filter *f;  in flow_classify()  local
305 list_for_each_entry_rcu(f, &head->filters, list) { in flow_classify()
309 if (!tcf_em_tree_match(skb, &f->ematches, NULL)) in flow_classify()
312 keymask = f->keymask; in flow_classify()
316 for (n = 0; n < f->nkeys; n++) { in flow_classify()
322 if (f->mode == FLOW_MODE_HASH) in flow_classify()
323 classid = jhash2(keys, f->nkeys, f->hashrnd); in flow_classify()
326 classid = (classid & f->mask) ^ f->xor; in flow_classify()
327 classid = (classid >> f->rshift) + f->addend; in flow_classify()
330 if (f->divisor) in flow_classify()
331 classid %= f->divisor; in flow_classify()
334 res->classid = TC_H_MAKE(f->baseclass, f->baseclass + classid); in flow_classify()
336 r = tcf_exts_exec(skb, &f->exts, res); in flow_classify()
346 struct flow_filter *f = from_timer(f, t, perturb_timer); in flow_perturbation() local
348 get_random_bytes(&f->hashrnd, 4); in flow_perturbation()
349 if (f->perturb_period) in flow_perturbation()
350 mod_timer(&f->perturb_timer, jiffies + f->perturb_period); in flow_perturbation()
368 static void __flow_destroy_filter(struct flow_filter *f) in __flow_destroy_filter() argument
370 del_timer_sync(&f->perturb_timer); in __flow_destroy_filter()
371 tcf_exts_destroy(&f->exts); in __flow_destroy_filter()
372 tcf_em_tree_destroy(&f->ematches); in __flow_destroy_filter()
373 tcf_exts_put_net(&f->exts); in __flow_destroy_filter()
374 kfree(f); in __flow_destroy_filter()
379 struct flow_filter *f = container_of(to_rcu_work(work), in flow_destroy_filter_work() local
383 __flow_destroy_filter(f); in flow_destroy_filter_work()
570 struct flow_filter *f = arg; in flow_delete() local
572 list_del_rcu(&f->list); in flow_delete()
573 tcf_exts_get_net(&f->exts); in flow_delete()
574 tcf_queue_work(&f->rwork, flow_destroy_filter_work); in flow_delete()
595 struct flow_filter *f, *next; in flow_destroy() local
597 list_for_each_entry_safe(f, next, &head->filters, list) { in flow_destroy()
598 list_del_rcu(&f->list); in flow_destroy()
599 if (tcf_exts_get_net(&f->exts)) in flow_destroy()
600 tcf_queue_work(&f->rwork, flow_destroy_filter_work); in flow_destroy()
602 __flow_destroy_filter(f); in flow_destroy()
610 struct flow_filter *f; in flow_get() local
612 list_for_each_entry(f, &head->filters, list) in flow_get()
613 if (f->handle == handle) in flow_get()
614 return f; in flow_get()
621 struct flow_filter *f = fh; in flow_dump() local
624 if (f == NULL) in flow_dump()
627 t->tcm_handle = f->handle; in flow_dump()
633 if (nla_put_u32(skb, TCA_FLOW_KEYS, f->keymask) || in flow_dump()
634 nla_put_u32(skb, TCA_FLOW_MODE, f->mode)) in flow_dump()
637 if (f->mask != ~0 || f->xor != 0) { in flow_dump()
638 if (nla_put_u32(skb, TCA_FLOW_MASK, f->mask) || in flow_dump()
639 nla_put_u32(skb, TCA_FLOW_XOR, f->xor)) in flow_dump()
642 if (f->rshift && in flow_dump()
643 nla_put_u32(skb, TCA_FLOW_RSHIFT, f->rshift)) in flow_dump()
645 if (f->addend && in flow_dump()
646 nla_put_u32(skb, TCA_FLOW_ADDEND, f->addend)) in flow_dump()
649 if (f->divisor && in flow_dump()
650 nla_put_u32(skb, TCA_FLOW_DIVISOR, f->divisor)) in flow_dump()
652 if (f->baseclass && in flow_dump()
653 nla_put_u32(skb, TCA_FLOW_BASECLASS, f->baseclass)) in flow_dump()
656 if (f->perturb_period && in flow_dump()
657 nla_put_u32(skb, TCA_FLOW_PERTURB, f->perturb_period / HZ)) in flow_dump()
660 if (tcf_exts_dump(skb, &f->exts) < 0) in flow_dump()
663 if (f->ematches.hdr.nmatches && in flow_dump()
664 tcf_em_tree_dump(skb, &f->ematches, TCA_FLOW_EMATCHES) < 0) in flow_dump()
669 if (tcf_exts_dump_stats(skb, &f->exts) < 0) in flow_dump()
683 struct flow_filter *f; in flow_walk() local
685 list_for_each_entry(f, &head->filters, list) { in flow_walk()
688 if (arg->fn(tp, f, arg) < 0) { in flow_walk()