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>