On Tue, Aug 22, 2017 at 11:59 PM, Michael Chan <michael.chan@xxxxxxxxxxxx> wrote: > On Tue, Aug 22, 2017 at 6:06 PM, Alexander Duyck > <alexander.duyck@xxxxxxxxx> wrote: >> On Tue, Aug 22, 2017 at 1:04 PM, Michael Chan <michael.chan@xxxxxxxxxxxx> wrote: >>> >>> Right, but it's conceivable to add an API to "return" the buffer to >>> the input device, right? >> >> You could, it is just added complexity. "just free the buffer" in >> ixgbe usually just amounts to one atomic operation to decrement the >> total page count since page recycling is already implemented in the >> driver. You still would have to unmap the buffer regardless of if you >> were recycling it or not so all you would save is 1.000015259 atomic >> operations per packet. The fraction is because once every 64K uses we >> have to bulk update the count on the page. >> > > If the buffer is returned to the input device, the input device can > keep the DMA mapping. All it needs to do is to dma_sync it back to > the input device when the buffer is returned. That is what ixgbe is already doing. The Rx path doesn't free the page, it just treats it as a bounce buffer and uses the page count to make certain we don't use a section of the buffer that is already in use. - Alex