Hi, > -----Original Message----- > From: Suanming Mou <suanmi...@nvidia.com> > Sent: Thursday, February 24, 2022 3:41 PM > To: Slava Ovsiienko <viachesl...@nvidia.com>; Matan Azrad > <ma...@nvidia.com> > Cc: Raslan Darawsheh <rasl...@nvidia.com>; Ori Kam <or...@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