From patchwork Thu Jan 14 07:07:34 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shiri Kuzin X-Patchwork-Id: 86528 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 2D7E9A0A02; Thu, 14 Jan 2021 08:08:24 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B2C87140EA4; Thu, 14 Jan 2021 08:08:23 +0100 (CET) Received: from mellanox.co.il (mail-il-dmz.mellanox.com [193.47.165.129]) by mails.dpdk.org (Postfix) with ESMTP id 217B8140E73 for ; Thu, 14 Jan 2021 08:08:22 +0100 (CET) Received: from Internal Mail-Server by MTLPINE1 (envelope-from shirik@nvidia.com) with SMTP; 14 Jan 2021 09:08:16 +0200 Received: from nvidia.com (c-141-140-1-007.mtl.labs.mlnx [10.141.140.7]) by labmailer.mlnx (8.13.8/8.13.8) with ESMTP id 10E78GjD013095; Thu, 14 Jan 2021 09:08:16 +0200 From: Shiri Kuzin To: dev@dpdk.org Cc: viacheslavo@nvidia.com, adrien.mazarguil@6wind.com, orika@nvidia.com, ferruh.yigit@intel.com, thomas@monjalon.net, rasland@nvidia.com, andrew.rybchenko@oktetlabs.ru Date: Thu, 14 Jan 2021 09:07:34 +0200 Message-Id: <20210114070743.2377-1-shirik@nvidia.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20210112140241.15914-1-shirik@nvidia.com> References: <20210112140241.15914-1-shirik@nvidia.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v6 0/9] ethdev: introduce GENEVE header TLV option item X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 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" The Geneve tunneling protocol is designed to allow the user to specify some data context on the packet. The GENEVE TLV (Type-Length-Variable) Option is the mean intended to present the user data. In order to support GENEVE TLV Option the new rte_flow item "rte_flow_item_geneve_opt" is introduced. The new item contains the values and masks for the following fields: -option class -option type -length -data The usage example: "flow create 0 ingress pattern eth / ipv4 / udp / geneve vni is 100 / geneve-opt class is 5 length is 1 type is 0 data is 0x66998800 / end actions count / drop / end" New item will be added to testpmd to support raw encap/decap action. v6: - added testpmd support for GENEVE option length. - updated setting GENEVE option length value. v5: - added Devx function to def file. v4: - fixed setting option length. - fixed testpmd calculation of GENEVE option size. - updated documentation. v3: - updated documentation. v2: - removed pedantic. Shiri Kuzin (7): lib/librte_ethdev: introduce GENEVE header TLV option item common/mlx5: check GENEVE TLV support in HCA attributes common/mlx5: create GENEVE TLV option object with DevX net/mlx5: create GENEVE TLV option management net/mlx5: add GENEVE TLV option flow validation net/mlx5: add GENEVE TLV option flow translation doc: update GENEVE TLV option support Viacheslav Ovsiienko (2): app/testpmd: add GENEVE option item support app/testpmd: add GENEVE header option length support app/test-pmd/cmdline_flow.c | 111 +++++++++- doc/guides/nics/mlx5.rst | 23 +- doc/guides/rel_notes/release_21_02.rst | 8 + doc/guides/testpmd_app_ug/testpmd_funcs.rst | 8 + drivers/common/mlx5/mlx5_devx_cmds.c | 62 ++++++ drivers/common/mlx5/mlx5_devx_cmds.h | 9 + drivers/common/mlx5/mlx5_prm.h | 28 ++- .../common/mlx5/rte_common_mlx5_exports.def | 1 + drivers/common/mlx5/version.map | 1 + drivers/net/mlx5/mlx5.c | 2 + drivers/net/mlx5/mlx5.h | 13 ++ drivers/net/mlx5/mlx5_flow.c | 143 ++++++++++++ drivers/net/mlx5/mlx5_flow.h | 15 +- drivers/net/mlx5/mlx5_flow_dv.c | 205 ++++++++++++++++++ lib/librte_ethdev/rte_flow.c | 1 + lib/librte_ethdev/rte_flow.h | 27 +++ 16 files changed, 646 insertions(+), 11 deletions(-)