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