HomeFreeBSD

Don't call tcp_lro_rx() unless hardware verified TCP/UDP csum

Description

Don't call tcp_lro_rx() unless hardware verified TCP/UDP csum

It seems that tcp_lro_rx() doesn't verify TCP checksums, so
if there are bad checksums in the packets caused by invalid data, the
invalid data will pass through without errors.

This was noticed with the igb driver and a specific internet host:
fetch http://www.mpfr.org/mpfr-current/mpfr-3.1.6.tar.xz -o test.bin && sha256 test.bin
Would result in a different value sometimes.

This ends up making LRO require RXCSUM to be enabled, and RXCSUM to
support TCP and UDP checksums.

PR: 224346
Reported by: gjb
Reviewed by: sbruno
Sponsored by: Limelight Networks
Differential Revision: https://reviews.freebsd.org/D13561

Details

Provenance
shurdAuthored on
Reviewer
sbruno
Differential Revision
D13561: Don't call tcp_lro_rx() unless hardware verified TCP/UDP csum
Parents
rS327051: ixgbe(4): Fix build error on i386.
Branches
Unknown
Tags
Unknown