mbox

[v1,00/12] ethdev: rework transfer flow API

Message ID 20211001134716.1608857-1-andrew.rybchenko@oktetlabs.ru (mailing list archive)
Headers

Message

Andrew Rybchenko Oct. 1, 2021, 1:47 p.m. UTC
  The patch series provides a number of changesets which are supposed to
orderly address transfer flow API problems: hard to understand,
ambiguous definition, different implemantation of the same actions
by different PMDs etc.

As a starting point, items and actions ETHDEV, ESWITCH_PORT are added
and the corresponding diagrams are placed in relevant documentation
sections to demonstrate the intended meaning of the new primitives.
The use of the new items effectively defines traffic direction in
a clear and concise manner. On this ground, the use of attributes
"ingress" and "egress" in "transfer" flows is deprecated.

At the same time, the patch series deprecates the use of items and
actions PF, VF and PHY_PORT. They’re hard-to-use by applications as they
suggest that applications have some extra knowledge of the underlying HW.
Items and actions PORT_ID are also deprecated on similar grounds: they
are ambiguous (which attendees of the said gathering can attest to) as
they do not specify precisely whether the target port is an ethdev or
an e-switch port connected to that ethdev.

The patch series address deprecation notices about PORT_ID semantics,
ingress/egress attributes and implicit filtering in the case of transfer
flow rules.

The patch series is the next step in accordance with ideas previously
shared in RFC [1]. It supersedes patches [2] and [3] which should be
discarded since they are step in different direction.

The patch series updates PMDs which support PORT_ID item and action
to support added replacements except:
 - PORT_ID item in the case of net/mlx5 since code is really complicated
   there and it would be better if it is updated by the maintainer and
   tested appropriately;
 - ESWITCH_PORT action in the case of net/sfc since required code
   depends on port representors patch series (patches exist but should
   be submitted in a right order to apply cleanly and build successfully
   by automation)

Patches for transfer proxy mentioned in RFC [1] are in progress.

[1] https://patches.dpdk.org/project/dpdk/patch/20210907125157.3843-1-ivan.malov@oktetlabs.ru/
[2] https://patches.dpdk.org/project/dpdk/patch/20210901151104.3923889-1-andrew.rybchenko@oktetlabs.ru/
[3] https://patches.dpdk.org/project/dpdk/patch/20210903074610.313622-1-andrew.rybchenko@oktetlabs.ru/

Andrew Rybchenko (6):
  net/bnxt: support ethdev and E-Switch port flow items
  net/bnxt: support ethdev and E-Switch port flow actions
  net/enic: support ethdev and E-Switch port flow actions
  net/mlx5: support E-Switch port flow action
  net/octeontx2: support ethdev flow action
  net/sfc: support ethdev flow item

Ivan Malov (6):
  ethdev: add ethdev item to flow API
  ethdev: add eswitch port item to flow API
  ethdev: add ethdev action to flow API
  ethdev: add eswitch port action to flow API
  ethdev: deprecate hard-to-use or ambiguous items and actions
  ethdev: deprecate direction attributes in transfer flows

 app/test-pmd/cmdline_flow.c                   | 102 +++++++++++
 doc/guides/prog_guide/rte_flow.rst            | 157 +++++++++++++++--
 doc/guides/rel_notes/deprecation.rst          |  18 +-
 doc/guides/rel_notes/release_21_11.rst        |   9 +
 doc/guides/testpmd_app_ug/testpmd_funcs.rst   |  16 ++
 drivers/net/bnxt/tf_ulp/ulp_rte_handler_tbl.c |  22 ++-
 drivers/net/bnxt/tf_ulp/ulp_rte_parser.c      | 164 +++++++++++++-----
 drivers/net/bnxt/tf_ulp/ulp_rte_parser.h      |  18 +-
 drivers/net/enic/enic_fm_flow.c               |  93 ++++++++--
 drivers/net/mlx5/mlx5_flow_dv.c               |  62 +++++--
 drivers/net/octeontx2/otx2_flow_parse.c       |  16 +-
 drivers/net/sfc/sfc_mae.c                     |  72 ++++++++
 lib/ethdev/rte_flow.c                         |   4 +
 lib/ethdev/rte_flow.h                         | 157 ++++++++++++++++-
 14 files changed, 793 insertions(+), 117 deletions(-)