WSL2-Linux-Kernel/Documentation/networking/device_drivers/ethernet
David Arinzon a087d4b502 net: ena: Add dynamic recycling mechanism for rx buffers
[ Upstream commit f7d625adeb ]

The current implementation allocates page-sized rx buffers.
As traffic may consist of different types and sizes of packets,
in various cases, buffers are not fully used.

This change (Dynamic RX Buffers - DRB) uses part of the allocated rx
page needed for the incoming packet, and returns the rest of the
unused page to be used again as an rx buffer for future packets.
A threshold of 2K for unused space has been set in order to declare
whether the remainder of the page can be reused again as an rx buffer.

As a page may be reused, dma_sync_single_for_cpu() is added in order
to sync the memory to the CPU side after it was owned by the HW.
In addition, when the rx page can no longer be reused, it is being
unmapped using dma_page_unmap(), which implicitly syncs and then
unmaps the entire page. In case the kernel still handles the skbs
pointing to the previous buffers from that rx page, it may access
garbage pointers, caused by the implicit sync overwriting them.
The implicit dma sync is removed by replacing dma_page_unmap() with
dma_unmap_page_attrs() with DMA_ATTR_SKIP_CPU_SYNC flag.

The functionality is disabled for XDP traffic to avoid handling
several descriptors per packet.

Signed-off-by: Arthur Kiyanovski <akiyano@amazon.com>
Signed-off-by: Shay Agroskin <shayagr@amazon.com>
Signed-off-by: David Arinzon <darinzon@amazon.com>
Link: https://lore.kernel.org/r/20230612121448.28829-1-darinzon@amazon.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Stable-dep-of: 2dc8b1e7177d ("net: ena: Fix redundant device NUMA node override")
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-06-16 13:39:52 +02:00
..
3com
altera
amazon net: ena: Add dynamic recycling mechanism for rx buffers 2024-06-16 13:39:52 +02:00
aquantia
chelsio
cirrus
davicom
dec
dlink
freescale Yet another set of documentation changes: 2021-09-01 18:49:47 -07:00
google gve: Update GVE documentation to describe DQO 2021-06-24 12:47:37 -07:00
huawei
intel ixgbe: Document how to enable NBASE-T support 2021-12-22 09:32:43 +01:00
marvell docs: octeontx2: Add Documentation for NIX health reporters 2021-01-21 11:57:51 -08:00
mellanox net/mlx5: E-switch, Add QoS tracepoints 2021-08-19 21:50:41 -07:00
microsoft hv_netvsc: Add a comment clarifying batching logic 2021-03-14 14:32:37 -07:00
neterion
netronome
pensando
smsc
stmicro
ti docs: networking: ti: Add driver doc for AM65 NUSS switch driver 2021-02-11 17:52:13 -08:00
toshiba
index.rst docs: networking: ti: Add driver doc for AM65 NUSS switch driver 2021-02-11 17:52:13 -08:00