Workaround: ifconfig igb0 -vlanhwtag
Since it only affects DHCP traffic (bpf injected traffic?), I wonder if it's more related to iflib than to igb. Adding marius@ and shurd@.
I had a similar issue, where -vlanhwtag also fixed it.
That was on a I210 (igb) card (in a FreeNAS mini XL).
This also affects some Broadcom NICs:
I have same problem on r339012
I can add one more datapoint: 82574L Gigabit Network Connection (which is shown as "em") doesn't have this problem on same FreeBSD revision.
The packet captures are consistent with the checksum being calculated with the pseudo header having the correct checksum, not zero. Forcing the UDP checksum to zero before passing to the card would likely work around the issue, but I want to figure out what changed to cause this issue to crop up first.
Can you test with the patch in the review here:
I'm not confident this will fix the problem, but it's the only obvious issue I saw tracing the send path:
If this fixes the issue, the bce(4) issue is a different issue.
I'll test it in the next day or two. I think I can only test it on my home firewall, so I have to schedule downtime with the family. ;)
I would be grateful if other people tested it, too.
I'll check it in 3 or 4 hours and will report back.
Nope. It make worse.
I've explained problems with more details ant phabricator.
I don't noow, should we duplicate all comments in two places?
(In reply to Lev A. Serebryakov from comment #10)
I think that comments regarding the patch can/should go on Phabricator only and comments about the bug should go here (and likely not on Phabricator).
A commit references this bug:
Date: Fri Oct 5 20:16:20 UTC 2018
New revision: 339207
Fix igb corrupting checksums with BPF and VLAN
When using a vlan with igb and the vlanhwcsum option, any mbufs which
already had the TCP, UDP, or SCTP checksum calculated and therefore don't
have the CSUM_[IP|IP6]_[TCP|UDP|SCTP] bits set in the csum_flags field would
have the L4 checksum corrupted by the hardware.
This was caused by the driver setting E1000_TXD_POPTS_TXSM any time a
checksum bit was set OR a vlan tag was present.
The patched driver only sets E1000_TXD_POPTS_TXSM when an offload is
Reported by: pi
Approved by: re (gjb)
Sponsored by: Limelight Networks
Differential Revision: https://reviews.freebsd.org/D17404
- Assign to committer that resolved
- Track MFC's
- HEAD was 12.x base r339207
- MFC'd to stable/11 in base r342789 by marius