From patchwork Sun Jul 12 19:26:17 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sriharsha Basavapatna X-Patchwork-Id: 1327592 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=openvswitch.org (client-ip=140.211.166.138; helo=whitealder.osuosl.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=openvswitch.org Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=broadcom.com header.i=@broadcom.com header.a=rsa-sha256 header.s=google header.b=SIAK3aHM; dkim-atps=neutral Received: from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4B4cQ86Vq1z9sR4 for ; Mon, 13 Jul 2020 05:33:20 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id 3EF6C88B0A; Sun, 12 Jul 2020 19:33:19 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 8jG5CNvCVRkW; Sun, 12 Jul 2020 19:33:18 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by whitealder.osuosl.org (Postfix) with ESMTP id 18C6C887C6; Sun, 12 Jul 2020 19:33:18 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id F41DDC088E; Sun, 12 Jul 2020 19:33:17 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@lists.linuxfoundation.org Received: from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136]) by lists.linuxfoundation.org (Postfix) with ESMTP id 3BD6BC1831 for ; Sun, 12 Jul 2020 19:33:17 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id 4204C26362 for ; Sun, 12 Jul 2020 19:33:08 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id INdaQpnkHSIY for ; Sun, 12 Jul 2020 19:33:05 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from mail-oi1-f193.google.com (mail-oi1-f193.google.com [209.85.167.193]) by silver.osuosl.org (Postfix) with ESMTPS id C24C120356 for ; Sun, 12 Jul 2020 19:33:05 +0000 (UTC) Received: by mail-oi1-f193.google.com with SMTP id j11so9235637oiw.12 for ; Sun, 12 Jul 2020 12:33:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=ytCVS+rRkw5+Z74B0NSIes2o9uv+hftBntCZpsMjIHU=; b=SIAK3aHM76YQ9wiHo2AW007+vq/ziYR9+sFKhh6IkZDQz1xkumbo0cn8i5NSu4Xwy9 MHBk6FpDt8XD9ei2F59E87Q1644lf+372Tgxx3EXKIWULa7R2tnUFwGoJrEdR3g12NZY rIQpiSTDl4J/pjkTNQj46lB/nChlKP6DgBjII= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=ytCVS+rRkw5+Z74B0NSIes2o9uv+hftBntCZpsMjIHU=; b=e3vwF/zxPEaBqwjM01eSBejEESfg/MW+T3jCqhqY+Du7i7z+guEVcSVbtzxKRVDh4e C6Canemn0m5iwHAEytcoNzQkNNfJElaVY/EVTvxN65s80lZazqOPaK2FzgEFHVgxzFZi PwZ6O+1ljTSsVwwacfl6e3uS2nItav1sX6z2sXR2WmZct/el8T3UnZdCjlRlGVXwbzd0 UAiraf1pGpUSqGFDy/UNQH3Xk88DGum+2a/HLl1B+RSLrinkXrgU8HrNLgbaivxRNa8c /kYNkyy6n49/lvpv0whPGcKGk6iO+as6oCBPk5SLHRmBhA7ancAchGf7t44CPJTnyddj olAg== X-Gm-Message-State: AOAM532WHuCaviJMeb5RnbvrSqs8fpL9T8dVhcShnAgoNVI6jpyMbJrg HqlJvl2YSk8DyIzGCSCVRHxKxBFY0bGuZS9wS2do+daAYgOboD85uyd88xptEQnjh5TftU7rLhh g2ZDIm9sM/6RbXw4RbI2vkbnHhOUXw3+C3kATC8BF1GsNxMHaaZohroQb69ktZy1129vVxuDZem 52pJgv X-Google-Smtp-Source: ABdhPJxkENCNIGZKRspWeLyqIiZy0e9St8zhFhBXw8VqVn7sTUBS5TpvhqWekJZZEehLwQG0ak+auA== X-Received: by 2002:a17:90a:cc03:: with SMTP id b3mr15087936pju.80.1594582000843; Sun, 12 Jul 2020 12:26:40 -0700 (PDT) Received: from dhcp-10-123-153-36.dhcp.broadcom.net ([192.19.234.250]) by smtp.gmail.com with ESMTPSA id 17sm9124023pjl.30.2020.07.12.12.26.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Jul 2020 12:26:39 -0700 (PDT) To: dev@openvswitch.org Date: Sun, 12 Jul 2020 15:26:17 -0400 Message-Id: <20200712192625.7359-1-sriharsha.basavapatna@broadcom.com> X-Mailer: git-send-email 2.25.0.rc2 MIME-Version: 1.0 Subject: [ovs-dev] [PATCH v6 0/8] netdev datapath: Partial action offload X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Sriharsha Basavapatna via dev From: Sriharsha Basavapatna Reply-To: Sriharsha Basavapatna Errors-To: ovs-dev-bounces@openvswitch.org Sender: "dev" Hi, This patchset extends the "Partial HW acceleration" mode to offload a part of the action processing to HW, instead of offloading just lookup (MARK/RSS), for "vhost-user" ports. This is referred to as "Partial Action Offload". This mode does not require SRIOV/switchdev configuration. In this mode, forwarding (output) action is still performed by OVS-DPDK SW datapath. Thanks, -Harsha ****** v5-->v6: - Addressed the following comments from Ilya: - Introduced new flow offload APIs for egress & ingress partial offload - Added netdev-offload-dpdk implementation of the new APIs - Removed netdev specific info from the datapath layer - Removed flow_api_supported() checks from the datapath layer - Added dp class-specific assistance to avoid impact to kernel-dp (vlan) - Updated flow-dump identifiers for partial-action offload v4-->v5: - Rebased to the current ovs-master (includes vxlan-encap full offload) - Added 2 patches to support partial offload of vlan push/pop actions v3-->v4: - Removed mega-ufid mapping code from dpif-netdev (patch #5) and updated the existing mega-ufid mapping code in netdev-offload-dpdk to support partial action offload. v2-->v3: - Added more commit log comments in the refactoring patch (#1). - Removed wrapper function for should_partial_offload_egress(). - Removed partial offload check for output action in parse_flow_actions(). - Changed patch sequence (skip-encap and get-stats before offload patch). - Removed locking code (details in email), added inline comments. - Moved mega-ufid mapping code from skip-encap (#3) to the offload patch (#5). v1-->v2: Fixed review comments from Eli: - Revamped action list parsing to reject multiple clone/output actions - Updated comments to reflect support for single clone/output action - Removed place-holder function for ingress partial action offload - Created a separate patch (#2) to query dpdk-vhost netdevs - Set transfer attribute to 0 for partial action offload - Updated data type of 'dp_flow' in 'dp_netdev_execute_aux' - Added a mutex to synchronize between offload and datapath threads - Avoid fall back to mark/rss when egress partial offload fails - Drop count action for partial action offload Other changes: - Avoid duplicate offload requests for the same mega-ufid (from PMD threads) - Added a coverage counter to track pkts with tnl-push partial offloaded - Fixed dp_netdev_pmd_remove_flow() to delete partial offloaded flow ****** Sriharsha Basavapatna (8): dpif-netdev: Refactor dp_netdev_flow_offload_put() netdev-dpdk: provide a function to identify dpdk-vhost netdevs dpif-netdev: Skip encap action during datapath execution dpif-netdev: Support flow_get() with partial-action-offload dpif-netdev: Support partial-action-offload of VXLAN encap flow dpif-netdev: Support partial offload of PUSH_VLAN action dpif-netdev: Support partial offload of POP_VLAN action dpctl: update flow-dump output to reflect partial action offload lib/dpctl.c | 5 +- lib/dpif-netdev.c | 295 +++++++++++++++++++++++++------ lib/dpif.c | 2 +- lib/netdev-dpdk.c | 5 + lib/netdev-dpdk.h | 1 + lib/netdev-offload-dpdk.c | 315 +++++++++++++++++++++++++++++++--- lib/netdev-offload-provider.h | 13 ++ lib/netdev-offload.c | 102 +++++++++++ lib/netdev-offload.h | 12 +- lib/odp-execute.c | 25 ++- lib/odp-execute.h | 5 +- 11 files changed, 693 insertions(+), 87 deletions(-)