William Herrin wrote:
The pro/1000 does not need to generate an interrupt in order to start
a DMA transfer? Can you refer me to some documents which explain in
detail how a card on the bus sets up a DMA transfer?
The driver provides the adapter a ring buffer of memory locations to
busmaster dma the data into (which does not require interrupting the
CPU). The interrupts are triggered after the DMA completes and in
moderation controllable by the driver. For FreeBSD the default maxes
interrupts out at 8000 per second and on some of the adapters there are
firmware optimizations for lowering the latency from the obvious maximum
of 125 microseconds. When an interrupt is fired the driver restocks the
ring buffer with new addresses to put data into, for one or for 4000
frames, depending on how many were used up.
With IOAT and various offloads this gets somewhat more complicated and
more effective.
Pete