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.
|
||
|
|
||
|
|
||
|
|
||
|
@(#) $Id: NOTES,v 1.1 1997/08/22 22:11:17 mks Exp $
|
||
|
|