DPDK-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Stephen Hemminger <stephen@networkplumber.org>
To: dev@dpdk.org
Cc: Stephen Hemminger <stephen@networkplumber.org>
Subject: [RFC 00/21] ethdev: isolate legacy flow director
Date: Sun,  2 Aug 2026 11:15:05 -0700	[thread overview]
Message-ID: <20260802181835.476887-1-stephen@networkplumber.org> (raw)

The original flow support in DPDK was Intel specific and built around
the flow director feature.  It was superseded by the generic rte_flow
API, and the legacy filter API was deprecated in 17.02 and removed in
20.11.  What survived that removal are the data structures: they were
never deleted, only relocated, and they remain wired into ethdev's
public headers.

The visible cost is include pollution.  Because rte_ethdev.h pulls in
rte_eth_ctrl.h, which pulls in rte_flow.h, every application including
rte_ethdev.h also gets rte_ether.h, rte_ip.h, rte_tcp.h, rte_udp.h and
rte_sctp.h.  A number of drivers and libraries have come to depend on
that, without saying so.

This series breaks that chain.

  01-02  Remove an unused include, and drop the last use of ntohl()
         in ethdev in favour of the rte_byteorder macros.

  03-04  Remove the flow director private APIs from ixgbe and i40e.
         These are experimental, so no deprecation notice is required.

  05     Remove flow director support from testpmd.  The testpmd CLI
         is not a stable interface, but "show port fdir" disappearing
         is user visible, so it is called out in the release notes.

  06-19  Include hygiene.  Each of these adds the network protocol
         headers that a driver, library, test or example was getting
         indirectly.  No functional change; each patch stands alone
         and can be acked by its maintainer without reading the rest
         of the series.

  20     Move the remaining legacy definitions out of rte_eth_ctrl.h
         and ethdev_driver.h into a single lib/ethdev/ethdev_fdir.h,
         included only by the drivers that need it, and drop the
         include from rte_ethdev.h.

  21     Release notes.

ethdev_fdir.h is a transitional home, not a new interface.  It is a
driver SDK header, is not part of the public API, and exists only so
that the drivers still carrying legacy flow director state have
somewhere to get these definitions.  New drivers should not use it.
The intent is to delete it once ixgbe and i40e no longer need it.

This does not touch RTE_ETH_FLOW_* in rte_ethdev.h, which has users
beyond flow director, nor the flow director state still held inside
individual drivers.

Applications that were relying on the indirect includes will need to
add explicit ones; this is a source level change only, with no ABI
impact.

Build tested on x86_64 and aarch64, gcc and clang, with
-Dexamples=all -Dtests=true -Denable_driver_sdk=true.

There is still more to do here but since I don't have Intel
hardware and there is no standalone tests for this stuff
will stick to mechanical refactoring.


