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