Page MenuHomeFreeBSD

Fix issue with VXLAN-encapsulated rx h/w checksum
ClosedPublic

Authored by sbruno on Nov 6 2017, 4:21 PM.
Tags
None
Referenced Files
Unknown Object (File)
Fri, Oct 25, 6:22 PM
Unknown Object (File)
Oct 21 2024, 1:28 AM
Unknown Object (File)
Oct 21 2024, 1:28 AM
Unknown Object (File)
Oct 21 2024, 12:11 AM
Unknown Object (File)
Sep 24 2024, 8:57 AM
Unknown Object (File)
Sep 23 2024, 2:09 PM
Unknown Object (File)
Sep 12 2024, 11:20 PM
Unknown Object (File)
Sep 7 2024, 2:46 PM
Subscribers

Details

Summary

The bnxt driver was using the "inner" IP and TCP/UDP
checksum fields when populating the mbuf's checksum
offload fields. That is fine when the inner frame
is an IP+TCP/UDP frame, since it is implied that
the inner checksum will only be examined if the "outer"
VXLAN checksums are Ok.

However, if the inner payload is not IP+TCP/UDP,
then the inner checksum won't be computed, and the mbuf won't
have any checksum information attached even though
the VXLAN UDP tunnel checksum is valid. This results
in the decapsulation code having to perform an
unnecessary s/w checksum.

Fix by checking both the inner and tunnel checksum
results. It isn't possible for the inner checksum
to pass if the outer one doesn't, so it's fine
to check both at one, which will cover both the
tunnel+non-IP and no-tunnel cases.

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 12517
Build 12792: arc lint + arc unit