Summary: | [regression] e1000 rxcsum corruption | ||
---|---|---|---|
Product: | Base System | Reporter: | Glen Barber <gjb> |
Component: | kern | Assignee: | Sean Bruno <sbruno> |
Status: | Closed FIXED | ||
Severity: | Affects Many People | CC: | emaste, sbruno, shurd |
Priority: | --- | Keywords: | IntelNetworking, regression |
Version: | CURRENT | ||
Hardware: | Any | ||
OS: | Any |
Description
Glen Barber
2017-12-14 18:59:00 UTC
Gimme a pciconf -lvbc so I know what devices I'm dealing with here. # pciconf -lvbc igb0 igb0@pci0:3:0:0: class=0x020000 card=0x152115d9 chip=0x15218086 rev=0x01 hdr=0x00 vendor = 'Intel Corporation' device = 'I350 Gigabit Network Connection' class = network subclass = ethernet bar [10] = type Memory, range 32, base rxc7120000, size 131072, enabled bar [18] = type I/O Port, range 32, base rx6020, size 32, enabled bar [1c] = type Memory, range 32, base rxc7144000, size 16384, enabled cap 01[40] = powerspec 3 supports D0 D3 current D0 cap 05[50] = MSI supports 1 message, 64 bit, vector masks cap 11[70] = MSI-X supports 10 messages, enabled Table in map 0x1c[0x0], PBA in map 0x1c[0x2000] cap 10[a0] = PCI-Express 2 endpoint max data 256(512) FLR NS link x4(x4) speed 5.0(5.0) ASPM disabled(L0s/L1) ecap 0001[100] = AER 2 0 fatal 0 non-fatal 1 corrected ecap 0003[140] = Serial 1 0cc47affffd8b808 ecap 000e[150] = ARI 1 ecap 0010[160] = SR-IOV 1 IOV disabled, Memory Space disabled, ARI disabled 0 VFs configured out of 8 supported First VF RID Offset 0x0180, VF RID Stride 0x0004 VF Device ID 0x1520 Page Sizes: 4096 (enabled), 8192, 65536, 262144, 1048576, 4194304 ecap 0017[1a0] = TPH Requester 1 ecap 0018[1c0] = LTR 1 ecap 000d[1d0] = ACS 1 A commit references this bug: Author: shurd Date: Thu Dec 21 01:22:36 UTC 2017 New revision: 327052 URL: https://svnweb.freebsd.org/changeset/base/327052 Log: 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 Changes: head/sys/net/iflib.c |