This patch set is a stripped down subset of the initial 17 patchset introduced
by Flavio Leitner in 2021.

The initial omnibus patchset was very complex and included a refactor, which
stymied review and would have made backporting more complex. It also didn't
resolve an ongoing issue with the DPDK netdev where we are currently
incorrectly setting vhost flags, resulting in connectivity inturruptions when
upgrading OVS to the full TSO patchset without restarting the attached virtual
machines.

The current 4-patch set is stripped down to include the following:

 1. Public facing documentation on the phylosophy of how OVS handles checksums
 2. A method for the user to easily check which checksums are offloaded per
    interface
 3 & 4. Most checksuming activity delayed until a packet is about to be:
   - sent, or
   - transformed in such a way that checksumming wouldn't be offloadable
     regardless, such as encapsulation

The main benefit of this set in its current state is an improved handling of
checksums when encapsulating packets. But the set lays a groundwork for future
work including improvements to how dpdk negotiates virtio vhost flags and more
efficent handling of checksums in userspace with tso.

This 4-patch reduced set has gone through a lot of revisions so far, including:

v5
 - Refactor was mostly removed, except for valid->good
 - Reset unsupported offload flags in send_prepare
 - Moved send_prepare from process_upcall to netdev_upcall

v6
 - Re-added tests that were incorrectly excluded from v5

v7
 - David Marchand found an issue while upgrading OVS and not rebooting attached
   vhost VMs where we can't change flags post negotiation or check if they have
   already been set.
 - This was temporarily resolved by not setting the offending flags
 - This issue will be addressed in a more robust fasion if this patchset is
   applied.

v8
 - v7 patch 3 failed intel ci, moved some code from patch 4 to patch 3

v9
 - Resolved a 10% performance hit in a DPDK-PVP workload that David Marchand
   found

v10
 - Large amount of formatting and grammar issues
 - Ported change to AVX512 code
 - ovs-appctl command removed
 - new fields added to netdev status including the information removed from
   ovs-appctl

v11
 - AVX512 change introduced a checksum bug due to an incorrectly sized
   datatype, caught by intel-ci and required a recent Xeon to reproduce.

v12
 - Updated documentation
 - Changed tso status field name
 - Excluded the combination of rte_flow offload, userspace tso, and RAW_ENCAP
   from simultaniously ocuring
 - Extended AVX512 support to IPv6

v13
 - Re-added erroniously missing mutex annocations from v12

v14
 - Rewrote a section of the documentation
 - Removed exclusion of the combination of rte_flow offload, userspace tso, and
   RAW_ENCAP
 - Added a TUNGETFEATURES check in netdev-linux.c for better support of early
   2.6 era kernels

v15
 - Moved some new code outside of mutex protection
 - Only check TUNGETFEATURES once
 - Respect FLOW_TNL_F_CSUM flag 

Mike Pattrick (4):
  Documentation: Document netdev offload.
  dpif-netdev: Show netdev offloading flags.
  userspace: Enable IP checksum offloading by default.
  userspace: Enable L4 checksum offloading by default.

 Documentation/automake.mk                     |   1 +
 Documentation/topics/index.rst                |   1 +
 .../topics/userspace-checksum-offloading.rst  |  96 +++++++
 lib/conntrack.c                               |  30 +-
 lib/dp-packet.c                               |  40 +++
 lib/dp-packet.h                               | 140 +++++++++-
 lib/dpif-netdev-extract-avx512.c              |  57 ++++
 lib/dpif-netdev.c                             |   2 +
 lib/flow.c                                    |  38 ++-
 lib/ipf.c                                     |  11 +-
 lib/netdev-dpdk.c                             | 230 +++++++++++-----
 lib/netdev-dummy.c                            |  22 ++
 lib/netdev-linux.c                            | 258 +++++++++++++-----
 lib/netdev-native-tnl.c                       |  53 ++--
 lib/netdev.c                                  |  81 +++---
 lib/odp-execute-avx512.c                      | 108 +++++---
 lib/odp-execute.c                             |  21 +-
 lib/packets.c                                 | 209 +++++++++++---
 lib/packets.h                                 |   3 +
 tests/dpif-netdev.at                          |  96 +++++++
 20 files changed, 1176 insertions(+), 321 deletions(-)
 create mode 100644 Documentation/topics/userspace-checksum-offloading.rst

-- 
2.31.1

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

Reply via email to