From: Anatoly Burakov <anatoly.burakov@intel.com>
To: dev@dpdk.org
Cc: bruce.richardson@intel.com
Subject: [PATCH v4 00/25] Intel PMD drivers Rx cleanp
Date: Fri, 30 May 2025 14:56:56 +0100 [thread overview]
Message-ID: <cover.1748612803.git.anatoly.burakov@intel.com> (raw)
In-Reply-To: <c92131e8fcce1901018450bdf97ae004253addf7.1746538072.git.anatoly.burakov@intel.com>
There is certain amount of duplication between different ixgbe, i40e, ice, and
iavf. This patchset specifically focuses on laying groundwork for deduplicating
the Rx side of things - providing common queue definitions, using common Rx
descriptor formats, and some low hanging fruit in terms of Rx code
deduplication, including vectorized implementations.
The first bunch of patches focus on small cleanups:
- variable renames
- definition renames
- using one definition for 16-byte descriptors instead per-driver
- fixing some cruft in IXGBE headers
Starting with patch 15 comes the meat of the patchset:
- creating common Rx queue structure
- unifying Rx rearm code to make use of new unified structures and definitions
- expanding Rx rearm code to have SSE, AVX2, and AVX512 implementations
At the end, there are a couple of patches that unify Rx and Tx mbuf recycle
for some drivers, but more work is needed on that front because we only touch
two drivers in each case - the others do have them, but they're implemented
differently from the ones that were deduplicated.
v3 -> v4:
- Added a lot of cleanups to the patchset
- Moved to using unified Rx descriptor definitions
- Using a single compilation flag to support 16-byte descriptors
- Fixes for whitespace, syntax, etc.
Anatoly Burakov (25):
net/ixgbe: remove unused field in Rx queue struct
net/iavf: make IPsec stats dynamically allocated
net/ixgbe: match variable names to other drivers
net/i40e: match variable name to other drivers
net/ice: match variable name to other drivers
net/i40e: rename 16-byte descriptor define
net/ice: rename 16-byte descriptor define
net/iavf: rename 16-byte descriptor define
net/ixgbe: simplify vector PMD compilation
net/ixgbe: replace always-true check
net/ixgbe: clean up definitions
net/i40e: clean up definitions
net/ice: clean up definitions
net/iavf: clean up definitions
net/ixgbe: create common Rx queue structure
net/i40e: use the common Rx queue structure
net/ice: use the common Rx queue structure
net/iavf: use the common Rx queue structure
net/intel: generalize vectorized Rx rearm
net/i40e: use common Rx rearm code
net/iavf: use common Rx rearm code
net/ixgbe: use common Rx rearm code
net/intel: support wider x86 vectors for Rx rearm
net/intel: add common Rx mbuf recycle
net/intel: add common Tx mbuf recycle
app/test-pmd/config.c | 4 +-
config/rte_config.h | 2 +-
doc/guides/nics/i40e.rst | 4 +-
drivers/net/intel/common/desc.h | 157 +++++++++
.../recycle_mbufs.h} | 78 +++--
drivers/net/intel/common/rx.h | 119 ++++++-
drivers/net/intel/common/rx_vec_arm.h | 105 ++++++
drivers/net/intel/common/rx_vec_ppc.h | 121 +++++++
drivers/net/intel/common/rx_vec_x86.h | 330 ++++++++++++++++++
drivers/net/intel/i40e/i40e_ethdev.c | 4 +-
drivers/net/intel/i40e/i40e_ethdev.h | 4 +-
drivers/net/intel/i40e/i40e_fdir.c | 18 +-
drivers/net/intel/i40e/i40e_pf.c | 2 +-
.../i40e/i40e_recycle_mbufs_vec_common.c | 127 +------
drivers/net/intel/i40e/i40e_rxtx.c | 194 +++++-----
drivers/net/intel/i40e/i40e_rxtx.h | 87 +----
drivers/net/intel/i40e/i40e_rxtx_common_avx.h | 215 ------------
.../net/intel/i40e/i40e_rxtx_vec_altivec.c | 135 ++-----
drivers/net/intel/i40e/i40e_rxtx_vec_avx2.c | 59 ++--
drivers/net/intel/i40e/i40e_rxtx_vec_avx512.c | 59 ++--
drivers/net/intel/i40e/i40e_rxtx_vec_common.h | 4 +-
drivers/net/intel/i40e/i40e_rxtx_vec_neon.c | 124 ++-----
drivers/net/intel/i40e/i40e_rxtx_vec_sse.c | 130 ++-----
drivers/net/intel/iavf/iavf.h | 4 +-
drivers/net/intel/iavf/iavf_ethdev.c | 13 +-
drivers/net/intel/iavf/iavf_rxtx.c | 265 +++++++-------
drivers/net/intel/iavf/iavf_rxtx.h | 169 +--------
drivers/net/intel/iavf/iavf_rxtx_vec_avx2.c | 91 +++--
drivers/net/intel/iavf/iavf_rxtx_vec_avx512.c | 85 +++--
drivers/net/intel/iavf/iavf_rxtx_vec_common.h | 218 +-----------
drivers/net/intel/iavf/iavf_rxtx_vec_neon.c | 80 +----
drivers/net/intel/iavf/iavf_rxtx_vec_sse.c | 148 +++-----
drivers/net/intel/iavf/iavf_vchnl.c | 8 +-
drivers/net/intel/ice/ice_dcf.c | 7 +-
drivers/net/intel/ice/ice_dcf_ethdev.c | 27 +-
drivers/net/intel/ice/ice_ethdev.c | 2 +-
drivers/net/intel/ice/ice_ethdev.h | 4 +-
drivers/net/intel/ice/ice_rxtx.c | 222 ++++++------
drivers/net/intel/ice/ice_rxtx.h | 92 +----
drivers/net/intel/ice/ice_rxtx_common_avx.h | 233 -------------
drivers/net/intel/ice/ice_rxtx_vec_avx2.c | 45 ++-
drivers/net/intel/ice/ice_rxtx_vec_avx512.c | 53 ++-
drivers/net/intel/ice/ice_rxtx_vec_common.h | 6 +-
drivers/net/intel/ice/ice_rxtx_vec_sse.c | 125 ++-----
drivers/net/intel/ixgbe/ixgbe_ethdev.c | 8 +-
drivers/net/intel/ixgbe/ixgbe_ipsec.c | 10 +-
.../ixgbe/ixgbe_recycle_mbufs_vec_common.c | 127 +------
drivers/net/intel/ixgbe/ixgbe_rxtx.c | 251 +++++++------
drivers/net/intel/ixgbe/ixgbe_rxtx.h | 103 ++----
.../net/intel/ixgbe/ixgbe_rxtx_vec_common.h | 15 +-
drivers/net/intel/ixgbe/ixgbe_rxtx_vec_neon.c | 123 ++-----
drivers/net/intel/ixgbe/ixgbe_rxtx_vec_sse.c | 136 ++------
drivers/net/intel/ixgbe/meson.build | 2 +
53 files changed, 1960 insertions(+), 2794 deletions(-)
create mode 100644 drivers/net/intel/common/desc.h
copy drivers/net/intel/{i40e/i40e_recycle_mbufs_vec_common.c => common/recycle_mbufs.h} (69%)
create mode 100644 drivers/net/intel/common/rx_vec_arm.h
create mode 100644 drivers/net/intel/common/rx_vec_ppc.h
create mode 100644 drivers/net/intel/common/rx_vec_x86.h
delete mode 100644 drivers/net/intel/i40e/i40e_rxtx_common_avx.h
delete mode 100644 drivers/net/intel/ice/ice_rxtx_common_avx.h
--
2.47.1
next prev parent reply other threads:[~2025-05-30 13:57 UTC|newest]
Thread overview: 82+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-06 13:27 [PATCH v1 01/13] net/ixgbe: remove unused field in Rx queue struct Anatoly Burakov
2025-05-06 13:27 ` [PATCH v1 02/13] net/iavf: make IPsec stats dynamically allocated Anatoly Burakov
2025-05-06 13:27 ` [PATCH v1 03/13] net/ixgbe: create common Rx queue structure Anatoly Burakov
2025-05-06 13:27 ` [PATCH v1 04/13] net/i40e: use the " Anatoly Burakov
2025-05-06 13:27 ` [PATCH v1 05/13] net/ice: " Anatoly Burakov
2025-05-06 13:27 ` [PATCH v1 06/13] net/iavf: " Anatoly Burakov
2025-05-06 13:27 ` [PATCH v1 07/13] net/intel: generalize vectorized Rx rearm Anatoly Burakov
2025-05-06 13:27 ` [PATCH v1 08/13] net/i40e: use common Rx rearm code Anatoly Burakov
2025-05-06 13:27 ` [PATCH v1 09/13] net/iavf: " Anatoly Burakov
2025-05-06 13:27 ` [PATCH v1 10/13] net/ixgbe: " Anatoly Burakov
2025-05-06 13:28 ` [PATCH v1 11/13] net/intel: support wider x86 vectors for Rx rearm Anatoly Burakov
2025-05-06 13:28 ` [PATCH v1 12/13] net/intel: add common Rx mbuf recycle Anatoly Burakov
2025-05-06 13:28 ` [PATCH v1 13/13] net/intel: add common Tx " Anatoly Burakov
2025-05-12 10:58 ` [PATCH v2 01/13] net/ixgbe: remove unused field in Rx queue struct Anatoly Burakov
2025-05-12 10:58 ` [PATCH v2 02/13] net/iavf: make IPsec stats dynamically allocated Anatoly Burakov
2025-05-12 10:58 ` [PATCH v2 03/13] net/ixgbe: create common Rx queue structure Anatoly Burakov
2025-05-12 10:58 ` [PATCH v2 04/13] net/i40e: use the " Anatoly Burakov
2025-05-12 10:58 ` [PATCH v2 05/13] net/ice: " Anatoly Burakov
2025-05-12 10:58 ` [PATCH v2 06/13] net/iavf: " Anatoly Burakov
2025-05-12 10:58 ` [PATCH v2 07/13] net/intel: generalize vectorized Rx rearm Anatoly Burakov
2025-05-12 10:58 ` [PATCH v2 08/13] net/i40e: use common Rx rearm code Anatoly Burakov
2025-05-12 10:58 ` [PATCH v2 09/13] net/iavf: " Anatoly Burakov
2025-05-12 10:58 ` [PATCH v2 10/13] net/ixgbe: " Anatoly Burakov
2025-05-12 10:58 ` [PATCH v2 11/13] net/intel: support wider x86 vectors for Rx rearm Anatoly Burakov
2025-05-12 10:58 ` [PATCH v2 12/13] net/intel: add common Rx mbuf recycle Anatoly Burakov
2025-05-12 10:58 ` [PATCH v2 13/13] net/intel: add common Tx " Anatoly Burakov
2025-05-12 12:54 ` [PATCH v3 01/13] net/ixgbe: remove unused field in Rx queue struct Anatoly Burakov
2025-05-12 12:54 ` [PATCH v3 02/13] net/iavf: make IPsec stats dynamically allocated Anatoly Burakov
2025-05-14 16:39 ` Bruce Richardson
2025-05-12 12:54 ` [PATCH v3 03/13] net/ixgbe: create common Rx queue structure Anatoly Burakov
2025-05-14 16:45 ` Bruce Richardson
2025-05-12 12:54 ` [PATCH v3 04/13] net/i40e: use the " Anatoly Burakov
2025-05-14 16:52 ` Bruce Richardson
2025-05-15 11:09 ` Burakov, Anatoly
2025-05-15 12:55 ` Bruce Richardson
2025-05-12 12:54 ` [PATCH v3 05/13] net/ice: " Anatoly Burakov
2025-05-14 16:56 ` Bruce Richardson
2025-05-23 11:16 ` Burakov, Anatoly
2025-05-12 12:54 ` [PATCH v3 06/13] net/iavf: " Anatoly Burakov
2025-05-15 10:59 ` Bruce Richardson
2025-05-15 11:11 ` Burakov, Anatoly
2025-05-15 12:57 ` Bruce Richardson
2025-05-12 12:54 ` [PATCH v3 07/13] net/intel: generalize vectorized Rx rearm Anatoly Burakov
2025-05-15 10:56 ` Bruce Richardson
2025-05-12 12:54 ` [PATCH v3 08/13] net/i40e: use common Rx rearm code Anatoly Burakov
2025-05-15 10:58 ` Bruce Richardson
2025-05-12 12:54 ` [PATCH v3 09/13] net/iavf: " Anatoly Burakov
2025-05-12 12:54 ` [PATCH v3 10/13] net/ixgbe: " Anatoly Burakov
2025-05-12 12:54 ` [PATCH v3 11/13] net/intel: support wider x86 vectors for Rx rearm Anatoly Burakov
2025-05-12 12:54 ` [PATCH v3 12/13] net/intel: add common Rx mbuf recycle Anatoly Burakov
2025-05-12 12:54 ` [PATCH v3 13/13] net/intel: add common Tx " Anatoly Burakov
2025-05-15 11:07 ` Bruce Richardson
2025-05-12 12:58 ` [PATCH v3 01/13] net/ixgbe: remove unused field in Rx queue struct Bruce Richardson
2025-05-14 16:32 ` Bruce Richardson
2025-05-15 11:15 ` Burakov, Anatoly
2025-05-15 12:58 ` Bruce Richardson
2025-05-30 13:56 ` Anatoly Burakov [this message]
2025-05-30 13:56 ` [PATCH v4 01/25] " Anatoly Burakov
2025-05-30 13:56 ` [PATCH v4 02/25] net/iavf: make IPsec stats dynamically allocated Anatoly Burakov
2025-05-30 13:56 ` [PATCH v4 03/25] net/ixgbe: match variable names to other drivers Anatoly Burakov
2025-05-30 13:57 ` [PATCH v4 04/25] net/i40e: match variable name " Anatoly Burakov
2025-05-30 13:57 ` [PATCH v4 05/25] net/ice: " Anatoly Burakov
2025-05-30 13:57 ` [PATCH v4 06/25] net/i40e: rename 16-byte descriptor define Anatoly Burakov
2025-05-30 13:57 ` [PATCH v4 07/25] net/ice: " Anatoly Burakov
2025-05-30 13:57 ` [PATCH v4 08/25] net/iavf: " Anatoly Burakov
2025-05-30 13:57 ` [PATCH v4 09/25] net/ixgbe: simplify vector PMD compilation Anatoly Burakov
2025-05-30 13:57 ` [PATCH v4 10/25] net/ixgbe: replace always-true check Anatoly Burakov
2025-05-30 13:57 ` [PATCH v4 11/25] net/ixgbe: clean up definitions Anatoly Burakov
2025-05-30 13:57 ` [PATCH v4 12/25] net/i40e: " Anatoly Burakov
2025-05-30 13:57 ` [PATCH v4 13/25] net/ice: " Anatoly Burakov
2025-05-30 13:57 ` [PATCH v4 14/25] net/iavf: " Anatoly Burakov
2025-05-30 13:57 ` [PATCH v4 15/25] net/ixgbe: create common Rx queue structure Anatoly Burakov
2025-05-30 13:57 ` [PATCH v4 16/25] net/i40e: use the " Anatoly Burakov
2025-05-30 13:57 ` [PATCH v4 17/25] net/ice: " Anatoly Burakov
2025-05-30 13:57 ` [PATCH v4 18/25] net/iavf: " Anatoly Burakov
2025-05-30 13:57 ` [PATCH v4 19/25] net/intel: generalize vectorized Rx rearm Anatoly Burakov
2025-05-30 13:57 ` [PATCH v4 20/25] net/i40e: use common Rx rearm code Anatoly Burakov
2025-05-30 13:57 ` [PATCH v4 21/25] net/iavf: " Anatoly Burakov
2025-05-30 13:57 ` [PATCH v4 22/25] net/ixgbe: " Anatoly Burakov
2025-05-30 13:57 ` [PATCH v4 23/25] net/intel: support wider x86 vectors for Rx rearm Anatoly Burakov
2025-05-30 13:57 ` [PATCH v4 24/25] net/intel: add common Rx mbuf recycle Anatoly Burakov
2025-05-30 13:57 ` [PATCH v4 25/25] net/intel: add common Tx " Anatoly Burakov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cover.1748612803.git.anatoly.burakov@intel.com \
--to=anatoly.burakov@intel.com \
--cc=bruce.richardson@intel.com \
--cc=dev@dpdk.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).