freebsd-dev/share/examples/atm/NOTES
1999-08-28 00:22:10 +00:00

55 lines
2.4 KiB
Plaintext

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$