From patchwork Sun Sep 27 06:18:46 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawei Wang X-Patchwork-Id: 78893 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 2E0EEA04BC; Sun, 27 Sep 2020 08:20:36 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id A1A471D99D; Sun, 27 Sep 2020 08:19:10 +0200 (CEST) Received: from mellanox.co.il (mail-il-dmz.mellanox.com [193.47.165.129]) by dpdk.org (Postfix) with ESMTP id C874C1D945 for ; Sun, 27 Sep 2020 08:19:01 +0200 (CEST) Received: from Internal Mail-Server by MTLPINE1 (envelope-from jiaweiw@nvidia.com) with SMTP; 27 Sep 2020 09:18:59 +0300 Received: from nvidia.com (gen-l-vrt-280.mtl.labs.mlnx [10.237.45.1]) by labmailer.mlnx (8.13.8/8.13.8) with ESMTP id 08R6IxJe020499; Sun, 27 Sep 2020 09:18:59 +0300 From: Jiawei Wang To: orika@nvidia.com, viacheslavo@nvidia.com, matan@nvidia.com, thomas@monjalon.net, ferruh.yigit@intel.com, marko.kovacevic@intel.com, arybchenko@solarflare.com Cc: dev@dpdk.org, rasland@nvidia.com, ian.stokes@intel.com, fbl@redhat.com, asafp@nvidia.com Date: Sun, 27 Sep 2020 09:18:46 +0300 Message-Id: <1601187539-112694-1-git-send-email-jiaweiw@nvidia.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1600795158-67060-1-git-send-email-jiaweiw@nvidia.com> References: <1600795158-67060-1-git-send-email-jiaweiw@nvidia.com> Subject: [dpdk-dev] [PATCH v8 00/13] support the flow-based traffic sampling X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" This patch set implement the flow sampling for mlx5 driver. The solution is introduced a new rte_flow action that will sample the incoming traffic and send a duplicated traffic with the specified ratio to the application, while the original packet will continue to the target destination. If the sample ratio value be set to 1, means that the packets would be completely mirrored. The sample packet can be assigned with different set of actions from the original packet. MLX5 PMD driver will be responsible for validate and translate the sample action while creating a flow. v8: * Rebase patches based on the latest code. * Update the offloads dependencies document for sample flow. * Update sample flow limitation document. v7: * Removed change in [PATCH 12/12] net/mlx5: support the native port id actions for mirroring, should use sample action. * Update the PMD code to match the new rdma-core API for mirroring. * Optimize the sample flow split routine. * Update code changes and commit log based on the review. * Add E-Switch sample flow limitation document. v6: * Update the function that restore vport through metadata register c0 for FDB sampler. * Add multiple destination support. * Support the remote mirroring with different encapsulation header. * Fix coverity error. v5: * Add the release note. * Remove Make changes since it's deprecated. v4: * Rebase. * Fix the coding style issue. v3: * Remove 'const' of ratio field. * Update description and commit messages. v2: * Rebase patches based on the latest code. * Update rte_flow and release documents. * Fix the compile error. * Removed unnecessary change in [PATCH 7/8] net/mlx5: update the metadata register c0 support since FDB will use 5-tuple to do match. * Update changes based on the comments. Jiawei Wang (13): ethdev: introduce sample action for rte flow common/mlx5: glue for sample action common/mlx5: query sampler object capability via DevX net/mlx5: add the validate sample action net/mlx5: split sample flow into two sub flows net/mlx5: update translate function for sample action app/testpmd: add testpmd command for sample action common/mlx5: add glue function for mirroring net/mlx5: update validation for mirroring flow net/mlx5: update translate function for mirror app/testpmd: add port and encap support for sample action doc: add the sample flow limitation description doc: update offload dependencies document app/test-pmd/cmdline_flow.c | 301 ++++++++- doc/guides/nics/mlx5.rst | 11 + doc/guides/prog_guide/rte_flow.rst | 25 + doc/guides/rel_notes/release_20_11.rst | 6 + drivers/common/mlx5/linux/meson.build | 4 + drivers/common/mlx5/linux/mlx5_glue.c | 37 ++ drivers/common/mlx5/linux/mlx5_glue.h | 35 + drivers/common/mlx5/mlx5_devx_cmds.c | 27 + drivers/common/mlx5/mlx5_devx_cmds.h | 1 + drivers/common/mlx5/mlx5_prm.h | 61 ++ drivers/net/mlx5/linux/mlx5_os.c | 14 + drivers/net/mlx5/mlx5.c | 22 + drivers/net/mlx5/mlx5.h | 6 + drivers/net/mlx5/mlx5_flow.c | 400 +++++++++++- drivers/net/mlx5/mlx5_flow.h | 61 ++ drivers/net/mlx5/mlx5_flow_dv.c | 1126 +++++++++++++++++++++++++++++++- lib/librte_ethdev/rte_flow.c | 1 + lib/librte_ethdev/rte_flow.h | 30 + 18 files changed, 2123 insertions(+), 45 deletions(-)