55 lines
2.4 KiB
Plaintext
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$
|
|
|