[eepro100] Receive Buffer Descriptors

Donald Becker becker@scyld.com
Wed, 2 Aug 2000 23:55:38 -0400 (EDT)

On Wed, 2 Aug 2000, Naga R Narayanaswamy wrote:

> In the context of the ongoing discussions regarding descriptors,
> I have a question on the receive buffering scheme in the 82559
> chip. It pertains to the simplified model and the flexible model
> in the receive descriptors.
> In simplified model the frame follows the descriptor immediately.

Yes.  That's why we use it.  The chip does a single burst read, a burst
write to write the packet, and a burst write to finish the status.
Very efficient.

> In the flexible model, the first RFD has a linked list of RBD's,
> and subsequent RFD's have the RBD address set to NULL.
> In other words only the first RFD can have RBDs.
> Am I correct ? Any idea why is it like this? What if I descriptor
> and frame not in contiguous memory and I want to make a
> ring of descriptors?

The first RFD points to all of the buffers.
Using this model requires the chip to do extra PCI bus transactions, and the
driver has to do extra housekeeping.
This model might seem to be exactly the right thing for BSD mbufs, but it
doesn't actually work very well with extended mbufs.

The real advantage was saving a few bytes in network buffers.  This is an
increasingly bad tradeoff in modern machines.  You'll never notice 50KB (if
that) of extra memory consumption.  But you will notice all of the pointer
following and cache line misses in the networking code.

Donald Becker				becker@scyld.com
Scyld Computing Corporation		http://www.scyld.com
410 Severn Ave. Suite 210		Beowulf Clusters / Linux Installations
Annapolis MD 21403