Merge from vendor branch ZLIB:
[dragonfly.git] / share / examples / atm / NOTES
1
2                                    HARP Notes
3                                    1998-09-14
4
5 This is a list of currently known incompatibilities and miscellaneous gotchas 
6 in HARP.  
7
8 To report new items, please send mail to harp-bugs@magic.net.
9
10 ================================================================================
11
12
13 Efficient Driver and DMA sizes
14 ==============================
15
16 The Efficient adapter moves PDUs between host memory and adapter memory with 
17 the help of DMA descriptor lists. Each DMA descriptor consists of two words. 
18 Word 0 contains a DMA type identifier and a repetition count. Word 1 contains 
19 the physical (not virtual) host buffer address. Each DMA type is really an 
20 encoding of the burst size for the DMA. (See /usr/src/sys/dev/hea/eni.h for
21 more on the DMA types.) HARP was originally developed using burst sizes of 
22 8_WORD, 4_WORD, and 1_WORD sizes. Each DMA request would be built to first 
23 move as much data as possible using an 8_WORD burst. This should leave 0-7 
24 words left over. If there were more than 3 words remaining, a 4_WORD DMA burst 
25 would be scheduled. The remaining data must then be 0-3 words in length and 
26 would be moved with 1_WORD bursts. The use of large burst sizes makes more 
27 efficient use of DMA by performing the same amount of work in fewer cycles.
28
29 Several users have reported problems with DMA which were characterized by error
30 messages of the form:
31
32         "eni_output: Transmit drain queue is full. Resources will be lost."
33 or
34         "eni_output: not enough room in DMA queue".
35
36 It was determined that these systems do not support the use of four- or 
37 eight-word DMA bursts.  To resolve this problem, HARP now #ifdef's around the 
38 8_WORD and 4_WORD DMA setup and #undef's both values by default. This results 
39 in the default operation of the Efficient driver to use only 1_WORD DMA bursts.
40
41 If you wish to experiment with larger DMA bursts, you can edit the file
42 /usr/src/sys/dev/hea/eni_transmit.c and change the #undef to a #define for 
43 DMA_USE_8WORD and/or DMA_USE_4WORD. You will need to rebuild and install your 
44 kernel for this change to take effect.
45
46 We are exploring solutions which would allow HARP to determine which DMA bursts
47 are supported by the system at run-time.  This would allow the Efficient device
48 driver to make use of larger, more efficient burst sizes where supported 
49 without halting on systems which can't support the larger sizes.
50
51
52
53         @(#) $FreeBSD: src/share/examples/atm/NOTES,v 1.2 1999/08/28 00:19:06 peter Exp $
54         @(#) $DragonFly: src/share/examples/atm/NOTES,v 1.2 2003/06/17 04:36:57 dillon Exp $
55