Skip to content

ethdev: refactor remaining uses of flow director

Stephen Hemminger dpdk-dev 4 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v4 Latest23 patches 15 repliesIn review
  2. v323 patches 1 replySuperseded
  3. v222 patches 2 repliesSuperseded
Earlier versions · 1
VersionPostedPatchesRepliesStatus
v1 RFC21 patches2 repliesSuperseded

Patches in v4 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/23drivers/net: remove unused include in dpaa and dpaa2drivers/net/dpaa/dpaa_ptp.c drivers/net/dpaa2/dpaa2_ptp.c+0 -21 reply
2/23ethdev: use DPDK byte order conversionlib/ethdev/sff_8472.c+3 -13 replies
3/23net/ixgbe: remove experimental FDIR APIdrivers/net/intel/ixgbe/ixgbe_ethdev.h drivers/net/intel/ixgbe/ixgbe_fdir.c drivers/net/intel/ixgbe/rte_pmd_ixgbe.c +1 more+0 -1881 reply
4/23net/i40e: remove experimental FDIR APIdoc/guides/nics/i40e.rst drivers/net/intel/i40e/i40e_ethdev.c drivers/net/intel/i40e/i40e_ethdev.h +4 more+3 -2610 replies
5/23app/testpmd: remove support for flow directorapp/test-pmd/cmdline.c app/test-pmd/config.c app/test-pmd/testpmd.h +2 more+17 -2301 reply
6/23app/testpmd: move str_to_flowtype to i40eapp/test-pmd/config.c app/test-pmd/testpmd.h drivers/net/intel/i40e/i40e_testpmd.c+51 -651 reply
7/23app/test: include headers directlyapp/test-eventdev/test_pipeline_common.h app/test/test_bpf.c app/test/test_security_inline_macsec.c +1 more+19 -51 reply
8/23gro: include headers directlylib/gro/gro_tcp4.c lib/gro/gro_tcp6.c lib/gro/gro_vxlan_tcp4.c +2 more+41 -51 reply
9/23crypto/dpaa_sec: include UDP headerdrivers/crypto/dpaa_sec/dpaa_sec.h+2 -01 reply
10/23net/gve: include UDP, SCTP and TCP headersdrivers/net/gve/gve_ethdev.h+12 -10 replies
11/23net/nfp: break implicit dependency on rte_eth_ctrl.hdrivers/net/nfp/nfp_ethdev.c drivers/net/nfp/nfp_net_common.h+7 -30 replies
12/23net/mana: include used network headersdrivers/net/mana/mana.c drivers/net/mana/tx.c+26 -30 replies
13/23node: get UDP headerlib/node/udp4_input.c+9 -80 replies
14/23net/rnp: include network headersdrivers/net/rnp/rnp_rxtx.c+6 -00 replies
15/23net/r8169: get network headersdrivers/net/r8169/r8169_rxtx.c+13 -60 replies
16/23net/ngbe: include network protocol headersdrivers/net/ngbe/ngbe_rxtx.c+4 -00 replies
17/23examples: include network headersexamples/l2fwd-macsec/main.c examples/l3fwd-graph/main.c examples/l3fwd/l3fwd.h+5 -01 reply
18/23net/mlx5: include rte_flow as neededdrivers/net/mlx5/mlx5_ethdev.c drivers/net/mlx5/mlx5_flow.h drivers/net/mlx5/mlx5_txq.c +2 more+5 -00 replies
19/23net/sfc: include rte_flowdrivers/net/sfc/sfc_dp.c+1 -00 replies
20/23net/intel/common: include network headersdrivers/net/intel/common/tx_scalar.h+3 -01 reply
21/23net/enetfec: add missing sys/types.h includedrivers/net/enetfec/enet_regs.h+2 -00 replies
22/23ethdev, drivers: isolate flow directordoc/api/doxy-api-index.md drivers/net/hinic/hinic_pmd_ethdev.h drivers/net/hinic3/hinic3_ethdev.h +19 more+71 -701 reply
23/23doc: add release note about rte_ethdev changesdoc/guides/rel_notes/release_26_11.rst+24 -01 reply

Reviews trailers per patch

12 of 23 patches have a Reviewed-by or Acked-by.

PatchJoshua WashingtonLong LiHemant AgrawalMarat KhaliliBruce Richardson
1/23A-b
2/23A-b
3/23
4/23
5/23A-b
6/23A-b
7/23A-b
8/23A-b
9/23A-b
10/23R-b
11/23
12/23R-b
13/23
14/23
15/23
16/23
17/23A-b
18/23
19/23
20/23A-b
21/23
22/23A-b
23/23

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes. Scroll the table sideways for all 5 reviewers.

Read the v4 thread

Cover letter [PATCH v4 00/23] ethdev: refactor remaining uses of flow director

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.

v4 - fix AI review comments
- fix build of enetfec
- cleanup more leftovers from flow director in testpmd

Stephen Hemminger (23):
drivers/net: remove unused include in dpaa and dpaa2
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 app/testpmd: move str_to_flowtype to i40e app/test: include headers directly
gro: include headers directly crypto/dpaa_sec: include UDP header net/gve: include UDP, SCTP and TCP headers net/nfp: break implicit dependency on rte_eth_ctrl.h net/mana: include used network headers
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                         | 225 ------------------
 app/test-pmd/testpmd.h                        |   6 -
 app/test/test_bpf.c                           |  20 +-
 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/nics/i40e.rst                      |  46 ----
 doc/guides/rel_notes/release_26_11.rst        |  24 ++
 doc/guides/testpmd_app_ug/intro.rst           |   4 +-
 doc/guides/testpmd_app_ug/testpmd_funcs.rst   |  56 +----
 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                  |  13 +-
 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/i40e_testpmd.c         |  51 ++++
 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                       |  26 +-
 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              |   4 +-
 drivers/net/ngbe/ngbe_rxtx.c                  |   4 +
 drivers/net/r8169/r8169_rxtx.c                |  19 +-
 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}  |  62 ++++-
 lib/ethdev/meson.build                        |   2 +-
 lib/ethdev/rte_ethdev.h                       |  13 +-
 lib/ethdev/sff_8472.c                         |   4 +-
 lib/gro/gro_tcp4.c                            |   9 +-
 lib/gro/gro_tcp6.c                            |   9 +-
 lib/gro/gro_vxlan_tcp4.c                      |  10 +-
 lib/gro/gro_vxlan_udp4.c                      |   9 +-
 lib/gro/rte_gro.c                             |   9 +-
 lib/node/udp4_input.c                         |  17 +-
 71 files changed, 324 insertions(+), 848 deletions(-)
 rename lib/ethdev/{rte_eth_ctrl.h => ethdev_fdir.h} (90%)
Signature · 1 line
2.53.0