Lines Matching refs:rule
694 bool efx_rps_check_rule(struct efx_arfs_rule *rule, unsigned int filter_idx,
697 if (rule->filter_id == EFX_ARFS_FILTER_ID_PENDING) {
701 if (rule->filter_id == EFX_ARFS_FILTER_ID_ERROR) {
703 * of date. Remove the filter and the ARFS rule entry.
705 rule->filter_id = EFX_ARFS_FILTER_ID_REMOVING;
708 } else if (WARN_ON(rule->filter_id != filter_idx)) { /* can't happen */
710 * not mark the rule with EFX_ARFS_FILTER_ID_REMOVING, it will
735 struct efx_arfs_rule *rule;
743 rule = container_of(node, struct efx_arfs_rule, node);
744 if (efx_filter_spec_equal(spec, &rule->spec))
745 return rule;
754 struct efx_arfs_rule *rule;
762 rule = container_of(node, struct efx_arfs_rule, node);
763 if (efx_filter_spec_equal(spec, &rule->spec)) {
765 return rule;
768 rule = kmalloc(sizeof(*rule), GFP_ATOMIC);
770 if (rule) {
771 memcpy(&rule->spec, spec, sizeof(rule->spec));
772 hlist_add_head(&rule->node, head);
774 return rule;
779 struct efx_arfs_rule *rule;
787 rule = container_of(node, struct efx_arfs_rule, node);
788 if (efx_filter_spec_equal(spec, &rule->spec)) {
795 if (rule->filter_id != EFX_ARFS_FILTER_ID_REMOVING)
798 kfree(rule);
881 struct efx_arfs_rule *rule;
891 rule = efx_rps_hash_find(efx, &req->spec);
892 /* The rule might have already gone, if someone else's request
898 if (rule) {
900 rule->filter_id = EFX_ARFS_FILTER_ID_ERROR;
902 rule->filter_id = rc;
903 arfs_id = rule->arfs_id;
965 struct efx_arfs_rule *rule;
1024 rule = efx_rps_hash_add(efx, &req->spec, &new);
1025 if (!rule) {
1030 rule->arfs_id = efx->rps_next_id++ % RPS_NO_FILTER;
1031 rc = rule->arfs_id;
1033 if (!new && rule->rxq_index == rxq_index &&
1034 rule->filter_id >= EFX_ARFS_FILTER_ID_PENDING)
1036 rule->rxq_index = rxq_index;
1037 rule->filter_id = EFX_ARFS_FILTER_ID_PENDING;