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

Reply via email to