Stephen Hemminger (21):
  net/dpaa, net/dpaa2: remove unused include
  ethdev: use byte order instead of ntohl
  net/ixgbe: remove experimental FDIR API
  net/i40e: remove experimental FDIR API
  app/testpmd: remove support for flow director
  net/gve: include IP, UDP and TCP header
  crypto/dpaa_sec: include UDP header
  net/nfp: break implicit dependency on rte_eth_ctrl.h
  net/mana: include used network headers
  gro: include headers directly
  test: include headers directly
  node: get UDP header
  net/rnp: include network headers
  net/r8169: get network headers
  net/ngbe: include network protocol headers
  examples: include network headers
  net/mlx5: include rte_flow as needed
  net/sfc: include rte_flow
  net/intel: include network headers
  ethdev, drivers: isolate flow director
  doc: add release not about rte_ethdev changes

 app/test-eventdev/test_pipeline_common.h      |   1 +
 app/test-pmd/cmdline.c                        |  21 +--
 app/test-pmd/config.c                         | 163 ------------------
 app/test-pmd/testpmd.h                        |   3 -
 app/test/test_bpf.c                           |   3 +
 app/test/test_security_inline_macsec.c        |   2 +
 app/test/test_security_inline_proto.c         |   1 +
 doc/api/doxy-api-index.md                     |   1 -
 doc/guides/rel_notes/release_26_11.rst        |  13 ++
 doc/guides/testpmd_app_ug/testpmd_funcs.rst   |  36 ----
 drivers/crypto/dpaa_sec/dpaa_sec.h            |   2 +
 drivers/net/dpaa/dpaa_ptp.c                   |   1 -
 drivers/net/dpaa2/dpaa2_ptp.c                 |   1 -
 drivers/net/gve/gve_ethdev.h                  |   3 +
 drivers/net/hinic/hinic_pmd_ethdev.h          |   2 +
 drivers/net/hinic3/hinic3_ethdev.h            |   1 +
 drivers/net/intel/common/tx_scalar.h          |   3 +
 drivers/net/intel/cpfl/cpfl_flow_engine_fxp.c |   2 +-
 drivers/net/intel/e1000/e1000_ethdev.h        |   1 +
 drivers/net/intel/e1000/igc_filter.h          |   2 +-
 drivers/net/intel/i40e/i40e_ethdev.c          |   4 +-
 drivers/net/intel/i40e/i40e_ethdev.h          |   5 +-
 drivers/net/intel/i40e/i40e_fdir.c            | 140 ---------------
 drivers/net/intel/i40e/i40e_flow.c            |   3 +-
 drivers/net/intel/i40e/rte_pmd_i40e.c         |  34 ----
 drivers/net/intel/i40e/rte_pmd_i40e.h         |  33 ----
 drivers/net/intel/iavf/iavf_fsub.c            |   2 +-
 drivers/net/intel/iavf/iavf_hash.c            |   2 +-
 drivers/net/intel/ice/ice_acl_filter.c        |   2 +-
 drivers/net/intel/ice/ice_ethdev.h            |   2 +
 drivers/net/intel/ice/ice_generic_flow.c      |   1 +
 drivers/net/intel/ice/ice_hash.c              |   2 +-
 drivers/net/intel/ice/ice_switch_filter.c     |   2 +-
 drivers/net/intel/ipn3ke/ipn3ke_flow.c        |   2 +-
 drivers/net/intel/ixgbe/ixgbe_ethdev.h        |   6 +-
 drivers/net/intel/ixgbe/ixgbe_fdir.c          | 117 -------------
 drivers/net/intel/ixgbe/rte_pmd_ixgbe.c       |  34 ----
 drivers/net/intel/ixgbe/rte_pmd_ixgbe.h       |  32 ----
 drivers/net/mana/mana.c                       |   2 +
 drivers/net/mana/tx.c                         |   3 +
 drivers/net/mlx5/mlx5_ethdev.c                |   1 +
 drivers/net/mlx5/mlx5_flow.h                  |   1 +
 drivers/net/mlx5/mlx5_txq.c                   |   1 +
 drivers/net/mlx5/mlx5_utils.c                 |   1 +
 drivers/net/mlx5/mlx5_utils.h                 |   1 +
 drivers/net/nbl/nbl_include/nbl_include.h     |   1 +
 drivers/net/nfp/nfp_ethdev.c                  |   6 +-
 drivers/net/nfp/nfp_net_common.h              |   1 +
 drivers/net/ngbe/ngbe_rxtx.c                  |   4 +
 drivers/net/r8169/r8169_rxtx.c                |   3 +
 drivers/net/rnp/rnp_rxtx.c                    |   6 +
 drivers/net/sfc/sfc_dp.c                      |   1 +
 drivers/net/txgbe/txgbe_ethdev.h              |   1 +
 examples/l2fwd-macsec/main.c                  |   2 +
 examples/l3fwd-graph/main.c                   |   1 +
 examples/l3fwd/l3fwd.h                        |   2 +
 lib/ethdev/ethdev_driver.h                    |  36 ----
 lib/ethdev/{rte_eth_ctrl.h => ethdev_fdir.h}  |  58 +++++--
 lib/ethdev/meson.build                        |   2 +-
 lib/ethdev/rte_ethdev.h                       |  13 +-
 lib/ethdev/sff_8472.c                         |   3 +-
 lib/gro/gro_tcp4.c                            |   1 +
 lib/gro/gro_vxlan_tcp4.c                      |   4 +-
 lib/gro/gro_vxlan_udp4.c                      |   1 +
 lib/gro/rte_gro.c                             |   1 +
 lib/node/udp4_input.c                         |   1 +
 66 files changed, 147 insertions(+), 696 deletions(-)
 rename lib/ethdev/{rte_eth_ctrl.h => ethdev_fdir.h} (91%)

-- 
2.53.0


             reply	other threads:[~2026-08-02 18:18 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-02 18:15 Stephen Hemminger [this message]
2026-08-02 18:15 ` [RFC 01/21] net/dpaa, net/dpaa2: remove unused include Stephen Hemminger
2026-08-02 18:15 ` [RFC 02/21] ethdev: use byte order instead of ntohl Stephen Hemminger
2026-08-02 18:15 ` [RFC 03/21] net/ixgbe: remove experimental FDIR API Stephen Hemminger
2026-08-02 18:15 ` [RFC 04/21] net/i40e: " Stephen Hemminger
2026-08-02 18:15 ` [RFC 05/21] app/testpmd: remove support for flow director Stephen Hemminger
2026-08-02 18:15 ` [RFC 06/21] net/gve: include IP, UDP and TCP header Stephen Hemminger
2026-08-02 18:15 ` [RFC 07/21] crypto/dpaa_sec: include UDP header Stephen Hemminger
2026-08-02 18:15 ` [RFC 08/21] net/nfp: break implicit dependency on rte_eth_ctrl.h Stephen Hemminger
2026-08-02 18:15 ` [RFC 09/21] net/mana: include used network headers Stephen Hemminger
2026-08-02 18:15 ` [RFC 10/21] gro: include headers directly Stephen Hemminger
2026-08-02 18:15 ` [RFC 11/21] test: " Stephen Hemminger
2026-08-02 19:37   ` Marat Khalili
2026-08-03  3:01     ` Stephen Hemminger
2026-08-02 18:15 ` [RFC 12/21] node: get UDP header Stephen Hemminger
2026-08-02 18:15 ` [RFC 13/21] net/rnp: include network headers Stephen Hemminger
2026-08-02 18:15 ` [RFC 14/21] net/r8169: get " Stephen Hemminger
2026-08-02 18:15 ` [RFC 15/21] net/ngbe: include network protocol headers Stephen Hemminger
2026-08-02 18:15 ` [RFC 16/21] examples: include network headers Stephen Hemminger
2026-08-02 18:15 ` [RFC 17/21] net/mlx5: include rte_flow as needed Stephen Hemminger
2026-08-02 18:15 ` [RFC 18/21] net/sfc: include rte_flow Stephen Hemminger
2026-08-02 18:15 ` [RFC 19/21] net/intel: include network headers Stephen Hemminger
2026-08-02 18:15 ` [RFC 20/21] ethdev, drivers: isolate flow director Stephen Hemminger
2026-08-02 18:15 ` [RFC 21/21] doc: add release not about rte_ethdev changes Stephen Hemminger

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=20260802181835.476887-1-stephen@networkplumber.org \
    --to=stephen@networkplumber.org \
    --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