mbox

[00/13] net/mlx5: add hardware steering

Message ID 20220210162926.20436-1-suanmingm@nvidia.com (mailing list archive)
Headers

Message

Suanming Mou Feb. 10, 2022, 4:29 p.m. UTC
As the new queue-based flow rules management mechanism is introduced
to the rte_flow. A new steering mode PMD code is also developed to
take advantage of the new API.

The HW steering prepares the required flow resources in advanced from
the hints when create template table. That means the matcher and most
of the actions have been prepared during flow table creation. Limited
left actions will be constructed during flow creation if needed.

A flow postpone attribute bit describes if flow creation/destruction
should be applied to the HW directly or not. An extra push function
has also been prepared to force push all the enqueued flows to HW.

Once the flow has been applied to the HW, the pull function will be
called to get the enqueued creation/destruction flows.

The asynchronous flow creation and destruction are handled by queue
jobs. The queue job descriptor is currently introduced to convey the
flow information and operation type between the flow management in
in pull function.

Flow rule memory is allocated in PMD layer instead of allocating from
HW layer. While destroying the flow, the flow rule memory can only be
freed after the event received.

*** THIS PATCH SET DEPENDS ON THE NEW RTE_FLOW API ***


Suanming Mou (13):
  net/mlx5: introduce hardware steering operation
  net/mlx5: introduce hardware steering enable routine
  net/mlx5: add port flow configuration
  net/mlx5: add pattern template management
  net/mlx5: add action template management
  net/mlx5: add table management
  net/mlx5: add basic flow queue operation
  net/mlx5: add flow flush function
  net/mlx5: add flow jump action
  net/mlx5: add queue and RSS action
  net/mlx5: add mark action
  net/mlx5: add indirect action
  net/mlx5: add header reformat action

 drivers/net/mlx5/linux/mlx5_flow_os.h |    1 +
 drivers/net/mlx5/linux/mlx5_os.c      |   22 +-
 drivers/net/mlx5/meson.build          |    1 +
 drivers/net/mlx5/mlx5.c               |   50 +-
 drivers/net/mlx5/mlx5.h               |   63 +-
 drivers/net/mlx5/mlx5_devx.c          |   10 +
 drivers/net/mlx5/mlx5_flow.c          |  569 +++++-
 drivers/net/mlx5/mlx5_flow.h          |  276 +++
 drivers/net/mlx5/mlx5_flow_dv.c       |  175 +-
 drivers/net/mlx5/mlx5_flow_hw.c       | 2284 +++++++++++++++++++++++++
 drivers/net/mlx5/mlx5_flow_verbs.c    |    7 +-
 drivers/net/mlx5/mlx5_rx.h            |    9 +-
 drivers/net/mlx5/mlx5_rxq.c           |   78 +-
 13 files changed, 3374 insertions(+), 171 deletions(-)
 create mode 100644 drivers/net/mlx5/mlx5_flow_hw.c