[PATCH v2 00/22] ethdev: clean up legacy flow director
Stephen Hemminger <[email protected]> Mon, 3 Aug 2026 09:51:46 -0700
| Newsgroups | org.dpdk.dev |
|---|---|
| Message-ID | <[email protected]> |
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 introduced in the 17.02 release. The direct API calls to flow
director were removed in 20.11, but the data structures were never
removed and drivers still use them. Some Intel drivers also carry
driver-specific APIs related to flow director.
These vestiges mean applications can still see flow director data
structures, since rte_ethdev.h pulls in rte_eth_ctrl.h. It also means
several drivers and libraries have come to depend on network header
definitions arriving indirectly.
Since drivers still need these definitions, rte_eth_ctrl.h is renamed
to ethdev_fdir.h and the remaining bits in ethdev_driver.h are folded
into it. This is a driver SDK header, not public API, and exists only
so that drivers still carrying legacy flow director state have
somewhere to get these definitions. New drivers should not use it.
Applications relying on the indirect includes will need to add explicit
ones; this is a source level change only, with no ABI impact. The fdir
option of the testpmd "show port" and "clear port" commands is also
removed.
There is more to do here, but with no Intel hardware and no standalone
tests for this code, I have kept to mechanical refactoring.
v2:
- fix enetfec driver not built on x86
- reword commit messages based on AI review
Stephen Hemminger (22):
drivers/net: remove unused include in dpaa
ethdev: use DPDK byte order conversion
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 headers
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
app/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/common: include network headers
net/enetfec: add missing sys/types.h include
ethdev, drivers: isolate flow director
doc: add release note 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 | 18 +-
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 | 19 ++
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/enetfec/enet_regs.h | 2 +
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 +
67 files changed, 165 insertions(+), 701 deletions(-)
rename lib/ethdev/{rte_eth_ctrl.h => ethdev_fdir.h} (91%)
--
2.53.0