Subject: Network driver receive path
To: None <firstname.lastname@example.org>
From: Maen Suleiman <email@example.com>
Date: 03/14/2007 19:24:43
I am trying to tune our giga driver performance , I have noticed that
the system spends 57% of the time on interrupts when we do an oriented
receive test, while the system spends only 20% of the time on
interrupts when we do an oriented send test.
From the profiler results , we understood that the main reason of
spending this time on the RX interrupt was because of the
MGETHDR,MCLGET and bus_dmamap_load , and mainly because of the
The problem is that we couldn't find an alternative of allocating
mbufs and calling bus_dmamap_load in the RX interrupt,!
Will using a task to do the mbuf handling help ?
Is there a way to tell the TCP stack to give me back the mbuf that was
delivered to it, and then I can re-use the same mbufs without calling
Is there a way to allocate a constant physical memory block for the RX
DMA , and then using this block for the mbufs that will be delivered
to the stack? In this case I must know when the TCP stack has finished
handling the mbuf, and then I will re-use the same memory physical
Thanks in advance