Subject: Re: pcmcia ep0 performance awful in 1.6/-current
To: Greywolf <greywolf@starwolf.com>
From: Ben Harris <bjh21@netbsd.org>
List: current-users
Date: 07/10/2002 11:37:30
On Tue, 9 Jul 2002, Greywolf wrote:

> 	NFS default size	NFS [rw]size=8192
>
> le0	Stopped working		Worked fine
> be0	Does not work at all	Does not work at all - no networking
> hme0	Works fine		Works fine
>
> I'm wondering what was wrong with le0 and the 32k I/O size.

32K?  <FX: looks at sources>  Ah, it looks like as of 2001-04-02, i386 has
overridden the default NFS_RSIZE (which is set to 8K in sys/nfs/nfs.h) to
32K in sys/arch/i386/include/param.h.  This would explain the problems
people have been reporting on i386, though why your sparc is using 32K
remains to be explained.

> I have NO clue as to what was up.

Basically, normal behaviour if you set NFS_RSIZE larger than the rx buffer
on a slow Ethernet card.  Your client asks the NFS server for 32K of data.
The NFS server puts the entire response in a single UDP datagram, which
then gets fragmented, and the fragments get sent out onto the wire as fast
as the server can send them (which is probably quite fast).  The fragments
pile up in the rx buffer on the client, and if the buffer is small enough,
and the kernel can't clear it fast enough, the trailing fragemnets will
likely get dropped and the whole request will have to be retried.

-- 
Ben Harris                                                   <bjh21@netbsd.org>
Portmaster, NetBSD/acorn26           <URL:http://www.netbsd.org/Ports/acorn26/>