Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 31 Aug 2019 13:30:34 +0000
From:      bugzilla-noreply@freebsd.org
To:        net@FreeBSD.org
Subject:   [Bug 235031] [em] em0: poor NFS performance, strange behavior
Message-ID:  <bug-235031-7501-jIqruujO44@https.bugs.freebsd.org/bugzilla/>
In-Reply-To: <bug-235031-7501@https.bugs.freebsd.org/bugzilla/>
References:  <bug-235031-7501@https.bugs.freebsd.org/bugzilla/>

next in thread | previous in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D235031

--- Comment #37 from Martin Birgmeier <d8zNeCFG@aon.at> ---
(Adding Bruce's mail here:)

On 31.08.19 13:44, Bruce Evans wrote:
> On Thu, 15 Aug 2019 a bug that doesn't want replies at freebsd.org wrote:
>
>> https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D235031
>>
>> --- Comment #36 from Martin Birgmeier <d8zNeCFG@aon.at> ---
>> I just notice that the console and syslog have about 20 messages of
>>
>> em: frame error: ignored
>> em: frame error: ignored
>> em: frame error: ignored
>> em: frame error: ignored
>> em: frame error: ignored
>>
>> Uptime is 2 1/2 hours.=20
>
> You seem to be using my old patch which is not in -current:
>
> Index: em_txrx.c
> XX =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> XX --- em_txrx.c    (revision 348771)
> XX +++ em_txrx.c    (working copy)
> XX @@ -629,9 +629,20 @@
> XX XX          /* Make sure bad packets are discarded */
> XX          if (errors & E1000_RXD_ERR_FRAME_ERR_MASK) {
> XX +#if 0
> XX              adapter->dropped_pkts++;
> XX -            /* XXX fixup if common */
> XX              return (EBADMSG);
> XX +#else
> XX +            /*
> XX +             * XXX the above error handling is worse than none.
> XX +             * First it it drops 'i' packets before the current
> XX +             * one and doesn't count them.  Then it returns an
> XX +             * error.  iflib can't really handle this error.
> XX +             * It just resets, and this usually drops many more
> XX +             * packets (without counting them) and much time.
> XX +             */
> XX +            printf("lem: frame error: ignored\n");
> XX +#endif
> XX          }
> XX XX          ri->iri_frags[i].irf_flid =3D 0;
> XX @@ -692,8 +703,12 @@
> XX XX          /* Make sure bad packets are discarded */
> XX          if (staterr & E1000_RXDEXT_ERR_FRAME_ERR_MASK) {
> XX +#if 0
> XX              adapter->dropped_pkts++;
> XX              return EBADMSG;
> XX +#else
> XX +            printf("em: frame error: ignored\n");
> XX +#endif
> XX          }
> XX XX          ri->iri_frags[i].irf_flid =3D 0;
>
> Without this patch, no message is printed and the device takes a long
> time to recover (when I wrote the patch, recovery was from something
> like a watchdog timeout after many seconds).  With the patch, the recovery
> is good enough for nfs over udp to not lose any data or time out, but I
> don't trust this so I print the message.
>
> Pre-iflib versions of [l]em handled this correctly by dropping a single
> packet, which was easy to do.  Unpatched iflib makes a mess by returning
> with subsequent packets unprocessed.  It apparently just stops receiving
> until kicked by a watchdog.
>
> I don't know what causes this error.  Maybe just a bad cable or switch.
> I don't see it for I218V with the same cable and switch.
>
> Bruce

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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-235031-7501-jIqruujO44>