mbox series

[ovs-dev,v11,0/4] Enhanced checksum support

Message ID 20230327105013.491103-1-mkp@redhat.com
Headers show
Series Enhanced checksum support | expand

Message

Mike Pattrick March 27, 2023, 10:50 a.m. UTC
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.


Flavio Leitner (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  | 103 ++++++++
 lib/conntrack.c                               |  30 ++-
 lib/dp-packet.c                               |  40 +++
 lib/dp-packet.h                               | 140 +++++++++-
 lib/dpif-netdev-extract-avx512.c              |  57 +++++
 lib/dpif-netdev-unixctl.man                   |   6 +
 lib/dpif-netdev.c                             |   2 +
 lib/flow.c                                    |  38 ++-
 lib/ipf.c                                     |  11 +-
 lib/netdev-dpdk.c                             | 232 ++++++++++++-----
 lib/netdev-dummy.c                            |  23 ++
 lib/netdev-linux.c                            | 242 ++++++++++++------
 lib/netdev-native-tnl.c                       |  53 ++--
 lib/netdev-provider.h                         |   1 +
 lib/netdev.c                                  |  81 +++---
 lib/odp-execute-avx512.c                      |  43 ++--
 lib/odp-execute.c                             |  21 +-
 lib/packets.c                                 | 209 ++++++++++++---
 lib/packets.h                                 |   3 +
 tests/dpif-netdev.at                          |  96 +++++++
 22 files changed, 1125 insertions(+), 308 deletions(-)
 create mode 100644 Documentation/topics/userspace-checksum-offloading.rst