From patchwork Mon Sep 5 14:46:02 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eli Britstein X-Patchwork-Id: 1674323 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=openvswitch.org (client-ip=2605:bc80:3010::133; helo=smtp2.osuosl.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=Nvidia.com header.i=@Nvidia.com header.a=rsa-sha256 header.s=selector2 header.b=ZpL9MKY6; dkim-atps=neutral Received: from smtp2.osuosl.org (smtp2.osuosl.org [IPv6:2605:bc80:3010::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4MLrv80BDXz1yhk for ; Tue, 6 Sep 2022 00:46:43 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id 9D0C740A62; Mon, 5 Sep 2022 14:46:41 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org 9D0C740A62 Authentication-Results: smtp2.osuosl.org; dkim=fail reason="signature verification failed" (2048-bit key, unprotected) header.d=Nvidia.com header.i=@Nvidia.com header.a=rsa-sha256 header.s=selector2 header.b=ZpL9MKY6 X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp2.osuosl.org ([127.0.0.1]) by localhost (smtp2.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id RxMTDfre8uSp; Mon, 5 Sep 2022 14:46:40 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp2.osuosl.org (Postfix) with ESMTPS id BA4A1408E8; Mon, 5 Sep 2022 14:46:39 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org BA4A1408E8 Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 8F1DCC0033; Mon, 5 Sep 2022 14:46:39 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@lists.linuxfoundation.org Received: from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by lists.linuxfoundation.org (Postfix) with ESMTP id DD5E5C002D for ; Mon, 5 Sep 2022 14:46:37 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id A37058141F for ; Mon, 5 Sep 2022 14:46:37 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org A37058141F Authentication-Results: smtp1.osuosl.org; dkim=pass (2048-bit key, unprotected) header.d=Nvidia.com header.i=@Nvidia.com header.a=rsa-sha256 header.s=selector2 header.b=ZpL9MKY6 X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id V6cZRlgueQga for ; Mon, 5 Sep 2022 14:46:36 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org 919A880D44 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2078.outbound.protection.outlook.com [40.107.223.78]) by smtp1.osuosl.org (Postfix) with ESMTPS id 919A880D44 for ; Mon, 5 Sep 2022 14:46:36 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fvER3Zv+SVYu5HEC6V8q+dxl7Kot/Di7EGK4y9HHuzgN+gae78jGDeDPl/5ZG2l6cnOeKNidEsAsPabRM6tx8OYi7NYaBhtVmeVtfv8amGdWfkjHobVjdcaAF8t3U7Na5IFp0HUH5RkP9oCW1FTl9bMcNSu0zCbWyjeSP6FeBg9IOyBrDI3b8+SHUMJAs9qZNV/a5gQLM+KY1pMTxYretvQDx9gTnNWZSv099qX3YBmEk+vv/VWzj3gblygE9lMUvnHirR0Mq98WD7dya03e46WOsYeRvJBsX5CiFcTZ42TfP3QorU7+TDEeyP6LdBeFmCVZccnNfY36p1js0G5Frw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Q/zk5zteICK1SEQQ95zzX07KFzzA5SsWjjOuBzAkUOs=; b=MwObuTymbU6DU+tGg3nIuIq69AGBd9WOfBLTBCmbxE5C2Zonp4Yiqql1z6/oo1+fF9raL/IcLJRbduImX6YopkHOpaXbBT808zku288nAk/Le8HeqtkDk4n9g+o9HollkaDA+mxuOpF/zGfL4TJdI4ReHfG/XU6+BmqeG/przs2j5GaUu7i7K9VodwytA4NZ9mSk4K6TMG2Ic36P4HJzQ/fYLsLpf1ggb/K38y/3d/tlrqNRtRNzhxtc3s/Sdfe5FNLXHekiX3wCr9DXprxKdFxQaqFFnvNxmPCE4BAQhIvZZHjLion5p6AX6mxjGFDVzjtRVYB4yTFdKSu3wmxdEA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 12.22.5.235) smtp.rcpttodomain=163.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Q/zk5zteICK1SEQQ95zzX07KFzzA5SsWjjOuBzAkUOs=; b=ZpL9MKY6luveX/Z1Eemi+9xmxgKWI/12jubMYy2gJwooJGEFWnfrAmGsBvC8bosCFbhN+a9v9IcCOJQdf8PM4sdiCrTO3gSisqfzA8p9HrEJNkJCYLuVIKbKKd1OGvoytTU7VJI3hSnOD4VDFXkXjJVJLnR/4sHbqJSlCi+1h7VuXQFcSbC0nuyyHO80iPZDQm9FptcH1C75fFJn2o3c08OeI+8yIqkU0HXOV9yHv4A4/koBl9tMYNBFqau66C96eevWGFNDspWIcfr/dBNY2ByejLNTaUtCcohv8CNOuOM43pLly5H96D9kVeS/UR+OPltgX1Qrn2wTF7mUTwWVKQ== Received: from MW4PR03CA0216.namprd03.prod.outlook.com (2603:10b6:303:b9::11) by BY5PR12MB4241.namprd12.prod.outlook.com (2603:10b6:a03:20c::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5588.10; Mon, 5 Sep 2022 14:46:33 +0000 Received: from CO1NAM11FT024.eop-nam11.prod.protection.outlook.com (2603:10b6:303:b9:cafe::73) by MW4PR03CA0216.outlook.office365.com (2603:10b6:303:b9::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5588.12 via Frontend Transport; Mon, 5 Sep 2022 14:46:33 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 12.22.5.235) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 12.22.5.235 as permitted sender) receiver=protection.outlook.com; client-ip=12.22.5.235; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (12.22.5.235) by CO1NAM11FT024.mail.protection.outlook.com (10.13.174.162) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.5588.10 via Frontend Transport; Mon, 5 Sep 2022 14:46:33 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by DRHQMAIL107.nvidia.com (10.27.9.16) with Microsoft SMTP Server (TLS) id 15.0.1497.38; Mon, 5 Sep 2022 14:46:32 +0000 Received: from nvidia.com (10.126.231.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.29; Mon, 5 Sep 2022 07:46:30 -0700 To: , Ilya Maximets Date: Mon, 5 Sep 2022 17:46:02 +0300 Message-ID: <20220905144603.3585105-1-elibr@nvidia.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-Originating-IP: [10.126.231.35] X-ClientProxiedBy: rnnvmail201.nvidia.com (10.129.68.8) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 12079628-53db-4c5a-15d5-08da8f4d6d29 X-MS-TrafficTypeDiagnostic: BY5PR12MB4241:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: rCHPnxWoqIv3PXzCMWN06r9N4WcxD5JHwco9+9/b86uaHFl1NtNn+JHlMAbRi9pX57yENjnzMk7/5eoBrw7VWWHMrwWuep6+mt2auMTbnhElo3jDUbZ1WV17MPLatBOuj75RlrXnQZNcl4ZB2AXIvgyu3zd2SRUBgOrXWwlw/uZXvH0KtmCGm3YqxMCAWSQtSXg3uMk1m9T3NLNCvONTYA3xBiT3gyY2QEE9TDzW3U0f9iw6WE8SOdwOZq/OAvbizf80E2eHZgQRW4Ko8ODIBeVSEp6HYd1Sw35RKhlSeO6cOfoMXdtMTmZ04zKjp09JrpIH1uwxiQzNtXpVUOfl25pQ9q5VK9SBN19S5VET8yv6QGxN/r7SZ0EC+i3qj/NKdYGwWauLuUZIkv6v+sj2T8odxuO2WOJQAJwyxdelEMmTOfWSJCLGPBeXXh4k93h7Oo3up18hShrbiM6zvinA/qzkMrybkTTQf+QmrCPe3PbUnt+p4xgvXIoopYI2s5SxJjxDDrBOnrHZfaMNZHDItkkqypaMZ/RSmHPKNIAqes7nhtw7Tk5tUpHBPhQ2EpBcSNvyLL6Cp5VB6yOJz8PgwtAb/zYsA/1rTOjjd9TOu9MdF6FbPNAsQXyEtcxZIrbBkxbjo5Y5nmT3V/mTwPvas/X54Ozz3Acm04zXVgLsHKoTZKc4OtE5ruK0bAEzciNzGnif+0Vyyy7vZqjSpy7+g4ot+JIiWeKjZZxoqQPaqMOamHN70txB7fvYUG4JOq2VXOObOAK1Y6tRp135yr0EEJiA+rIxYPmJZkVLRBgGDxHf6psSglKQKslDvckSR8ku X-Forefront-Antispam-Report: CIP:12.22.5.235; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:InfoNoRecords; CAT:NONE; SFS:(13230016)(4636009)(396003)(39860400002)(346002)(136003)(376002)(36840700001)(46966006)(40470700004)(81166007)(86362001)(55016003)(40480700001)(82310400005)(8936002)(110136005)(70586007)(70206006)(4326008)(356005)(54906003)(8676002)(316002)(478600001)(41300700001)(36860700001)(83380400001)(82740400003)(2906002)(47076005)(26005)(107886003)(6666004)(40460700003)(5660300002)(6286002)(7696005)(36756003)(1076003)(2616005)(16526019)(336012)(426003)(186003)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Sep 2022 14:46:33.1915 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 12079628-53db-4c5a-15d5-08da8f4d6d29 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[12.22.5.235]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT024.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB4241 Cc: wuxi_seu@163.com, Eli Britstein Subject: [ovs-dev] [PATCH 1/2] netdev-offload-dpdk: Fix flushing of a physdev 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: Eli Britstein via dev From: Eli Britstein Reply-To: Eli Britstein Errors-To: ovs-dev-bounces@openvswitch.org Sender: "dev" Vport's offloads are done on the tracked orig-in-port, but the flow itself is associated in the vport's map. Removing the physdev will flush all the ports that are on its map, but not the ones on other netdevs' maps. Since flows take reference count on both their vport and their physdev, the physdev fails to be removed. Fix it by flushing the physdev's offload flows in all related netdevs, e.g. the netdev itself, or for physical devices, all vports. Fixes: adbd4301a249 ("netdev-offload-dpdk: Use per-netdev offload metadata.") Reported-by: 15895987278 Signed-off-by: Eli Britstein --- lib/netdev-offload-dpdk.c | 35 ++++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/lib/netdev-offload-dpdk.c b/lib/netdev-offload-dpdk.c index cceefbc50..981897da1 100644 --- a/lib/netdev-offload-dpdk.c +++ b/lib/netdev-offload-dpdk.c @@ -2530,15 +2530,15 @@ out: return ret; } -static int -netdev_offload_dpdk_flow_flush(struct netdev *netdev) +static void +flush_netdev_flows_in_related(struct netdev *netdev, struct netdev *related) { - struct cmap *map = offload_data_map(netdev); - struct ufid_to_rte_flow_data *data; unsigned int tid = netdev_offload_thread_id(); + struct cmap *map = offload_data_map(related); + struct ufid_to_rte_flow_data *data; if (!map) { - return -1; + return; } CMAP_FOR_EACH (data, node, map) { @@ -2549,6 +2549,31 @@ netdev_offload_dpdk_flow_flush(struct netdev *netdev) netdev_offload_dpdk_flow_destroy(data); } } +} + +static bool +flush_in_vport_cb(struct netdev *vport, + odp_port_t odp_port OVS_UNUSED, + void *aux) +{ + struct netdev *netdev = aux; + + /* Only vports are related to physical devices. */ + if (netdev_vport_is_vport_class(vport->netdev_class)) { + flush_netdev_flows_in_related(netdev, vport); + } + + return false; +} + +static int +netdev_offload_dpdk_flow_flush(struct netdev *netdev) +{ + flush_netdev_flows_in_related(netdev, netdev); + + if (!netdev_vport_is_vport_class(netdev->netdev_class)) { + netdev_ports_traverse(netdev->dpif_type, flush_in_vport_cb, netdev); + } return 0; } From patchwork Mon Sep 5 14:46:03 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eli Britstein X-Patchwork-Id: 1674324 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=openvswitch.org (client-ip=2605:bc80:3010::138; helo=smtp1.osuosl.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=Nvidia.com header.i=@Nvidia.com header.a=rsa-sha256 header.s=selector2 header.b=MKTodU6q; dkim-atps=neutral Received: from smtp1.osuosl.org (smtp1.osuosl.org [IPv6:2605:bc80:3010::138]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4MLrvF2Wlxz1yhk for ; Tue, 6 Sep 2022 00:46:49 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id 9107E81433; Mon, 5 Sep 2022 14:46:47 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org 9107E81433 Authentication-Results: smtp1.osuosl.org; dkim=fail reason="signature verification failed" (2048-bit key, unprotected) header.d=Nvidia.com header.i=@Nvidia.com header.a=rsa-sha256 header.s=selector2 header.b=MKTodU6q X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id EuQf5-vB9BdP; Mon, 5 Sep 2022 14:46:46 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp1.osuosl.org (Postfix) with ESMTPS id 781F981430; Mon, 5 Sep 2022 14:46:45 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org 781F981430 Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 60D66C0033; Mon, 5 Sep 2022 14:46:45 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@lists.linuxfoundation.org Received: from smtp4.osuosl.org (smtp4.osuosl.org [IPv6:2605:bc80:3010::137]) by lists.linuxfoundation.org (Postfix) with ESMTP id B04B2C002D for ; Mon, 5 Sep 2022 14:46:43 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 2947F40917 for ; Mon, 5 Sep 2022 14:46:43 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 2947F40917 Authentication-Results: smtp4.osuosl.org; dkim=pass (2048-bit key, unprotected) header.d=Nvidia.com header.i=@Nvidia.com header.a=rsa-sha256 header.s=selector2 header.b=MKTodU6q X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp4.osuosl.org ([127.0.0.1]) by localhost (smtp4.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Y4xaC7p0n7Uj for ; Mon, 5 Sep 2022 14:46:41 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 959B240926 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2061.outbound.protection.outlook.com [40.107.244.61]) by smtp4.osuosl.org (Postfix) with ESMTPS id 959B240926 for ; Mon, 5 Sep 2022 14:46:41 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=oXRG2IVH9frsGc1Pz2QVdUQIkc/au85XBAQ5Kpclw2Ueh3xWQoi4HUDG6mvVMQvtS4OUGJoOL08Fn6pKV3qwp90SKVarsEVVnmvt2Hmh0Zn42n0oM1FrOHg5IXxLWHb+d0bcGVHEK96SfYqYxpRt6GH3PoENuJz4h6JRYoewOR6Z+Xt3NmctGvaj7t2CXLCX6WafkFuRJX4qLYicDVh6sE3ZkPr+kxzJfWcwSFD7UJTHZUo7jpHWZD5i8zkRInLs4s/MnXGrLeK4kxIogoMPLrRT3XQsK2BjEzGJed5artjdyJMhZcyFYzob88B/ZEwyj+NZY1ugcJ1lqCMNu/Hs8Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=vcplhizzj80alApUKNIOQNa1NwMwqZUm/+YJCITPFr0=; b=nh4Lv6ZSbyKKWh3eXeempiEC10RWCzvcb9exEOOsrcx41CM85v5G7OHDXWw7CN+nLvkyNnaL56MHOQWN0RfM8WGm77wid/FIE/lUdS54GH9d3gMkuNC0eC4nXLNsfS2yMgUx4edUY7qllKl5zquk5FWr0Z7Qs04wJhFGogflM7jpbmduFFn4DepEUzyLdoziLS48N6u/+siWI2J4uFM068rJmiMXgFdGhNtepZ9Ua1wRGpzgLfAUK2TR01o7lPu32iZjB5/ROB0N8hIH7PlzJVMR0yvHOfR+Q+H1QW4sY3X0nttcdITHGOGU+jYjktn9+3mY80dAtYHXhFqOBBOIsQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 12.22.5.238) smtp.rcpttodomain=163.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vcplhizzj80alApUKNIOQNa1NwMwqZUm/+YJCITPFr0=; b=MKTodU6qL8OYWAa3MWiMDOHl4gzjbzvwQsbEZ7evMPA6HvDYUrlaFKypPfw+LYxs6nXBSDlrUzyDycA4FQXoz9Oa6WmP9w6M/RhrffJJr1GEVrkknevrwDWGuIs3uXYeP7k4HZKrJtlZqp1Psfz2IXlmHn6DSwVBx9XiVuA7DUeD9oH/Lip6nIdEwof+aToN8vHTJyEtmGT5h9B/jEuc8MJ5uuHS/LVgVKIx7wlhgW+UW0M/VilSNoM68RkFUZm2+iK5ZvRbo5TEx9XmxZ9f2uB7UP6VtuoHm3b1tKxxEYDvhMKGTTbe7OpzkHhn4YLUQAAKDyXtfTn4YjqJ8+SyJA== Received: from MWH0EPF00056D0B.namprd21.prod.outlook.com (2603:10b6:30f:fff2:0:1:0:b) by BY5PR12MB4323.namprd12.prod.outlook.com (2603:10b6:a03:211::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5588.10; Mon, 5 Sep 2022 14:46:38 +0000 Received: from CO1NAM11FT005.eop-nam11.prod.protection.outlook.com (2a01:111:f400:7eab::207) by MWH0EPF00056D0B.outlook.office365.com (2603:1036:d20::b) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5632.2 via Frontend Transport; Mon, 5 Sep 2022 14:46:38 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 12.22.5.238) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 12.22.5.238 as permitted sender) receiver=protection.outlook.com; client-ip=12.22.5.238; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (12.22.5.238) by CO1NAM11FT005.mail.protection.outlook.com (10.13.174.147) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.5588.10 via Frontend Transport; Mon, 5 Sep 2022 14:46:38 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by DRHQMAIL105.nvidia.com (10.27.9.14) with Microsoft SMTP Server (TLS) id 15.0.1497.38; Mon, 5 Sep 2022 14:46:38 +0000 Received: from nvidia.com (10.126.231.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.29; Mon, 5 Sep 2022 07:46:35 -0700 To: , Ilya Maximets Date: Mon, 5 Sep 2022 17:46:03 +0300 Message-ID: <20220905144603.3585105-2-elibr@nvidia.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220905144603.3585105-1-elibr@nvidia.com> References: <20220905144603.3585105-1-elibr@nvidia.com> MIME-Version: 1.0 X-Originating-IP: [10.126.231.35] X-ClientProxiedBy: rnnvmail201.nvidia.com (10.129.68.8) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d2659c2e-6ac5-4fd3-db20-08da8f4d704f X-MS-TrafficTypeDiagnostic: BY5PR12MB4323:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: P+PamG6+HoZTCTBEOkN8l0y7DT9OYpLmLLzizie1AvBZSLE9dOe8BtGAflwyzfTY6e8mOszhaQgj3BltEI/wlivhY/YC0Mr9iWKnMioXCMlBvml97OyMromq0qr9IPHXHTDLstI27SSJTXNToMcyA0c5vbtQ7+kBijE9puLrR7stZCai1gHTaCM+mCVELj7RNthh7TeppqCvNHyW6qs6MGsPUZyLO9Yiu3mGsrx5/kG02gx4dq6Sqj+GAZL1zs0OFZQHCbB3vpJVVBgOkwVCHjtHsU4HAaopsKDMlGX8aNN8MbnhFfbPeU/PTuAj/mW5UjT4GBOja1LklpKz4R5ENB4oJSf4rk1D3HsqYqjFrI9MztY6hUHFPFcqNeNDVyut2NOTb5KGxus+C6Zh1vl89fQa0RFqdQxE/3huvIGhdGdMwWrgNMzhJYurcRHTDIkmHym8aZnizFqx3xc46bh1ozEg0DZPtDBwCjDHrD8ft5L9zVDRQZA5IMHeOCGBIsoiRw2wdkYm4mcPsevPywHdBSckt1comert0ib39dK5gV4+8Iws8rUrZDgFGONLnq5wM/lZW2FgHcVtPsY1Tr+ks/vdbzqgPWgG3DmzOz7K+DNdEYhAJqAriL3hB04+wRQk/8Wp9kKQQsr52eFgskF/e68DwH2aqcR8mBY1XBEx3hlD+ndNk8sIQj8X//2IFannwOFHpyWbRd3p9FcT16avOkOcqB4yB16ajxN075B1HxQ05OvQXWWjfTn5FI8JZIl8R/QKX2DqDj9V7kNfRZICIJuH3TfyFYWy+7skSyLODeM2cFpbUF7Uvyz2AJQEfpOB X-Forefront-Antispam-Report: CIP:12.22.5.238; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:InfoNoRecords; CAT:NONE; SFS:(13230016)(4636009)(136003)(39860400002)(376002)(346002)(396003)(46966006)(40470700004)(36840700001)(83380400001)(2616005)(1076003)(426003)(47076005)(5660300002)(2906002)(26005)(8936002)(40480700001)(186003)(41300700001)(6286002)(36756003)(86362001)(336012)(7696005)(107886003)(6666004)(16526019)(356005)(478600001)(81166007)(82310400005)(55016003)(8676002)(70206006)(70586007)(316002)(54906003)(110136005)(82740400003)(36860700001)(40460700003)(4326008)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Sep 2022 14:46:38.4788 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d2659c2e-6ac5-4fd3-db20-08da8f4d704f X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[12.22.5.238]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT005.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB4323 Cc: wuxi_seu@163.com, Eli Britstein Subject: [ovs-dev] [PATCH 2/2] dpif-netdev: Fix flushing of a vport 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: Eli Britstein via dev From: Eli Britstein Reply-To: Eli Britstein Errors-To: ovs-dev-bounces@openvswitch.org Sender: "dev" When using a userspace vport ("vxlan0"), dpif-netdev adds an additional netdev ("vxlan_sys_4789"). The dpif netdev ("vxlan0") is added to the netdev-offload ports map, thus flows are associated on this netdev. However, flushing is done on the dpif-netdev level ("vxlan_sys_4789"), and relevant offload flows are not destroyed. To fix it, add the datapath netdev to the netdev-offload ports map. In case there is no different internal netdev, use the dpif netdev, as before. Fixes: adbd4301a249 ("netdev-offload-dpdk: Use per-netdev offload metadata.") Signed-off-by: Eli Britstein Reviewed-by: David Marchand --- lib/dpif-netdev.c | 15 ++++++++++----- lib/dpif-netlink.c | 5 ++++- lib/dpif-provider.h | 5 +++-- lib/dpif.c | 8 +++++--- 4 files changed, 22 insertions(+), 11 deletions(-) diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c index a45b46014..b251de881 100644 --- a/lib/dpif-netdev.c +++ b/lib/dpif-netdev.c @@ -536,7 +536,8 @@ static int get_port_by_name(struct dp_netdev *dp, const char *devname, static void dp_netdev_free(struct dp_netdev *) OVS_REQUIRES(dp_netdev_mutex); static int do_add_port(struct dp_netdev *dp, const char *devname, - const char *type, odp_port_t port_no) + const char *type, odp_port_t port_no, + struct netdev **datapath_netdev) OVS_REQ_WRLOCK(dp->port_rwlock); static void do_del_port(struct dp_netdev *dp, struct dp_netdev_port *) OVS_REQ_WRLOCK(dp->port_rwlock); @@ -1845,7 +1846,7 @@ create_dp_netdev(const char *name, const struct dpif_class *class, error = do_add_port(dp, name, dpif_netdev_port_open_type(dp->class, "internal"), - ODPP_LOCAL); + ODPP_LOCAL, NULL); ovs_rwlock_unlock(&dp->port_rwlock); if (error) { dp_netdev_free(dp); @@ -2112,7 +2113,7 @@ out: static int do_add_port(struct dp_netdev *dp, const char *devname, const char *type, - odp_port_t port_no) + odp_port_t port_no, struct netdev **datapath_netdev) OVS_REQ_WRLOCK(dp->port_rwlock) { struct netdev_saved_flags *sf; @@ -2128,6 +2129,9 @@ do_add_port(struct dp_netdev *dp, const char *devname, const char *type, if (error) { return error; } + if (datapath_netdev) { + *datapath_netdev = port->netdev; + } hmap_insert(&dp->ports, &port->node, hash_port_no(port_no)); seq_change(dp->port_seq); @@ -2157,7 +2161,7 @@ do_add_port(struct dp_netdev *dp, const char *devname, const char *type, static int dpif_netdev_port_add(struct dpif *dpif, struct netdev *netdev, - odp_port_t *port_nop) + odp_port_t *port_nop, struct netdev **datapath_netdev) { struct dp_netdev *dp = get_dp_netdev(dpif); char namebuf[NETDEV_VPORT_NAME_BUFSIZE]; @@ -2176,7 +2180,8 @@ dpif_netdev_port_add(struct dpif *dpif, struct netdev *netdev, } if (!error) { *port_nop = port_no; - error = do_add_port(dp, dpif_port, netdev_get_type(netdev), port_no); + error = do_add_port(dp, dpif_port, netdev_get_type(netdev), port_no, + datapath_netdev); } ovs_rwlock_unlock(&dp->port_rwlock); diff --git a/lib/dpif-netlink.c b/lib/dpif-netlink.c index a620a6ec5..55d5a4593 100644 --- a/lib/dpif-netlink.c +++ b/lib/dpif-netlink.c @@ -1139,7 +1139,7 @@ dpif_netlink_rtnl_port_create_and_add(struct dpif_netlink *dpif, static int dpif_netlink_port_add(struct dpif *dpif_, struct netdev *netdev, - odp_port_t *port_nop) + odp_port_t *port_nop, struct netdev **datapath_netdev) { struct dpif_netlink *dpif = dpif_netlink_cast(dpif_); int error = EOPNOTSUPP; @@ -1152,6 +1152,9 @@ dpif_netlink_port_add(struct dpif *dpif_, struct netdev *netdev, error = dpif_netlink_port_add_compat(dpif, netdev, port_nop); } fat_rwlock_unlock(&dpif->upcall_lock); + if (datapath_netdev) { + *datapath_netdev = netdev; + } return error; } diff --git a/lib/dpif-provider.h b/lib/dpif-provider.h index 12477a24f..b79b10e6c 100644 --- a/lib/dpif-provider.h +++ b/lib/dpif-provider.h @@ -195,10 +195,11 @@ struct dpif_class { * ODPP_NONE, attempts to use that as the port's port number. * * If port is successfully added, sets '*port_no' to the new port's - * port number. Returns EBUSY if caller attempted to choose a port + * port number, and datapath_netdev to a potentially created netdev in the + * dpif-class level. Returns EBUSY if caller attempted to choose a port * number, and it was in use. */ int (*port_add)(struct dpif *dpif, struct netdev *netdev, - odp_port_t *port_no); + odp_port_t *port_no, struct netdev **datapath_netdev); /* Removes port numbered 'port_no' from 'dpif'. */ int (*port_del)(struct dpif *dpif, odp_port_t port_no); diff --git a/lib/dpif.c b/lib/dpif.c index 40f5fe446..2a1679ce5 100644 --- a/lib/dpif.c +++ b/lib/dpif.c @@ -586,6 +586,7 @@ dpif_port_add(struct dpif *dpif, struct netdev *netdev, odp_port_t *port_nop) { const char *netdev_name = netdev_get_name(netdev); odp_port_t port_no = ODPP_NONE; + struct netdev *datapath_netdev; int error; COVERAGE_INC(dpif_port_add); @@ -594,7 +595,8 @@ dpif_port_add(struct dpif *dpif, struct netdev *netdev, odp_port_t *port_nop) port_no = *port_nop; } - error = dpif->dpif_class->port_add(dpif, netdev, &port_no); + error = dpif->dpif_class->port_add(dpif, netdev, &port_no, + &datapath_netdev); if (!error) { VLOG_DBG_RL(&dpmsg_rl, "%s: added %s as port %"PRIu32, dpif_name(dpif), netdev_name, port_no); @@ -604,12 +606,12 @@ dpif_port_add(struct dpif *dpif, struct netdev *netdev, odp_port_t *port_nop) const char *dpif_type_str = dpif_normalize_type(dpif_type(dpif)); struct dpif_port dpif_port; - netdev_set_dpif_type(netdev, dpif_type_str); + netdev_set_dpif_type(datapath_netdev, dpif_type_str); dpif_port.type = CONST_CAST(char *, netdev_get_type(netdev)); dpif_port.name = CONST_CAST(char *, netdev_name); dpif_port.port_no = port_no; - netdev_ports_insert(netdev, &dpif_port); + netdev_ports_insert(datapath_netdev, &dpif_port); } } else { VLOG_WARN_RL(&error_rl, "%s: failed to add %s as port: %s",