Software router state of the art

Petri Helenius petri at
Sun Jul 27 06:12:58 UTC 2008

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.


More information about the NANOG mailing list