FreeBSD-5.3/share/examples/atm/NOTES


                                   HARP Notes
                                   1998-09-14

This is a list of currently known incompatibilities and miscellaneous gotchas 
in HARP.  

To report new items, please send mail to harp-bugs@magic.net.

================================================================================


Efficient Driver and DMA sizes
==============================

The Efficient adapter moves PDUs between host memory and adapter memory with 
the help of DMA descriptor lists. Each DMA descriptor consists of two words. 
Word 0 contains a DMA type identifier and a repetition count. Word 1 contains 
the physical (not virtual) host buffer address. Each DMA type is really an 
encoding of the burst size for the DMA. (See /usr/src/sys/dev/hea/eni.h for
more on the DMA types.) HARP was originally developed using burst sizes of 
8_WORD, 4_WORD, and 1_WORD sizes. Each DMA request would be built to first 
move as much data as possible using an 8_WORD burst. This should leave 0-7 
words left over. If there were more than 3 words remaining, a 4_WORD DMA burst 
would be scheduled. The remaining data must then be 0-3 words in length and 
would be moved with 1_WORD bursts. The use of large burst sizes makes more 
efficient use of DMA by performing the same amount of work in fewer cycles.

Several users have reported problems with DMA which were characterized by error
messages of the form:

	"eni_output: Transmit drain queue is full. Resources will be lost."
or
	"eni_output: not enough room in DMA queue".

It was determined that these systems do not support the use of four- or 
eight-word DMA bursts.  To resolve this problem, HARP now #ifdef's around the 
8_WORD and 4_WORD DMA setup and #undef's both values by default. This results 
in the default operation of the Efficient driver to use only 1_WORD DMA bursts.

If you wish to experiment with larger DMA bursts, you can edit the file
/usr/src/sys/dev/hea/eni_transmit.c and change the #undef to a #define for 
DMA_USE_8WORD and/or DMA_USE_4WORD. You will need to rebuild and install your 
kernel for this change to take effect.

We are exploring solutions which would allow HARP to determine which DMA bursts
are supported by the system at run-time.  This would allow the Efficient device
driver to make use of larger, more efficient burst sizes where supported 
without halting on systems which can't support the larger sizes.



	@(#) $FreeBSD: src/share/examples/atm/NOTES,v 1.2 1999/08/28 00:19:06 peter Exp $