aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrey V. Elsukov <ae@FreeBSD.org>2022-11-10 09:34:40 +0000
committerGordon Tetlow <gordon@FreeBSD.org>2023-02-08 16:32:02 +0000
commit36a39f0cc68fab01d2c33f4738e865664db31192 (patch)
tree9a5fb1b0f069c2f87e28f77ce2118179d4eb373a
parentab78a51c8d2b28e94a08287804f941a5973c9940 (diff)
downloadsrc-36a39f0cc68fab01d2c33f4738e865664db31192.tar.gz
src-36a39f0cc68fab01d2c33f4738e865664db31192.zip
ixgbe: workaround errata about UDP frames with zero checksum
Intel 82599 has errata related to IPv4 UDP frames with zero checksum. It reports such datagrams with L4 integrity errors in IXGBE_XEC register. And after afb1aa4e6df2 commit such errors are reported via IFCOUNTER_IERRORS. This confuses users, since actually all frames are handled correctly by the system. To workaround the problem, let's ignore the XEC register value for 82599 cards for now. PR: 266048 Discussed with: erj Sponsored by: Yandex LLC Approved by: so Security: FreeBSD-EN-23:04.ixgbe (cherry picked from commit 8526120ad41ca47367b43f8f4459e0fa61285571) (cherry picked from commit fe9c4deda9d4aa2c5bed75071f8006bd2a0734a2)
-rw-r--r--sys/dev/ixgbe/if_ix.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/dev/ixgbe/if_ix.c b/sys/dev/ixgbe/if_ix.c
index a361645d3b9f..47f3918fd8ee 100644
--- a/sys/dev/ixgbe/if_ix.c
+++ b/sys/dev/ixgbe/if_ix.c
@@ -1574,8 +1574,12 @@ ixgbe_update_stats_counters(struct ixgbe_softc *sc)
* - fragmented packets count,
* - oversized packets count,
* - jabber count.
+ *
+ * Ignore XEC errors for 82599 to workaround errata about
+ * UDP frames with zero checksum.
*/
- IXGBE_SET_IERRORS(sc, stats->crcerrs + stats->illerrc + stats->xec +
+ IXGBE_SET_IERRORS(sc, stats->crcerrs + stats->illerrc +
+ (hw->mac.type != ixgbe_mac_82599EB ? stats->xec : 0) +
stats->mpc[0] + stats->rlec + stats->ruc + stats->rfc + stats->roc +
stats->rjc);
} /* ixgbe_update_stats_counters */