linux-yocto/Documentation
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: 2dc8b1e717 ("net: ena: Fix redundant device NUMA node override")
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-06-16 13:39:52 +02:00
..
ABI x86/rfds: Mitigate Register File Data Sampling (RFDS) 2024-04-10 16:18:48 +02:00
accounting
admin-guide admin-guide/hw-vuln/core-scheduling: fix return type of PR_SCHED_CORE_GET 2024-05-25 16:20:18 +02:00
arm
arm64 arm64: Subscribe Microsoft Azure Cobalt 100 to ARM Neoverse N2 errata 2024-02-23 08:55:14 +01:00
block
bpf
cdrom
core-api dma-mapping: add dma_opt_mapping_size() 2024-04-10 16:18:47 +02:00
cpu-freq
crypto
dev-tools docs/scripts/gdb: add necessary make scripts_gdb step 2023-03-10 09:39:53 +01:00
devicetree dt-bindings: pinctrl: mediatek: mt7622: fix array properties 2024-06-16 13:39:38 +02:00
doc-guide
driver-api fpga: region: add owner module and take its refcount 2024-06-16 13:39:38 +02:00
fault-injection
fb
features
filesystems Revert "lockd: introduce safe async lock op" 2024-04-27 17:05:23 +02:00
firmware_class
firmware-guide
fpga
gpu
hid
hwmon hwmon: (ftsteutates) Fix scaling of measurements 2023-03-10 09:39:21 +01:00
i2c
ia64
ide
iio
infiniband
input
isdn
kbuild
kernel-hacking docs: futex: Fix kernel-doc references after code split-up preparation 2023-04-26 13:51:53 +02:00
leds
litmus-tests
livepatch
locking
m68k
maintainer
mhi
mips
misc-devices
netlabel
networking net: ena: Add dynamic recycling mechanism for rx buffers 2024-06-16 13:39:52 +02:00
nios2
nvdimm
openrisc
parisc
PCI
pcmcia
power
powerpc
process docs/process/howto: Replace C89 with C11 2023-12-13 18:36:46 +01:00
RCU
riscv riscv: Move early dtb mapping into the fixmap region 2023-05-01 08:23:24 +09:00
s390
scheduler
scsi scsi: core: Fix the scsi_set_resid() documentation 2023-09-19 12:22:50 +02:00
security KEYS: trusted: allow use of kernel RNG for key material 2023-10-19 23:05:33 +02:00
sh
sound ASoC: doc: Fix undefined SND_SOC_DAPM_NOPM argument 2024-02-23 08:54:46 +01:00
sparc
sphinx docs: kernel_include.py: Cope with docutils 0.21 2024-05-25 16:20:19 +02:00
sphinx-static
spi
staging
target
timers
trace tracing/probes: Add symstr type for dynamic events 2023-08-03 10:22:30 +02:00
translations docs/process/howto: Replace C89 with C11 2023-12-13 18:36:46 +01:00
tty/device_drivers
usb
userspace-api Remove DECnet support from kernel 2023-06-21 15:59:15 +02:00
virt KVM: s390: disable migration mode when dirty tracking is disabled 2023-03-10 09:40:01 +01:00
vm
w1
watchdog
x86 x86/bugs: Use ALTERNATIVE() instead of mds_user_clear static key 2024-04-10 16:18:48 +02:00
xtensa
.gitignore
arch.rst
asm-annotations.rst
atomic_bitops.txt
atomic_t.txt
Changes
CodingStyle
conf.py
COPYING-logo
docutils.conf
dontdiff
index.rst
Kconfig
logo.gif
Makefile
memory-barriers.txt
SubmittingPatches
watch_queue.rst