Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 19 Aug 1996 12:44:26 -0500 (CDT)
From:      Mark Tinguely <tinguely@plains.nodak.edu>
To:        freebsd-atm@freebsd.org
Subject:   IDT 77201 buffer size opinions wanted
Message-ID:  <199608191744.MAA12482@plains.nodak.edu>

next in thread | raw e-mail | index | archive | help

I have the register 10 (pages 96-99) commands except read/write utilities
working. The read/write utilities are something I see as important yet.

The Errata for the revision D board says we can up the small buffer size to
2K bytes or if you think you can get all the packets into a single large
buffer, the small buffer can be bypassed (but if a larger cell does not fit
into *one* large buffer, a CRC error will result). I have eliminated the
large-only buffer option as too expensive because all buffers would have to
be 16K to handle the IETF's MTU.

The small buffer size can be 48, 96, 240, or 2048 bytes. The large buffer
size can be 2K, 4K, 8K or 16K but once set it cannot change. on packet recption,
buffers are delivered to the driver in a group and the driver would have to
force these into mbufs (I still hope that the external mbuf will let me use
these without a seperate copy, if it can we can use the same logic for DMA
packet from cards with onboard RAM for packet contruction).

We have the option of using the 5 cell small buffer and a 2K+
large buffer. This uses the logic that majority of IP traffic is small
and small buffers will handle most of the traffic with little buffer
waste.

Another option could be using 2K large and small buffers taken from a 
common allocation pool (the driver will have to keep track of where
the buffers are queued). There is a danger of one queue getting too many
buffers because the can't take them off a queue until the hardware returns
the buffer with a data packet. I am afraid we will have lots of wasted space
just like IP wastes buffer space. but it should simplify buffer management
downstream.

Talking myself from favoring option one to option two, I will code an
option 3 that small and large are seperate buffer pools, both 2K in size
(and a ifdef could change the size) but the downstream will have to handle
to potential that large and small buffers are different sizes. This
worse case of each.

If anyone has strong feelings about this, *please comment*.

--mark.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199608191744.MAA12482>