[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20240510152620.2227312-1-aleksander.lobakin@intel.com>
Date: Fri, 10 May 2024 17:26:08 +0200
From: Alexander Lobakin <aleksander.lobakin@...el.com>
To: intel-wired-lan@...ts.osuosl.org
Cc: Alexander Lobakin <aleksander.lobakin@...el.com>,
Tony Nguyen <anthony.l.nguyen@...el.com>,
"David S. Miller" <davem@...emloft.net>,
Eric Dumazet <edumazet@...gle.com>,
Jakub Kicinski <kuba@...nel.org>,
Paolo Abeni <pabeni@...hat.com>,
nex.sw.ncis.osdt.itp.upstreaming@...el.com,
netdev@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: [PATCH RFC iwl-next 00/12] idpf: XDP chapter I: convert Rx to libeth
Applies on top of "idpf: don't enable NAPI and interrupts prior to
allocating Rx buffers" from Tony's tree.
Sent as RFC as we're at the end of the development cycle and several
kdocs are messed up. I'll fix them when sending non-RFC after the window
opens.
XDP for idpf is currently 5 chapters:
* convert Rx to libeth (this);
* convert Tx and stats to libeth;
* generic XDP and XSk code changes;
* actual XDP for idpf via libeth_xdp;
* XSk for idpf (^).
Part I does the following:
* splits &idpf_queue into 4 (RQ, SQ, FQ, CQ) and puts them on a diet;
* ensures optimal cacheline placement, strictly asserts CL sizes;
* moves currently unused/dead singleq mode out of line;
* reuses libeth's Rx ptype definitions and helpers;
* uses libeth's Rx buffer management for both header and payload;
* eliminates memcpy()s and coherent DMA uses on hotpath, uses
napi_build_skb() instead of in-place short skb allocation.
Most idpf patches, except for the queue split, removes more lines
than adds.
Expect far better memory utilization and +5-8% on Rx depending on
the case (+17% on skb XDP_DROP :>).
Alexander Lobakin (12):
libeth: add cacheline / struct alignment helpers
idpf: stop using macros for accessing queue descriptors
idpf: split &idpf_queue into 4 strictly-typed queue structures
idpf: avoid bloating &idpf_q_vector with big %NR_CPUS
idpf: strictly assert cachelines of queue and queue vector structures
idpf: merge singleq and splitq &net_device_ops
idpf: compile singleq code only under default-n CONFIG_IDPF_SINGLEQ
idpf: reuse libeth's definitions of parsed ptype structures
idpf: remove legacy Page Pool Ethtool stats
libeth: support different types of buffers for Rx
idpf: convert header split mode to libeth + napi_build_skb()
idpf: use libeth Rx buffer management for payload buffer
drivers/net/ethernet/intel/Kconfig | 13 +-
drivers/net/ethernet/intel/idpf/Kconfig | 25 +
drivers/net/ethernet/intel/idpf/Makefile | 3 +-
drivers/net/ethernet/intel/idpf/idpf.h | 10 +-
.../net/ethernet/intel/idpf/idpf_lan_txrx.h | 2 +
drivers/net/ethernet/intel/idpf/idpf_txrx.h | 746 ++++-----
include/net/libeth/cache.h | 64 +
include/net/libeth/rx.h | 19 +
.../net/ethernet/intel/idpf/idpf_ethtool.c | 152 +-
drivers/net/ethernet/intel/idpf/idpf_lib.c | 88 +-
drivers/net/ethernet/intel/idpf/idpf_main.c | 1 +
.../ethernet/intel/idpf/idpf_singleq_txrx.c | 311 ++--
drivers/net/ethernet/intel/idpf/idpf_txrx.c | 1405 +++++++++--------
.../net/ethernet/intel/idpf/idpf_virtchnl.c | 175 +-
drivers/net/ethernet/intel/libeth/rx.c | 122 +-
15 files changed, 1726 insertions(+), 1410 deletions(-)
create mode 100644 drivers/net/ethernet/intel/idpf/Kconfig
create mode 100644 include/net/libeth/cache.h
--
2.45.0
Powered by blists - more mailing lists