diff options
| author | R. Christian McDonald <rcm@FreeBSD.org> | 2026-10-19 01:06:41 +0000 |
|---|---|---|
| committer | R. Christian McDonald <rcm@FreeBSD.org> | 2026-10-19 01:06:41 +0000 |
| commit | bdaddb76ef1b9d5537f4a76cff01cdb4795804a4 (patch) | |
| tree | 6989303cab75255920737f6644ec8ecd91f97107 /contrib/libucl/lua/(developers-only) | |
| parent | c78d70298edef4c599b503536d193caeb8204784 (diff) | |
When the driver's isc_rxd_pkt_get() fails part way through a receive
pass, iflib_rxeof() jumps straight to the reset request. The frames it
already took off the ring and chained for if_input() are neither passed
up nor freed, so up to budget - 1 frames are lost and their mbufs and
clusters leak on every such error, and the frames queued to LRO in the
pass wait for the next one. Leave the loop instead, pass the chain up
and flush LRO as on the normal exit, then request the reset as before,
without refilling.
The path is reachable from several drivers: igc, em, igb and ixgbe
return EBADMSG for frames received with errors, which the hardware
passes up only with store-bad-packets enabled; ixl, iavf and ice for
every descriptor flagged RXE; aq, enetc, mgb and enic for descriptors
they cannot use.
Reviewed by: gallatin
Sponsored by: Rubicon Communications, LLC ("Netgate")
Differential Revision: https://reviews.freebsd.org/D60805
Diffstat (limited to 'contrib/libucl/lua/(developers-only)')
0 files changed, 0 insertions, 0 deletions
