Lines Matching defs:rule
681 bool efx_rps_check_rule(struct efx_arfs_rule *rule, unsigned int filter_idx,
684 if (rule->filter_id == EFX_ARFS_FILTER_ID_PENDING) {
688 if (rule->filter_id == EFX_ARFS_FILTER_ID_ERROR) {
690 * of date. Remove the filter and the ARFS rule entry.
692 rule->filter_id = EFX_ARFS_FILTER_ID_REMOVING;
695 } else if (WARN_ON(rule->filter_id != filter_idx)) { /* can't happen */
697 * not mark the rule with EFX_ARFS_FILTER_ID_REMOVING, it will
722 struct efx_arfs_rule *rule;
730 rule = container_of(node, struct efx_arfs_rule, node);
731 if (efx_filter_spec_equal(spec, &rule->spec))
732 return rule;
741 struct efx_arfs_rule *rule;
749 rule = container_of(node, struct efx_arfs_rule, node);
750 if (efx_filter_spec_equal(spec, &rule->spec)) {
752 return rule;
755 rule = kmalloc(sizeof(*rule), GFP_ATOMIC);
757 if (rule) {
758 memcpy(&rule->spec, spec, sizeof(rule->spec));
759 hlist_add_head(&rule->node, head);
761 return rule;
766 struct efx_arfs_rule *rule;
774 rule = container_of(node, struct efx_arfs_rule, node);
775 if (efx_filter_spec_equal(spec, &rule->spec)) {
782 if (rule->filter_id != EFX_ARFS_FILTER_ID_REMOVING)
785 kfree(rule);
864 struct efx_arfs_rule *rule;
874 rule = efx_rps_hash_find(efx, &req->spec);
875 /* The rule might have already gone, if someone else's request
881 if (rule) {
883 rule->filter_id = EFX_ARFS_FILTER_ID_ERROR;
885 rule->filter_id = rc;
886 arfs_id = rule->arfs_id;
948 struct efx_arfs_rule *rule;
1007 rule = efx_rps_hash_add(efx, &req->spec, &new);
1008 if (!rule) {
1013 rule->arfs_id = efx->rps_next_id++ % RPS_NO_FILTER;
1014 rc = rule->arfs_id;
1016 if (!new && rule->rxq_index == rxq_index &&
1017 rule->filter_id >= EFX_ARFS_FILTER_ID_PENDING)
1019 rule->rxq_index = rxq_index;
1020 rule->filter_id = EFX_ARFS_FILTER_ID_PENDING;