On Tue, Mar 4, 2025 at 2:31 PM David Marchand <david.march...@redhat.com> wrote: > > As the packet traverses through OVS, offloading Tx flags must be carefully > evaluated and updated which results in a bit of complexity because of a > separate "outer" Tx offloading flag coming from DPDK API, > and a "normal"/"inner" Tx offloading flag. > > On the other hand, the DPDK mbuf API specifies 4 status when it comes to > IP checksums: > - RTE_MBUF_F_RX_IP_CKSUM_UNKNOWN: no information about the RX IP checksum > - RTE_MBUF_F_RX_IP_CKSUM_BAD: the IP checksum in the packet is wrong > - RTE_MBUF_F_RX_IP_CKSUM_GOOD: the IP checksum in the packet is valid > - RTE_MBUF_F_RX_IP_CKSUM_NONE: the IP checksum is not correct in the > packet data, but the integrity of the IP header is verified. > > This patch changes OVS API so that OVS code only tracks the status of > the checksum of the "current" L3 header and let the Tx flags aspect to > the netdev-* implementations. > > With this API, the flow extraction can be cleaned up. > > During packet processing, OVS can simply look for the IP checksum validity > (either good, or partial) before changing some IP header, and then mark > the checksum as partial. > > In the conntrack case, when natting packets, the checksum status of the > inner part (ICMP error case) must be forced temporarily as unknown > to force checksum resolution. > > When tunneling comes into play, IP checksums status are bit-shifted > for future considerations in the processing if, for example, the tunnel > header gets decapsulated again, or in the netdev-* implementations that > support tunnel offloading. > > Finally, thet netdev-* implementations only need to care about packets > in partial status: a good checksum does not need touching, a bad > checksum has been updated by kept as bad by OVS, an unknown checksum is > either a IPv6 or if it was a IPv4, OVS updated it too (keeping it good > or bad accordingly). > > Rename current API for consistency with dp_packet_(inner_)?ip_checksum_. > > Signed-off-by: David Marchand <david.march...@redhat.com>
Recheck-request: github-robot -- David Marchand _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev