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
prev 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).