[Bug 262024] em(4)/iflib handles bad packets incorrectly

From: <bugzilla-noreply_at_freebsd.org>
Date: Thu, 17 Feb 2022 21:54:22 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=262024

            Bug ID: 262024
           Summary: em(4)/iflib handles bad packets incorrectly
           Product: Base System
           Version: CURRENT
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Some People
          Priority: ---
         Component: kern
          Assignee: bugs@FreeBSD.org
          Reporter: erj@freebsd.org

We saw an issue where the em(4) interface would flap repeatedly, and the root
cause was that the SBP flag was enabled, causing the hardware to send bad
packets to the driver.

It appears that if the driver's isc_rxd_pkt_get() handler (e.g. in em here:
https://cgit.freebsd.org/src/tree/sys/dev/e1000/em_txrx.c#n692) returns EBADMSG
(because the hardware said the packet was bad), the iflib function that calls
that will immediately jump to resetting the hardware.

We don't think that this should be the case (especially if the driver is
explicitly allowing bad packets) and think it should be changed.

A previous bug report/commit changed the em(4) driver's default SBP setting to
false, so that future users probably won't encounter this behavior unless they
manually set it back to true.

In this case we've seen it em(4) specifically, but it could affect other
iflib-using drivers that allow hardware to forward bad packets to the driver.

-- 
You are receiving this mail because:
You are the assignee for the bug.