netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: John Fastabend <john.fastabend@gmail.com>
To: Jamal Hadi Salim <jhs@mojatatu.com>,
	jiri@resnulli.us, amir@vadai.me, davem@davemloft.net
Cc: netdev@vger.kernel.org, jeffrey.t.kirsher@intel.com
Subject: Re: [net-next PATCH v3 3/8] net: sched: add cls_u32 offload hooks for netdevs
Date: Thu, 18 Feb 2016 07:24:02 -0800	[thread overview]
Message-ID: <56C5E212.50505@gmail.com> (raw)
In-Reply-To: <56C5B5A0.7010305@mojatatu.com>

On 16-02-18 04:14 AM, Jamal Hadi Salim wrote:
> On 16-02-17 06:07 PM, John Fastabend wrote:
>> [...]
>>
> 
>> Actually thinking about this a bit more I wrote this thinking
>> that there existed some hardware that actually cared if it was
>> a new rule or an existing rule. For me it doesn't matter I do
>> the same thing in the new/replace cases I just write into the
>> slot on the hardware table and if it happens to have something
>> in it well its overwritten e.g. "replaced". This works because
>> the cls_u32 layer protects us from doing something unexpected.
>>
> 
> You are describing create-or-update which is a reasonable default
> BUT: counting on the user to specify the htid+bktid+nodeid
> for every filter and knowing what that means is prone to mistakes
> when for example (using your big hammer approach right now) they
> dont specify the handle and the kernel creates one for them.
> 
> IMO, it would be better at this early stage to enforce the correct
> behavior for future generations.
> To follow the netlink semantics which a lot of people are already
> trained to think in.
> 
> Current netlink behavior is supposed to be:
> 
> 1) NEW ==> "Create".
> Ambigous - could mean a)"create if it doesnt exist" or b) "fail if it
> exists otherwise create"
> Unfortunately different parts of the kernel often assume some
> default from either #a or #b.
> 

But this is already handled by the core cls_api.c code. We never
get to u32_change if the flags are not correct.

Look at the block right above the op call into the classifiers
change() code in cls_api.c. Starting at line 287.

> 2) NEW|REPLACE flag ==> "Create if it doesnt exist and replace
> if it exists"
> 
> 3)NEW|EXCLUSIVE ==> "Create if it doesnt exist and fail if it
> exists"
> 
> 4)NEW|APPEND ==> "just fscking create; i dont care if it exists".
> 
> IOW, just add the flag field which is intepreted from whatever
> the user explicitly asks for. And reject say what the hardware
> doesnt support.

I think I agree with what your saying but I'm fairly sure this is
working as you describe.

> I have worked with tcams where we support #3. It is a bit inefficient
> because you have to check if a rule exists first. And i have worked
> in cases where #1 is assumed to mean #2 and at times #4. It is better
> user experience to be explicit.

Agreed, and I think it is :)

> 
> cheers,
> jamal

  reply	other threads:[~2016-02-18 15:24 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-17  5:15 [net-next PATCH v3 0/8] tc offload for cls_u32 on ixgbe John Fastabend
2016-02-17  5:16 ` [net-next PATCH v3 1/8] net: rework ndo tc op to consume additional qdisc handle parameter John Fastabend
2016-02-17 10:42   ` Jamal Hadi Salim
2016-02-17  5:16 ` [net-next PATCH v3 2/8] net: rework setup_tc ndo op to consume general tc operand John Fastabend
2016-02-17 10:42   ` Jamal Hadi Salim
2016-02-17  5:17 ` [net-next PATCH v3 3/8] net: sched: add cls_u32 offload hooks for netdevs John Fastabend
2016-02-17  7:02   ` Jiri Pirko
2016-02-17 10:59   ` Jamal Hadi Salim
2016-02-17 14:24     ` John Fastabend
2016-02-17 23:07       ` John Fastabend
2016-02-18  9:23         ` Amir Vadai"
2016-02-19  3:37           ` Simon Horman
2016-02-19  8:16           ` Or Gerlitz
2016-02-18 12:14         ` Jamal Hadi Salim
2016-02-18 15:24           ` John Fastabend [this message]
2016-02-19 12:52             ` Jamal Hadi Salim
2016-02-17  5:17 ` [net-next PATCH v3 4/8] net: add tc offload feature flag John Fastabend
2016-02-17 11:01   ` Jamal Hadi Salim
2016-02-17  5:18 ` [net-next PATCH v3 5/8] net: tc: helper functions to query action types John Fastabend
2016-02-17  7:03   ` Jiri Pirko
2016-02-17 11:02   ` Jamal Hadi Salim
2016-02-17  5:18 ` [net-next PATCH v3 6/8] net: ixgbe: add minimal parser details for ixgbe John Fastabend
2016-02-17 11:06   ` Jamal Hadi Salim
2016-02-17 15:09     ` David Miller
2016-02-17 15:14       ` John Fastabend
2016-02-17 18:01   ` Rustad, Mark D
2016-02-17 22:34     ` John Fastabend
2016-02-17  5:18 ` [net-next PATCH v3 7/8] net: ixgbe: add support for tc_u32 offload John Fastabend
2016-02-17 11:17   ` Jamal Hadi Salim
2016-02-17 11:42     ` Jiri Pirko
2016-02-17 11:47       ` Jamal Hadi Salim
2016-02-17 14:25         ` John Fastabend
2016-02-17  5:19 ` [net-next PATCH v3 8/8] net: ixgbe: abort with cls u32 divisor groups greater than 1 John Fastabend
2016-02-17 14:48 ` [net-next PATCH v3 0/8] tc offload for cls_u32 on ixgbe David Miller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=56C5E212.50505@gmail.com \
    --to=john.fastabend@gmail.com \
    --cc=amir@vadai.me \
    --cc=davem@davemloft.net \
    --cc=jeffrey.t.kirsher@intel.com \
    --cc=jhs@mojatatu.com \
    --cc=jiri@resnulli.us \
    --cc=netdev@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).