Index: sys/net/iflib.c =================================================================== --- sys/net/iflib.c +++ sys/net/iflib.c @@ -3095,10 +3095,16 @@ retval |= IFLIB_RXEOF_MORE; return (retval); err: - STATE_LOCK(ctx); - ctx->ifc_flags |= IFC_DO_RESET; - iflib_admin_intr_deferred(ctx); - STATE_UNLOCK(ctx); + /* + * Allow drivers to use EBADMSG for transient errors, otherwise consider + * other errors as contractual failures and reset the interface. + */ + if (err != EBADMSG) { + STATE_LOCK(ctx); + ctx->ifc_flags |= IFC_DO_RESET; + iflib_admin_intr_deferred(ctx); + STATE_UNLOCK(ctx); + } return (0); }