From: Tom Herbert <tom@quantonium.net>
To: davem@davemloft.net
Cc: netdev@vger.kernel.org, rohit@quantonium.net,
Tom Herbert <tom@quantonium.net>
Subject: [PATCH v3 net-next 0/8] flow_dissector: Protocol specific flow dissector offload
Date: Thu, 28 Sep 2017 14:46:53 -0700 [thread overview]
Message-ID: <20170928214701.31458-1-tom@quantonium.net> (raw)
This patch set adds a new offload type to perform flow dissection for
specific protocols (either by EtherType or by IP protocol). This is
primary useful to crack open UDP encapsulations (like VXLAN, GUE) for
the purposes of parsing the encapsulated packet.
Items in this patch set:
- Create new protocol case in __skb_dissect for ETH_P_TEB. This is based
on the code in the GRE dissect function and the special handling in
GRE can now be removed (it sets protocol to ETH_P_TEB and returns so
goto proto_again is done)
- Add infrastructure for protocol specific flow dissection offload
- Add infrastructure to perform UDP flow dissection. Uses same model of
GRO where a flow_dissect callback can be associated with a UDP
socket
- Use the infrastructure to support flow dissection of VXLAN and GUE
Tested:
Forced RPS to call flow dissection for VXLAN, FOU, and GUE. Observed
that inner packet was being properly dissected.
v2: Add signed off
v3:
- Make skb argument of flow dissector to be non const
- Change UDP GRO to only do something if encap_needed static
key is set
- don't reference inet6_offloads or inet_offloads, get to
them through ptype
Tom Herbert (8):
flow_dissector: Change skbuf argument to be non const
flow_dissector: Move ETH_P_TEB processing to main switch
udp: Check static key udp_encap_needed in udp_gro_receive
flow_dissector: Add protocol specific flow dissection offload
ip: Add callbacks to flow dissection by IP protocol
udp: flow dissector offload
fou: Support flow dissection
vxlan: support flow dissect
drivers/net/vxlan.c | 40 +++++++++++++++++++++++++
include/linux/netdevice.h | 27 +++++++++++++++++
include/linux/skbuff.h | 12 ++++----
include/linux/udp.h | 8 +++++
include/net/flow_dissector.h | 1 +
include/net/ip_fib.h | 4 +--
include/net/route.h | 4 +--
include/net/udp.h | 10 +++++++
include/net/udp_tunnel.h | 8 +++++
net/core/dev.c | 65 ++++++++++++++++++++++++++++++++++++++++
net/core/flow_dissector.c | 71 +++++++++++++++++++++++++++-----------------
net/ipv4/af_inet.c | 27 +++++++++++++++++
net/ipv4/fib_semantics.c | 2 +-
net/ipv4/fou.c | 63 +++++++++++++++++++++++++++++++++++++++
net/ipv4/route.c | 10 ++++---
net/ipv4/udp.c | 4 ++-
net/ipv4/udp_offload.c | 55 ++++++++++++++++++++++++++++++++++
net/ipv4/udp_tunnel.c | 1 +
net/ipv6/ip6_offload.c | 27 +++++++++++++++++
net/ipv6/udp_offload.c | 23 ++++++++++++++
net/sched/sch_sfq.c | 2 +-
21 files changed, 419 insertions(+), 45 deletions(-)
--
2.11.0
reply other threads:[~2017-09-28 21:47 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=20170928214701.31458-1-tom@quantonium.net \
--to=tom@quantonium.net \
--cc=davem@davemloft.net \
--cc=netdev@vger.kernel.org \
--cc=rohit@quantonium.net \
/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.