DPDK patches and discussions
 help / color / mirror / Atom feed
From: Raslan Darawsheh <rasland@nvidia.com>
To: Suanming Mou <suanmingm@nvidia.com>,
	Slava Ovsiienko <viacheslavo@nvidia.com>,
	Matan Azrad <matan@nvidia.com>
Cc: Ori Kam <orika@nvidia.com>, "dev@dpdk.org" <dev@dpdk.org>
Subject: RE: [PATCH v4 00/14] net/mlx5: add hardware steering
Date: Thu, 24 Feb 2022 21:12:26 +0000	[thread overview]
Message-ID: <BYAPR12MB3078457EEAE97C2887B555F4CF3D9@BYAPR12MB3078.namprd12.prod.outlook.com> (raw)
In-Reply-To: <20220224134051.18167-1-suanmingm@nvidia.com>

Hi,

> -----Original Message-----
> From: Suanming Mou <suanmingm@nvidia.com>
> Sent: Thursday, February 24, 2022 3:41 PM
> To: Slava Ovsiienko <viacheslavo@nvidia.com>; Matan Azrad
> <matan@nvidia.com>
> Cc: Raslan Darawsheh <rasland@nvidia.com>; Ori Kam <orika@nvidia.com>;
> dev@dpdk.org
> Subject: [PATCH v4 00/14] net/mlx5: add hardware steering
> 
> The Connect-X steering is a lookup hardware mechanism that accesses flow
> tables, matches packets to the rules, and performs specified actions.
> Historically, mlx5 PMD implements several software engines to manage steering
> hardware facility:
> 
>    - FW Steering - Verbs/Direct Verbs, uses FW calls to manage flows
>    - SW Steering - DevX/mlx5dv, uses WQEs to access table memory directly
> 
> However, there are still some disadvantages:
> 
>    - performance is limited, we should invoke firmware either to
>      manage the entire flow, or to handle some internal steering objects
> 
>    - organizing and preparing flow infrastructure (actions, matchers,
>      groups, etc.) on the flow inserting is sure to cause slow flow
>      insertion
> 
>    - security, exposing the low-level steering entries directly to the
>      userspace may cause security risks
> 
> A new hardware WQE based steering operation with codename "HW Steering"
> is going to be introduced to get rid of the security risks. And it will take
> advantage of the recently new introduced async queue-based rte_flow APIs to
> prepare everything in advance to achieve high insertion rate.
> 
> In this new HW steering engine, the original SW steering rte_flow API will not be
> supported in the first implementation, only the new async queue-based flow
> operations is going to be supported. A new steering mode parameter for
> dv_flow_en will be introduced and user will be able to engage the new steering
> engine.
> 
> ---
> 
> v4:
> v3:
>  - rebase to the latest version.
> 
> v2:
>  - New HW steering low-level abstract code added.
>  - commit message improvement.
>  - add protection for rte_flow and rte_flow_async callbacks.
>  - rebase to rte_flow_async v9.
>  - fix some rte_flow error not filled bugs.
> 
> Suanming Mou (14):
>   net/mlx5: introduce hardware steering operation
>   net/mlx5: add HW steering low-level abstract code
>   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
> 
>  doc/guides/nics/mlx5.rst                |   19 +-
>  doc/guides/rel_notes/release_22_03.rst  |    1 +
>  drivers/net/mlx5/linux/mlx5_flow_os.h   |    1 +
>  drivers/net/mlx5/linux/mlx5_os.c        |   22 +-
>  drivers/net/mlx5/meson.build            |    2 +
>  drivers/net/mlx5/mlx5.c                 |   55 +-
>  drivers/net/mlx5/mlx5.h                 |   66 +-
>  drivers/net/mlx5/mlx5_devx.c            |   10 +
>  drivers/net/mlx5/mlx5_dr.c              |  383 ++++
>  drivers/net/mlx5/mlx5_dr.h              |  456 +++++
>  drivers/net/mlx5/mlx5_flow.c            |  721 ++++++-
>  drivers/net/mlx5/mlx5_flow.h            |  287 +++
>  drivers/net/mlx5/mlx5_flow_dv.c         |  186 +-
>  drivers/net/mlx5/mlx5_flow_hw.c         | 2337 +++++++++++++++++++++++
>  drivers/net/mlx5/mlx5_flow_verbs.c      |    7 +-
>  drivers/net/mlx5/mlx5_rx.h              |    9 +-
>  drivers/net/mlx5/mlx5_rxq.c             |   85 +-
>  drivers/net/mlx5/windows/mlx5_flow_os.h |    1 +
>  18 files changed, 4468 insertions(+), 180 deletions(-)  create mode 100644
> drivers/net/mlx5/mlx5_dr.c  create mode 100644 drivers/net/mlx5/mlx5_dr.h
> create mode 100644 drivers/net/mlx5/mlx5_flow_hw.c
> 
> --
> 2.25.1

