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
--
2.31.1
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev