[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20150108150134.GB1898@nanopsycho.orion>
Date: Thu, 8 Jan 2015 16:01:36 +0100
From: Jiri Pirko <jiri@...nulli.us>
To: Hannes Frederic Sowa <hannes@...hat.com>
Cc: netdev@...r.kernel.org, davem@...emloft.net, jhs@...atatu.com,
stephen@...workplumber.org
Subject: Re: [patch net-next] tc: add BPF based action
Thu, Jan 08, 2015 at 03:55:37PM CET, hannes@...hat.com wrote:
>On Mi, 2015-01-07 at 17:43 +0100, Jiri Pirko wrote:
>> +static int tcf_bpf(struct sk_buff *skb, const struct tc_action *a,
>> + struct tcf_result *res)
>> +{
>> + struct tcf_bpf *b = a->priv;
>> + int action;
>> + int filter_res;
>> +
>> + spin_lock(&b->tcf_lock);
>> + b->tcf_tm.lastuse = jiffies;
>> + bstats_update(&b->tcf_bstats, skb);
>> + action = b->tcf_action;
>> +
>> + filter_res = BPF_PROG_RUN(b->filter, skb);
>> + if (filter_res == -1)
>> + goto drop;
>> +
>> + goto unlock;
>> +
>> +drop:
>> + action = TC_ACT_SHOT;
>> + b->tcf_qstats.drops++;
>> +unlock:
>> + spin_unlock(&b->tcf_lock);
>> + return action;
>> +}
>
>In theory this could be like:
>
>filter_res = BPF_PROG_RUN(b->filter, skb);
>
>spin_lock(&b->tcf_lock);
><update stats...>
>
>if (filter_res == -1)
> goto drop;
>
>action = b->tcf_action;
>...
>
>to keep BPF_PROG_RUN out of the spin_lock?
Okay. That makes sense. Will include this change into v2.
Thanks.
>
>Bye,
>Hannes
>
>
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists