Following a bug report about vhost-user port traffic with a vxlan tunnel
being dropped, I relooked at the offloading code to see how we could
switch to the non legacy offload flags mode in the vhost-user libary.

As I dug into this, and with Ilya recent comment (on switching to an
inner offload API) in mind, I wrote this series.

The result seems promising in terms of code.
I did no extensive performance testing yet, but I would expect either
similar performance (or maybe better performance for non offloaded
traffic, as a number of branches are removed in the flow extraction
code).


Mike recently posted a patch for removing the csum_start/csum_offset
netdev-linux for which I also had a patch, but since it had some
implications on the handling of inner checksums, I ended up including my
version for now.


There is still one extra step that is left for a future revision:
eliminate last if (tunnel) in miniflow_extract().


Comments?


-- 
David Marchand

Changes since v3:
- moved testing on L4 partial status earlier in the series,
- added intermediate fix (and unit test) on parse_tcp_flags(),

Changes since v2:
- fixed (non DPDK) build between patches,

Changes since v1:
- added coverage for IP/L4 checksums,
- fixed existing problems in conntrack, ipf and netdev-native-tnl
  checksum validations and added coverage,
- fixed packet_expand IP checksum,
- fixed tunnel decapsulation L3/L4 checksum validation,
- fixed ipf checksum L3 validation,
- added checksum resolution in conntrack, ipf and tunnel decapsulation,


David Marchand (19):
  flow: Fix bad IP checksum flag.
  dpif-netdev: Enhance checksum coverage.
  ipf: Consider checksum only for fragmented packets.
  conntrack: Do not validate already checked checksum.
  conntrack: Fix embedded checksums in ICMP errors.
  netdev-native-tnl: Do not validate already checked checksum.
  flow: Fix checksum offloads with simple match.
  netdev-linux: Fix offloads for IPv6 UDP packets.
  dp-packet: Remove Linux specific L4 offloads.
  dp-packet: Remove DPDK specific IP version.
  dp-packet: Add OVS offloading API.
  dp-packet: Expand offloads preparation helper.
  dp-packet: Rework tunnel offloads.
  dp-packet: Rework IP checksum offloads.
  dp-packet: Rework L4 checksum offloads.
  dp-packet: Resolve unknown checksums.
  dp-packet: Rework TCP segmentation.
  dp-packet: Remove direct access to DPDK offloads.
  netdev-dpdk: Stop relying on vhost-user Tx flags.

 .../topics/userspace-checksum-offloading.rst  |   31 +-
 lib/conntrack.c                               |  152 ++-
 lib/dp-packet-gso.c                           |   52 +-
 lib/dp-packet.c                               |  132 +-
 lib/dp-packet.h                               |  688 ++++------
 lib/dpif-netdev-extract-avx512.c              |   62 +-
 lib/flow.c                                    |   72 +-
 lib/ipf.c                                     |   27 +-
 lib/netdev-dpdk.c                             |  171 ++-
 lib/netdev-dummy.c                            |  171 ++-
 lib/netdev-linux.c                            |  188 +--
 lib/netdev-native-tnl.c                       |  146 +-
 lib/netdev-native-tnl.h                       |    3 -
 lib/netdev.c                                  |   24 +-
 lib/odp-execute-avx512.c                      |   20 +-
 lib/odp-execute.c                             |    8 +-
 lib/packets.c                                 |   95 +-
 tests/dpif-netdev.at                          | 1212 ++++++++++++++++-
 tests/tunnel-push-pop-ipv6.at                 |   30 +-
 tests/tunnel-push-pop.at                      |   86 +-
 20 files changed, 2246 insertions(+), 1124 deletions(-)

-- 
2.48.1

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to