]> CyberLeo.Net >> Repos - FreeBSD/stable/10.git/commit
MFC r289316:
authorkp <kp@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Wed, 21 Oct 2015 15:32:21 +0000 (15:32 +0000)
committerkp <kp@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Wed, 21 Oct 2015 15:32:21 +0000 (15:32 +0000)
commit6a5ad5effae89b8e42cca4ffcfebc170133ac6f2
treebf808b690f2a7aeabe78ae7b008b62f190733067
parent5a110c5ab7bbb47c4c4aa0dad6b03cfc7160c8e6
MFC r289316:

pf: Fix TSO issues

In certain configurations (mostly but not exclusively as a VM on Xen) pf
produced packets with an invalid TCP checksum.

The problem was that pf could only handle packets with a full checksum. The
FreeBSD IP stack produces TCP packets with a pseudo-header checksum (only
addresses, length and protocol).
Certain network interfaces expect to see the pseudo-header checksum, so they
end up producing packets with invalid checksums.

To fix this stop calculating the full checksum and teach pf to only update TCP
checksums if TSO is disabled or the change affects the pseudo-header checksum.

PR:             154428, 193579, 198868
Relnotes:       yes
Sponsored by:   RootBSD

git-svn-id: svn://svn.freebsd.org/base/stable/10@289703 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
sys/net/pfvar.h
sys/netpfil/pf/pf.c
sys/netpfil/pf/pf_ioctl.c
sys/netpfil/pf/pf_norm.c