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