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>