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 $ @(#) $DragonFly: src/share/examples/atm/NOTES,v 1.2 2003/06/17 04:36:57 dillon Exp $