Lines Matching refs:cls_flower

3  * net/sched/cls_flower.c		Flower classifier
441 struct flow_cls_offload cls_flower = {};
443 tc_cls_common_offload_init(&cls_flower.common, tp, f->flags, extack);
444 cls_flower.command = FLOW_CLS_DESTROY;
445 cls_flower.cookie = (unsigned long) f;
447 tc_setup_cb_destroy(block, tp, TC_SETUP_CLSFLOWER, &cls_flower, false,
457 struct flow_cls_offload cls_flower = {};
461 cls_flower.rule = flow_rule_alloc(tcf_exts_num_actions(&f->exts));
462 if (!cls_flower.rule)
465 tc_cls_common_offload_init(&cls_flower.common, tp, f->flags, extack);
466 cls_flower.command = FLOW_CLS_REPLACE;
467 cls_flower.cookie = (unsigned long) f;
468 cls_flower.rule->match.dissector = &f->mask->dissector;
469 cls_flower.rule->match.mask = &f->mask->key;
470 cls_flower.rule->match.key = &f->mkey;
471 cls_flower.classid = f->res.classid;
473 err = tc_setup_offload_action(&cls_flower.rule->action, &f->exts,
474 cls_flower.common.extack);
476 kfree(cls_flower.rule);
481 err = tc_setup_cb_add(block, tp, TC_SETUP_CLSFLOWER, &cls_flower,
483 tc_cleanup_offload_action(&cls_flower.rule->action);
484 kfree(cls_flower.rule);
501 struct flow_cls_offload cls_flower = {};
503 tc_cls_common_offload_init(&cls_flower.common, tp, f->flags, NULL);
504 cls_flower.command = FLOW_CLS_STATS;
505 cls_flower.cookie = (unsigned long) f;
506 cls_flower.classid = f->res.classid;
508 tc_setup_cb_call(block, TC_SETUP_CLSFLOWER, &cls_flower, false,
511 tcf_exts_hw_stats_update(&f->exts, &cls_flower.stats, cls_flower.use_act_stats);
2553 struct flow_cls_offload cls_flower = {};
2564 cls_flower.rule =
2566 if (!cls_flower.rule) {
2571 tc_cls_common_offload_init(&cls_flower.common, tp, f->flags,
2573 cls_flower.command = add ?
2575 cls_flower.cookie = (unsigned long)f;
2576 cls_flower.rule->match.dissector = &f->mask->dissector;
2577 cls_flower.rule->match.mask = &f->mask->key;
2578 cls_flower.rule->match.key = &f->mkey;
2580 err = tc_setup_offload_action(&cls_flower.rule->action, &f->exts,
2581 cls_flower.common.extack);
2583 kfree(cls_flower.rule);
2591 cls_flower.classid = f->res.classid;
2594 TC_SETUP_CLSFLOWER, &cls_flower,
2597 tc_cleanup_offload_action(&cls_flower.rule->action);
2598 kfree(cls_flower.rule);
2613 struct flow_cls_offload *cls_flower = type_data;
2615 (struct cls_fl_filter *) cls_flower->cookie;
2625 struct flow_cls_offload *cls_flower = type_data;
2627 (struct cls_fl_filter *) cls_flower->cookie;
2638 struct flow_cls_offload cls_flower = {};
2641 cls_flower.rule = flow_rule_alloc(0);
2642 if (!cls_flower.rule)
2645 cls_flower.common.chain_index = chain->index;
2646 cls_flower.command = FLOW_CLS_TMPLT_CREATE;
2647 cls_flower.cookie = (unsigned long) tmplt;
2648 cls_flower.rule->match.dissector = &tmplt->dissector;
2649 cls_flower.rule->match.mask = &tmplt->mask;
2650 cls_flower.rule->match.key = &tmplt->dummy_key;
2655 tc_setup_cb_call(block, TC_SETUP_CLSFLOWER, &cls_flower, false, true);
2656 kfree(cls_flower.rule);
2664 struct flow_cls_offload cls_flower = {};
2667 cls_flower.common.chain_index = chain->index;
2668 cls_flower.command = FLOW_CLS_TMPLT_DESTROY;
2669 cls_flower.cookie = (unsigned long) tmplt;
2671 tc_setup_cb_call(block, TC_SETUP_CLSFLOWER, &cls_flower, false, true);
2731 struct flow_cls_offload cls_flower = {};
2733 cls_flower.rule = flow_rule_alloc(0);
2734 if (!cls_flower.rule)
2737 cls_flower.common.chain_index = chain->index;
2738 cls_flower.command = add ? FLOW_CLS_TMPLT_CREATE :
2740 cls_flower.cookie = (unsigned long) tmplt;
2741 cls_flower.rule->match.dissector = &tmplt->dissector;
2742 cls_flower.rule->match.mask = &tmplt->mask;
2743 cls_flower.rule->match.key = &tmplt->dummy_key;
2745 cb(TC_SETUP_CLSFLOWER, &cls_flower, cb_priv);
2746 kfree(cls_flower.rule);