Series applied to next-net-mlx,

Kindest regards,
Raslan Darawsheh

      parent reply	other threads:[~2022-02-24 21:12 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-10 16:29 [PATCH 00/13] " Suanming Mou
2022-02-10 16:29 ` [PATCH 01/13] net/mlx5: introduce hardware steering operation Suanming Mou
2022-02-10 16:29 ` [PATCH 02/13] net/mlx5: introduce hardware steering enable routine Suanming Mou
2022-02-10 16:29 ` [PATCH 03/13] net/mlx5: add port flow configuration Suanming Mou
2022-02-10 16:29 ` [PATCH 04/13] net/mlx5: add pattern template management Suanming Mou
2022-02-10 16:29 ` [PATCH 05/13] net/mlx5: add action " Suanming Mou
2022-02-10 16:29 ` [PATCH 06/13] net/mlx5: add table management Suanming Mou
2022-02-10 16:29 ` [PATCH 07/13] net/mlx5: add basic flow queue operation Suanming Mou
2022-02-10 16:29 ` [PATCH 08/13] net/mlx5: add flow flush function Suanming Mou
2022-02-10 16:29 ` [PATCH 09/13] net/mlx5: add flow jump action Suanming Mou
2022-02-10 16:29 ` [PATCH 10/13] net/mlx5: add queue and RSS action Suanming Mou
2022-02-10 16:29 ` [PATCH 11/13] net/mlx5: add mark action Suanming Mou
2022-02-10 16:29 ` [PATCH 12/13] net/mlx5: add indirect action Suanming Mou
2022-02-10 16:29 ` [PATCH 13/13] net/mlx5: add header reformat action Suanming Mou
2022-02-22  8:51 ` [PATCH v2 00/14] net/mlx5: add hardware steering Suanming Mou
2022-02-22  8:51   ` [PATCH v2 01/14] net/mlx5: introduce hardware steering operation Suanming Mou
2022-02-22  8:51   ` [PATCH v2 02/14] net/mlx5: add HW steering low-level abstract code Suanming Mou
2022-02-22  8:51   ` [PATCH v2 03/14] net/mlx5: introduce hardware steering enable routine Suanming Mou
2022-02-22  8:51   ` [PATCH v2 04/14] net/mlx5: add port flow configuration Suanming Mou
2022-02-22  8:51   ` [PATCH v2 05/14] net/mlx5: add pattern template management Suanming Mou
2022-02-22  8:51   ` [PATCH v2 06/14] net/mlx5: add action " Suanming Mou
2022-02-22  8:51   ` [PATCH v2 07/14] net/mlx5: add table management Suanming Mou
2022-02-22  8:51   ` [PATCH v2 08/14] net/mlx5: add basic flow queue operation Suanming Mou
2022-02-22  8:51   ` [PATCH v2 09/14] net/mlx5: add flow flush function Suanming Mou
2022-02-22  8:51   ` [PATCH v2 10/14] net/mlx5: add flow jump action Suanming Mou
2022-02-22  8:51   ` [PATCH v2 11/14] net/mlx5: add queue and RSS action Suanming Mou
2022-02-22  8:51   ` [PATCH v2 12/14] net/mlx5: add mark action Suanming Mou
2022-02-22  8:51   ` [PATCH v2 13/14] net/mlx5: add indirect action Suanming Mou
2022-02-22  8:51   ` [PATCH v2 14/14] net/mlx5: add header reformat action Suanming Mou
2022-02-24  3:10 ` [PATCH v3 00/14] net/mlx5: add hardware steering Suanming Mou
2022-02-24  3:10   ` [PATCH v3 01/14] net/mlx5: introduce hardware steering operation Suanming Mou
2022-02-24  3:10   ` [PATCH v3 02/14] net/mlx5: add HW steering low-level abstract code Suanming Mou
2022-02-24  3:10   ` [PATCH v3 03/14] net/mlx5: introduce hardware steering enable routine Suanming Mou
2022-02-24  3:10   ` [PATCH v3 04/14] net/mlx5: add port flow configuration Suanming Mou
2022-02-24  3:10   ` [PATCH v3 05/14] net/mlx5: add pattern template management Suanming Mou
2022-02-24  3:10   ` [PATCH v3 06/14] net/mlx5: add action " Suanming Mou
2022-02-24  3:10   ` [PATCH v3 07/14] net/mlx5: add table management Suanming Mou
2022-02-24  3:10   ` [PATCH v3 08/14] net/mlx5: add basic flow queue operation Suanming Mou
2022-02-24  3:10   ` [PATCH v3 09/14] net/mlx5: add flow flush function Suanming Mou
2022-02-24  3:10   ` [PATCH v3 10/14] net/mlx5: add flow jump action Suanming Mou
2022-02-24  3:10   ` [PATCH v3 11/14] net/mlx5: add queue and RSS action Suanming Mou
2022-02-24  3:10   ` [PATCH v3 12/14] net/mlx5: add mark action Suanming Mou
2022-02-24  3:10   ` [PATCH v3 13/14] net/mlx5: add indirect action Suanming Mou
2022-02-24  3:10   ` [PATCH v3 14/14] net/mlx5: add header reformat action Suanming Mou
2022-02-24 13:40 ` [PATCH v4 00/14] net/mlx5: add hardware steering Suanming Mou
2022-02-24 13:40   ` [PATCH v4 01/14] net/mlx5: introduce hardware steering operation Suanming Mou
2022-02-24 13:40   ` [PATCH v4 02/14] net/mlx5: add HW steering low-level abstract code Suanming Mou
2022-02-24 22:57     ` Ferruh Yigit
2022-02-24 23:49       ` Suanming Mou
2022-02-24 13:40   ` [PATCH v4 03/14] net/mlx5: introduce hardware steering enable routine Suanming Mou
2022-02-24 13:40   ` [PATCH v4 04/14] net/mlx5: add port flow configuration Suanming Mou
2022-02-24 13:40   ` [PATCH v4 05/14] net/mlx5: add pattern template management Suanming Mou
2022-02-24 13:40   ` [PATCH v4 06/14] net/mlx5: add action " Suanming Mou
2022-02-24 13:40   ` [PATCH v4 07/14] net/mlx5: add table management Suanming Mou
2022-02-24 13:40   ` [PATCH v4 08/14] net/mlx5: add basic flow queue operation Suanming Mou
2022-02-24 13:40   ` [PATCH v4 09/14] net/mlx5: add flow flush function Suanming Mou
2022-02-24 13:40   ` [PATCH v4 10/14] net/mlx5: add flow jump action Suanming Mou
2022-02-24 13:40   ` [PATCH v4 11/14] net/mlx5: add queue and RSS action Suanming Mou
2022-02-24 13:40   ` [PATCH v4 12/14] net/mlx5: add mark action Suanming Mou
2022-02-24 13:40   ` [PATCH v4 13/14] net/mlx5: add indirect action Suanming Mou
2022-02-24 13:40   ` [PATCH v4 14/14] net/mlx5: add header reformat action Suanming Mou
2022-02-24 21:12   ` Raslan Darawsheh [this message]

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=BYAPR12MB3078457EEAE97C2887B555F4CF3D9@BYAPR12MB3078.namprd12.prod.outlook.com \
    --to=rasland@nvidia.com \
    --cc=dev@dpdk.org \
    --cc=matan@nvidia.com \
    --cc=orika@nvidia.com \
    --cc=suanmingm@nvidia.com \
    --cc=viacheslavo@nvidia.com \
    /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;
as well as URLs for NNTP newsgroup(s).