All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pablo Neira Ayuso <pablo@netfilter.org>
To: Jakub Kicinski <jakub.kicinski@netronome.com>
Cc: netfilter-devel@vger.kernel.org, davem@davemloft.net,
	netdev@vger.kernel.org, vishal@chelsio.com, saeedm@mellanox.com,
	jiri@resnulli.us
Subject: Re: [PATCH 0/4 net-next] flow_offload: update mangle action representation
Date: Fri, 30 Aug 2019 11:07:10 +0200	[thread overview]
Message-ID: <20190830090710.g7q2chf3qulfs5e4@salvia> (raw)
In-Reply-To: <20190829185448.0b502af8@cakuba.netronome.com>

On Thu, Aug 29, 2019 at 06:54:48PM -0700, Jakub Kicinski wrote:
> On Fri, 30 Aug 2019 02:53:32 +0200, Pablo Neira Ayuso wrote:
> > * Offsets do not need to be on the 32-bits boundaries anymore. This
> >   patchset adds front-end code to adjust the offset and length coming
> >   from the tc pedit representation, so drivers get an exact header field
> >   offset and length.
> 
> But drivers use offsetof(start of field) to match headers, and I don't
> see you changing that. So how does this work then?

Drivers can only use offsetof() for fields that are on the 32-bits
boundary.

Before this patchset, if you want to mangle the destination port, then
the driver needs to refer to the source port offset and the length is
4 bytes, so the mask is telling what needs to be mangled.

After this patchset, the offset is set to the destination port, the
length is set to 2-bytes, and the mask is telling what bytes of the
destination port field you specifically want to update.

It's just 100 LOC of preprocessing that is simplifying driver
codebase.

> Say - I want to change the second byte of an IPv4 address.

Then, the front-end sets the offset to IPv4 address header field, and
the mask tells what to update.

> > * The front-end coalesces consecutive pedit actions into one single
> >   word, so drivers can mangle IPv6 and ethernet address fields in one
> >   single go.
> 
> You still only coalesce up to 16 bytes, no?

You only have to rise FLOW_ACTION_MANGLE_MAXLEN coming in this patch
if you need more. I don't know of any packet field larger than 16
bytes. If there is a use-case for this, it should be easy to rise that
definition.

> As I said previously drivers will continue to implement mangle action
> merge code if that's the case. It'd be nice if core did the coalescing,
> and mark down first and last action, in case there is a setup cost for
> rewrite group.

In this patchset, the core front-end is doing the coalescing.

  reply	other threads:[~2019-08-30  9:07 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-30  0:53 [PATCH 0/4 net-next] flow_offload: update mangle action representation Pablo Neira Ayuso
2019-08-30  0:53 ` [PATCH net-next 1/4] net: flow_offload: flip mangle action mask Pablo Neira Ayuso
2019-08-30  0:53 ` [PATCH net-next 2/4] net: flow_offload: bitwise AND on mangle action value field Pablo Neira Ayuso
2019-08-30  0:53 ` [PATCH net-next 3/4] net: flow_offload: mangle action at byte level Pablo Neira Ayuso
2019-08-30 15:28   ` Vlad Buslov
2019-08-30  0:53 ` [PATCH net-next 4/4] netfilter: nft_payload: packet mangling offload support Pablo Neira Ayuso
2019-08-30  1:54 ` [PATCH 0/4 net-next] flow_offload: update mangle action representation Jakub Kicinski
2019-08-30  9:07   ` Pablo Neira Ayuso [this message]
2019-08-30 22:33     ` Jakub Kicinski
2019-08-31 14:22       ` Pablo Neira Ayuso
2019-09-01 20:47         ` Jakub Kicinski
2019-09-03  0:05           ` Pablo Neira Ayuso

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=20190830090710.g7q2chf3qulfs5e4@salvia \
    --to=pablo@netfilter.org \
    --cc=davem@davemloft.net \
    --cc=jakub.kicinski@netronome.com \
    --cc=jiri@resnulli.us \
    --cc=netdev@vger.kernel.org \
    --cc=netfilter-devel@vger.kernel.org \
    --cc=saeedm@mellanox.com \
    --cc=vishal@chelsio.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.