Lines Matching refs:cls_flower
3 * net/sched/cls_flower.c Flower classifier
427 struct flow_cls_offload cls_flower = {};
429 tc_cls_common_offload_init(&cls_flower.common, tp, f->flags, extack);
430 cls_flower.command = FLOW_CLS_DESTROY;
431 cls_flower.cookie = (unsigned long) f;
433 tc_setup_cb_destroy(block, tp, TC_SETUP_CLSFLOWER, &cls_flower, false,
443 struct flow_cls_offload cls_flower = {};
447 cls_flower.rule = flow_rule_alloc(tcf_exts_num_actions(&f->exts));
448 if (!cls_flower.rule)
451 tc_cls_common_offload_init(&cls_flower.common, tp, f->flags, extack);
452 cls_flower.command = FLOW_CLS_REPLACE;
453 cls_flower.cookie = (unsigned long) f;
454 cls_flower.rule->match.dissector = &f->mask->dissector;
455 cls_flower.rule->match.mask = &f->mask->key;
456 cls_flower.rule->match.key = &f->mkey;
457 cls_flower.classid = f->res.classid;
459 err = tc_setup_flow_action(&cls_flower.rule->action, &f->exts);
461 kfree(cls_flower.rule);
469 err = tc_setup_cb_add(block, tp, TC_SETUP_CLSFLOWER, &cls_flower,
471 tc_cleanup_flow_action(&cls_flower.rule->action);
472 kfree(cls_flower.rule);
489 struct flow_cls_offload cls_flower = {};
491 tc_cls_common_offload_init(&cls_flower.common, tp, f->flags, NULL);
492 cls_flower.command = FLOW_CLS_STATS;
493 cls_flower.cookie = (unsigned long) f;
494 cls_flower.classid = f->res.classid;
496 tc_setup_cb_call(block, TC_SETUP_CLSFLOWER, &cls_flower, false,
499 tcf_exts_stats_update(&f->exts, cls_flower.stats.bytes,
500 cls_flower.stats.pkts,
501 cls_flower.stats.drops,
502 cls_flower.stats.lastused,
503 cls_flower.stats.used_hw_stats,
504 cls_flower.stats.used_hw_stats_valid);
2243 struct flow_cls_offload cls_flower = {};
2254 cls_flower.rule =
2256 if (!cls_flower.rule) {
2261 tc_cls_common_offload_init(&cls_flower.common, tp, f->flags,
2263 cls_flower.command = add ?
2265 cls_flower.cookie = (unsigned long)f;
2266 cls_flower.rule->match.dissector = &f->mask->dissector;
2267 cls_flower.rule->match.mask = &f->mask->key;
2268 cls_flower.rule->match.key = &f->mkey;
2270 err = tc_setup_flow_action(&cls_flower.rule->action, &f->exts);
2272 kfree(cls_flower.rule);
2281 cls_flower.classid = f->res.classid;
2284 TC_SETUP_CLSFLOWER, &cls_flower,
2287 tc_cleanup_flow_action(&cls_flower.rule->action);
2288 kfree(cls_flower.rule);
2303 struct flow_cls_offload *cls_flower = type_data;
2305 (struct cls_fl_filter *) cls_flower->cookie;
2315 struct flow_cls_offload *cls_flower = type_data;
2317 (struct cls_fl_filter *) cls_flower->cookie;
2328 struct flow_cls_offload cls_flower = {};
2331 cls_flower.rule = flow_rule_alloc(0);
2332 if (!cls_flower.rule)
2335 cls_flower.common.chain_index = chain->index;
2336 cls_flower.command = FLOW_CLS_TMPLT_CREATE;
2337 cls_flower.cookie = (unsigned long) tmplt;
2338 cls_flower.rule->match.dissector = &tmplt->dissector;
2339 cls_flower.rule->match.mask = &tmplt->mask;
2340 cls_flower.rule->match.key = &tmplt->dummy_key;
2345 tc_setup_cb_call(block, TC_SETUP_CLSFLOWER, &cls_flower, false, true);
2346 kfree(cls_flower.rule);
2354 struct flow_cls_offload cls_flower = {};
2357 cls_flower.common.chain_index = chain->index;
2358 cls_flower.command = FLOW_CLS_TMPLT_DESTROY;
2359 cls_flower.cookie = (unsigned long) tmplt;
2361 tc_setup_cb_call(block, TC_SETUP_CLSFLOWER, &cls_flower, false, true);