Subject: BigMac Ethernet out of rx descriptors
To: None <port-sparc@netbsd.org>
From: Kevin Halverson <kwh@montana.edu>
List: port-sparc
Date: 02/24/2003 09:54:36
I've got a Sparcstation 20 with a BigMac Ethernet card running
NetBSD-1.6, and I'm trying to use tcpdump to grab packets off of a very
high traffic router (via a mirrored port).

The card is configured as follows:

be0:flags=8963<UP,BROADCAST,NOTRAILERS,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
        address: 08:00:20:71:fa:20
        media: Ethernet autoselect (10baseT half-duplex)
        status: active
        inet6 fe80::a00:20ff:fe71:fa20%be0 prefixlen 64 scopeid 0x2

Anyway, the problem I seem to be running into is that when there are a
lot of packets on the wire, I fill up my buffers and start getting the
error "be0: out of rx descriptors" (the BE_CR_STAT_RXDROP interrupt
defined in dev/sbus/bereg.h).

I've tried poking around a bit to see if I could increase the size of
the buffers or number of buffers allocated.  There is a comment in the
driver that says the number of buffers in the ring (QEC_XD_RING_MAXSIZE)
is "fixed".  I took a peek at the Linux driver for this card and noticed
that they have 2048, 4096, 6144, and 8192K buffers defined but only use
the 2048 in the driver.  I couldn't seem to ferret out any info on the
size of the buffers.  If they are fixed hardware buffers, then my "fix"
definitely won't work.

I read something on the mac68k list about SCSI interrupts superseding
NETWORK interrupts...don't know if that's true for the sparc, but I'm
trying to write the tcpdump output to a file, so I guess this would make
sense.

Okay, I'm done rambling, so I'll just ask, "Does anyone have any ideas
as to how to resolve my issue?"

Thanks in advance,
 
Kevin Halverson
kwh@montana.edu