From: BjÃrn TÃpel <bjorn.topel@xxxxxxxxx>
When the AF_XDP buffer allocation API was introduced it had an
optimization, "cheap_dma". The idea was that when the umem was DMA
mapped, the pool also checked whether the mapping required a
synchronization (CPU to device, and vice versa). If not, it would be
marked as "cheap_dma" and the synchronization would be elided.
In [1] Christoph points out that the optimization above breaks the DMA
API abstraction, and should be removed. Further, Christoph points out
that optimizations like this should be done within the DMA mapping
core, and not elsewhere.
Unfortunately this has implications for the packet rate
performance. The AF_XDP rxdrop scenario shows a 9% decrease in packets
per second.
[1] https://lore.kernel.org/netdev/20200626074725.GA21790@xxxxxx/
Cc: Christoph Hellwig <hch@xxxxxx>
Fixes: 2b43470add8c ("xsk: Introduce AF_XDP buffer allocation API")
Signed-off-by: BjÃrn TÃpel <bjorn.topel@xxxxxxxxx>