Thread (1 message) 1 message, 1 author, 2025-09-04

RE: [Intel-wired-lan] [PATCH iwl-next v5 01/13] xdp, libeth: make the xdp_init_buff() micro-optimization generic

From: R, Ramu <hidden>
Date: 2025-09-04 16:45:02
Also in: bpf, intel-wired-lan, lkml

-----Original Message-----
From: Intel-wired-lan <redacted> On Behalf Of
Alexander Lobakin
Sent: Tuesday, August 26, 2025 9:25 PM
To: intel-wired-lan@lists.osuosl.org
Cc: Lobakin, Aleksander <aleksander.lobakin@intel.com>; Kubiak, Michal
[off-list ref]; Fijalkowski, Maciej
[off-list ref]; Nguyen, Anthony L
[off-list ref]; Kitszel, Przemyslaw
[off-list ref]; Andrew Lunn [off-list ref];
David S. Miller [off-list ref]; Eric Dumazet
[off-list ref]; Jakub Kicinski [off-list ref]; Paolo Abeni
[off-list ref]; Alexei Starovoitov [off-list ref]; Daniel
Borkmann [off-list ref]; Simon Horman [off-list ref];
NXNE CNSE OSDT ITP Upstreaming
[off-list ref]; bpf@vger.kernel.org;
netdev@vger.kernel.org; linux-kernel@vger.kernel.org
Subject: [Intel-wired-lan] [PATCH iwl-next v5 01/13] xdp, libeth: make the
xdp_init_buff() micro-optimization generic

Often times the compilers are not able to expand two consecutive 32-bit
writes into one 64-bit on the corresponding architectures. This applies to
xdp_init_buff() called for every received frame (or at least once per each 64
frames when the frag size is fixed).
Move the not-so-pretty hack from libeth_xdp straight to xdp_init_buff(), but
using a proper union around ::frame_sz and ::flags.
The optimization is limited to LE architectures due to the structure layout.

One simple example from idpf with the XDP series applied (Clang 22-git,
CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE => -O2):

add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-27 (-27)
Function                                     old     new   delta
idpf_vport_splitq_napi_poll                 5076    5049     -27

The perf difference with XDP_DROP is around +0.8-1% which I see as more
than satisfying.

Suggested-by: Simon Horman <horms@kernel.org>
Signed-off-by: Alexander Lobakin <aleksander.lobakin@intel.com>
---
 include/net/libeth/xdp.h | 11 +----------
 include/net/xdp.h        | 28 +++++++++++++++++++++++++---
 2 files changed, 26 insertions(+), 13 deletions(-)
Tested-by: R,Ramu <redacted>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help