freebsd-dev/sys/dev/de
peter 5f53a6d0cd malloc() the rx and tx descriptors seperately rather than as part of the
large (over 4KB) softc struct.  The descriptor array is accessed by
busmaster dma and must be physically contiguous in memory.  malloc() of
a block greater than a page is only virtually contiguous, and not
necessarily physically contigious.

contigmalloc() could do this, but that is a bit on the overkill side.

I'm not sure of the origins of the problem report and diagnosis, I learned
of the problem via mail forwarded from  Jim Shankland <jas@flyingfox.com>.

Jim said that Matt Thomas's workaround was to reduce the number of
transmit descriptors from 128 to 32, but I was concerned that it might
cost performance.  Anyway, this change is my fault, not Jim's. :-)

Reviewed by: davidg
1997-09-11 15:27:35 +00:00
..
dc21040reg.h Import Matt's if_de driver 970703 release. This (apparently) supports 1997-08-03 12:17:39 +00:00
if_de.c malloc() the rx and tx descriptors seperately rather than as part of the 1997-09-11 15:27:35 +00:00
if_devar.h malloc() the rx and tx descriptors seperately rather than as part of the 1997-09-11 15:27:35 +00:00