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)
Feb 6 2024, 11:06 AM
Unknown Object (File)
Dec 20 2023, 8:38 AM
Unknown Object (File)
Dec 12 2023, 4:52 PM
Unknown Object (File)
Aug 14 2023, 8:51 PM
Unknown Object (File)
Jun 23 2023, 5:08 PM
Unknown Object (File)
May 8 2023, 5:07 AM
Unknown Object (File)
Mar 21 2023, 11:42 AM
Unknown Object (File)
Mar 6 2023, 3:36 AM
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 Not Applicable
Unit
Tests Not Applicable