When writing a DMA based ethernet driver, a function must be written to periodically allocate POOL pbufs and put them in the Rx DMA buffer descriptor ring.
I think this could be made a bit more efficient. What if I make the Rx DMA buffer descriptor ring large enough to hold all POOL pbufs. At start-up all POOL pbufs are allocated and put in the Rx DMA ring. pbuf_free() is modified so that whenever a POOL pbuf is freed it is immediately put in the Rx DMA ring.
This should improve performance, as well as simplify the ethernet driver a bit.