Subject: Re: BigMac Ethernet out of rx descriptors
To: Kevin Halverson <>
From: David Laight <>
List: port-sparc
Date: 02/25/2003 17:28:07
On Tue, Feb 25, 2003 at 09:49:33AM -0700, Kevin Halverson wrote:
> Woops, my bad, the card MUST be in 100baseTX to communicate with the
> router on the other end.  Apparently, when the link goes down, it
> reverts to 10Mbps when it comes back up.  I fixed the config so that
> doesn't happen any more, but the problem with running "out of rx
> descriptors" remains with the new configuration, which is:
> 1500
>         address: 08:00:20:71:fa:20
>         media: Ethernet 100baseTX (100baseTX half-duplex)
>         status: active
>         inet6 fe80::a00:20ff:fe71:fa20%be0 prefixlen 64 scopeid 0x2
> If I understand Volker's message correctly then, my TMS390 @ 60MHz
> simply might not have the required gusto to clear the buffers.  Is there
> no way I can utilize my 320MB of system memory? :^)

From some (rather old) experience of 10M sbus cards I would agree that
the 60MHz cpu will not keep up with a saturated 100M ethernet.
However there isn't actually a requirement for that, all you need are
enough rx buffers to handle a window full of traffic on all your
active connections.

Some of the other netbsd ethernet drivers do seem to use a very small
number of buffers.  The 'le' one only has 8 rx buffers.  I've always
used 128 512 byte rx buffers (a 64k chunk of memory) and copied the
frames into protocol buffers of the correct size.

Since NetBSD i386 does NFS with 32k datagrams, we really ought to
give ethernet cards a reasonable number of rx buffers.

One problem with the sbus systems is that the iommu work required to
map general kernel buffers into sbus accessable addresses is non-trivial
(one person did some sums and got a break-even point of over 1k, but I
don't think he was being careful to align the data copy).  You can also
run out of io address space, have too many fragments, have initial
fragments that are too short.....


David Laight: