Source-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
CVS commit: src/sys/dev/ic
Module Name: src
Committed By: dyoung
Date: Thu Apr 12 06:14:47 UTC 2007
Modified Files:
src/sys/dev/ic: gem.c gemreg.h
Log Message:
Make the members of the descriptors volatile, because the NIC and
the host share them.
Before breaking out of the loop over descriptors in gem_rint(),
DMA-resynchronize the first Rx descriptor we found that does not
belong to the host. We must avoid a cached descriptor "covering"
a descriptor in RAM, because the cached descriptor may say that
the descriptor still belongs to the NIC, when that is not true,
and the driver will hang.
XXX I believe this driver only works by luck on hosts that both
XXX have a cacheline size greater than the size of a descriptor
XXX (16 bytes) and lack DMA/cache coherency. I need to add some
XXX trickery to make sure that we don't scribble over the NIC's
XXX changes to a descriptor when we flush a cached descriptor to
XXX RAM with bus_dmamap_sync(9).
To generate a diff of this commit:
cvs rdiff -r1.55 -r1.56 src/sys/dev/ic/gem.c
cvs rdiff -r1.9 -r1.10 src/sys/dev/ic/gemreg.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Home |
Main Index |
Thread Index |
Old Index