git: f31403bfdd79 - releng/12.3 - ixgbe: workaround errata about UDP frames with zero checksum
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 08 Feb 2023 18:27:51 UTC
The branch releng/12.3 has been updated by gordon:
URL: https://cgit.FreeBSD.org/src/commit/?id=f31403bfdd79be98e11a00cccf4b6707e006ba7a
commit f31403bfdd79be98e11a00cccf4b6707e006ba7a
Author: Andrey V. Elsukov <ae@FreeBSD.org>
AuthorDate: 2022-11-10 09:34:40 +0000
Commit: Gordon Tetlow <gordon@FreeBSD.org>
CommitDate: 2023-02-08 16:32:26 +0000
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)
---
sys/dev/ixgbe/if_ix.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/sys/dev/ixgbe/if_ix.c b/sys/dev/ixgbe/if_ix.c
index 581944fa6a73..ad1b3be871b9 100644
--- a/sys/dev/ixgbe/if_ix.c
+++ b/sys/dev/ixgbe/if_ix.c
@@ -1539,8 +1539,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 */