Lines Matching refs:rule

383 	struct prestera_acl_rule *rule;
388 list_for_each_entry(rule, &acl->rules, list) {
389 if (ruleset->ingress != rule->ruleset->ingress)
391 if (ruleset->ht_key.chain_index != rule->chain_index)
394 ruleset->prio.min = min(ruleset->prio.min, rule->priority);
395 ruleset->prio.max = max(ruleset->prio.max, rule->priority);
400 prestera_acl_rule_keymask_pcl_id_set(struct prestera_acl_rule *rule, u16 pcl_id)
402 struct prestera_acl_match *r_match = &rule->re_key.match;
439 struct prestera_acl_rule *rule;
441 rule = kzalloc(sizeof(*rule), GFP_KERNEL);
442 if (!rule)
445 rule->ruleset = ruleset;
446 rule->cookie = cookie;
447 rule->chain_index = chain_index;
451 return rule;
454 void prestera_acl_rule_priority_set(struct prestera_acl_rule *rule,
457 rule->priority = priority;
460 void prestera_acl_rule_destroy(struct prestera_acl_rule *rule)
462 if (rule->jump_ruleset)
464 prestera_acl_ruleset_put(rule->jump_ruleset);
466 prestera_acl_ruleset_put(rule->ruleset);
467 kfree(rule);
478 struct prestera_acl_rule *rule)
481 struct prestera_acl_ruleset *ruleset = rule->ruleset;
484 /* try to add rule to hash table first */
485 err = rhashtable_insert_fast(&ruleset->rule_ht, &rule->ht_node,
490 prestera_acl_rule_keymask_pcl_id_set(rule, ruleset->pcl_id);
491 rule->re_arg.vtcam_id = ruleset->vtcam_id;
492 rule->re_key.prio = rule->priority;
494 rule->re = prestera_acl_rule_entry_find(sw->acl, &rule->re_key);
495 err = WARN_ON(rule->re) ? -EEXIST : 0;
499 rule->re = prestera_acl_rule_entry_create(sw->acl, &rule->re_key,
500 &rule->re_arg);
501 err = !rule->re ? -EINVAL : 0;
514 list_add_tail(&rule->list, &sw->acl->rules);
516 prestera_acl_ruleset_prio_update(ruleset, rule->priority);
520 prestera_acl_rule_entry_destroy(sw->acl, rule->re);
522 rule->re = NULL;
523 rhashtable_remove_fast(&ruleset->rule_ht, &rule->ht_node,
530 struct prestera_acl_rule *rule)
532 struct prestera_acl_ruleset *ruleset = rule->ruleset;
535 rhashtable_remove_fast(&ruleset->rule_ht, &rule->ht_node,
538 list_del(&rule->list);
540 prestera_acl_rule_entry_destroy(sw->acl, rule->re);
549 struct prestera_acl_rule *rule,
557 rule->re->counter.block,
558 rule->re->counter.id,