From patchwork Sun Jun 11 15:58:26 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eli Britstein X-Patchwork-Id: 1793592 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=140.211.166.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=XZ7Ndpts; dkim-atps=neutral Received: from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.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 4QfKJ20QSMz20QH for ; Mon, 12 Jun 2023 01:59:12 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id 3F6408228E; Sun, 11 Jun 2023 15:59:09 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org 3F6408228E 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=XZ7Ndpts 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 irvKqoWSaufJ; Sun, 11 Jun 2023 15:59:08 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [IPv6:2605:bc80:3010:104::8cd3:938]) by smtp1.osuosl.org (Postfix) with ESMTPS id 6C6EB8214B; Sun, 11 Jun 2023 15:59:07 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org 6C6EB8214B Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 3A0D8C0037; Sun, 11 Jun 2023 15:59:07 +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 550F7C0029 for ; Sun, 11 Jun 2023 15:59:05 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id 19CDD821AE for ; Sun, 11 Jun 2023 15:59:05 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org 19CDD821AE 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 WDwmJSKb--1u for ; Sun, 11 Jun 2023 15:59:04 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org E8AFA8214B Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on20600.outbound.protection.outlook.com [IPv6:2a01:111:f400:7eae::600]) by smtp1.osuosl.org (Postfix) with ESMTPS id E8AFA8214B for ; Sun, 11 Jun 2023 15:59:03 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QLnEFAqepGDMWnaXpsDxYxcEpvc44/ZrzijDqYo+/Hse+q6jVibrLveKYJuK/88CuqIcXslbtJNNYxZbTAO9UYvJm4h1mNda8oZuSCTMfYSqIaJaLfMqEYZhvbYoDkq3tbkPcI9d3795m+O5frG4HD3GNrrNcLdtmbFPIqz5PxJF59dY+UNGK+pisfQK0/WMM15jsyXbjMHcUdQXi0s2sviJtrFz8vtF7Wv//6TEU8f39jsp0aw8fSVNpO2HUFNigPpkQ2frLSRMhYW00U52Aaaq6xoKbn9ASE0gw0pCkZ4KaaYKryNBPzfJNgyIc324auK0kAi6BIu7SqwORAAbbw== 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=h1BoCI87uXu5c9wPAQHzea80L92ueWSfOok7VujU3i0=; b=ke5R2dD8GsQ7e8SjqsTIDeIOM723gE2AFgx01T8LPdAXKJTMLTQLD5ligNp274jqPH8MyviLjcnpfPwvmedf9/h581fCH6JtMsVeX4HFyKp5Q54Wn2Jbbf1V5o3gJfgDKcoh3m4e4JN48VhIhzVn6VPrhO6uHle0cd98Ue7dnhwzT3fP+YODxkew75TUCjhurVxfz6C15PqOa5AqezhQRjUz6lUUAHK/e/Td4rAphJ+eOVCHJxTC9pv2uiAVYLMpUAT/hI16mIt1rS8+W8i7TBzFeiFr9Fry0/8ZjY0M2QvsDMEYK7YPnXdWxxBcbeatj+hJxigPa8ANSW2Bh/HyTQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.160) smtp.rcpttodomain=openvswitch.org 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=h1BoCI87uXu5c9wPAQHzea80L92ueWSfOok7VujU3i0=; b=XZ7NdptsonQd2hcW8Oxkf4VPtM1LM82sbDzAMhlIUe63qdz5MrYwzzQggIoQJsi0ztRMqHW+vpcvHDfh4WGqG0cSQpI5voF/3KrlBI9DtAdoax7rwbPerZnyZfiVK7nuIUYaSjtdqHRxH6Cs1lRf4y7AoSefawkMKn2othIsc+OmXOb11tkSiq3IlNDwKFjRE75VL9BMVHbc6YL2dxDU9Ef152HxVGWoRoM6I5km+iexiQjGkaoOjeNqpgMrCMQcegCql9K3IEFAc85nYbO6ejKuJgTJrJmw4Mnbhdws4N+aVLeZWYcJmKULjwSXIQsU+djJ2eQ1YXsExgzAV+5kew== Received: from MW4PR03CA0219.namprd03.prod.outlook.com (2603:10b6:303:b9::14) by CH3PR12MB8284.namprd12.prod.outlook.com (2603:10b6:610:12e::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6477.29; Sun, 11 Jun 2023 15:58:59 +0000 Received: from CO1NAM11FT047.eop-nam11.prod.protection.outlook.com (2603:10b6:303:b9:cafe::6b) by MW4PR03CA0219.outlook.office365.com (2603:10b6:303:b9::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6477.33 via Frontend Transport; Sun, 11 Jun 2023 15:58:58 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.160) 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 216.228.117.160 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.160; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.160) by CO1NAM11FT047.mail.protection.outlook.com (10.13.174.132) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6477.31 via Frontend Transport; Sun, 11 Jun 2023 15:58:58 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.5; Sun, 11 Jun 2023 08:58:56 -0700 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.37; Sun, 11 Jun 2023 08:58:54 -0700 To: Date: Sun, 11 Jun 2023 18:58:26 +0300 Message-ID: <20230611155827.1957023-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-TrafficTypeDiagnostic: CO1NAM11FT047:EE_|CH3PR12MB8284:EE_ X-MS-Office365-Filtering-Correlation-Id: 164ae8cb-f479-4f2b-3bc5-08db6a94c43c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: TgEb7UH8VUkACNrFShWupmPsQScpa9MVL2pWxV/mP9GcsWdYCvbH6A2kxgu/mWfub/a4gmp37H2DwDh1BWfC4s2FWAXFOjn53czWcOTYs1RUMaqPzCypmn0yC4OFlybdKcYBdRL5iwYo0X/LYU5sI/nVfkQQzaDCSSW29mYKjAA+49EhGpR+bAaCKkCPxzTg58N408orG8404LN+ClmZWbwYT0wzpYs6wx3WxJsz5zRxW0ph+pTf/xisGZed59SSt44/dYzTorHhYwMO5/Vcm6rTiihn/BrPudu4jnhvvPRibs3UK7tW1SYIJ9/+xWhyjL8IgxaxW/6Y1R2c837R1MRr8K5S5oxjpatxZ3Ha4kCNAhWGUmN1JQx9+p2eZbIJuklu1UvHbtHRHR4lbtjVr5NtO1jmzJu0SyE/2g0jVS/FNiD18j3FKqJD5sZy9/s7bkKev4GoTAUQ0GdcD58jJMd3KZ3UfYmDmqGvGhrSgOI8fP5kGaVHbWywjqVSagFbKwPKhVgFklcEnFrWrI/hh9n9hp9E14PvZsT+VRc6Y0UuSpmx32UimwBARl2Ry4/+l1Wd8Ab39yDFxZzSsuF2IxfU20DAbEjPTNUDkeUyXhf+yoPCy6wS7q5IQ7qGZ6EqSivWGVJrMKmLNCQb+JFMwbmxvXZPYVnn5cUYpiQfD9sfK1nJ5wXwobaMrxmLiF9bLeycSmAeMiURzd45jf59064mSCxQC9qMi2tXeQCs/VXy/JLu3bCCyMROVISXXhA9 X-Forefront-Antispam-Report: CIP:216.228.117.160; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge1.nvidia.com; CAT:NONE; SFS:(13230028)(4636009)(396003)(376002)(346002)(39860400002)(136003)(451199021)(46966006)(36840700001)(40470700004)(316002)(7696005)(40460700003)(41300700001)(336012)(426003)(82310400005)(83380400001)(86362001)(2616005)(36860700001)(26005)(1076003)(186003)(107886003)(2906002)(47076005)(16526019)(6286002)(7636003)(356005)(82740400003)(55016003)(40480700001)(8676002)(36756003)(5660300002)(8936002)(70586007)(70206006)(478600001)(54906003)(6666004)(4326008)(6916009); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jun 2023 15:58:58.2105 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 164ae8cb-f479-4f2b-3bc5-08db6a94c43c X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.117.160]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT047.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB8284 Cc: wuxi_seu@163.com, Simon Horman , David Marchand , Ilya Maximets , Eli Britstein Subject: [ovs-dev] [PATCH V3 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 still has references on. Trying to remove it and re-add it fails with "already in use" error. 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 Acked-by: Simon Horman --- 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 14bc87771..992627fa2 100644 --- a/lib/netdev-offload-dpdk.c +++ b/lib/netdev-offload-dpdk.c @@ -2537,15 +2537,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) { @@ -2556,6 +2556,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 Sun Jun 11 15:58:27 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eli Britstein X-Patchwork-Id: 1793591 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=140.211.166.136; helo=smtp3.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=jf0Eqkw0; dkim-atps=neutral Received: from smtp3.osuosl.org (smtp3.osuosl.org [140.211.166.136]) (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 4QfKJ25ZDZz20fV for ; Mon, 12 Jun 2023 01:59:14 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id 5047660E89; Sun, 11 Jun 2023 15:59:12 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 5047660E89 Authentication-Results: smtp3.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=jf0Eqkw0 X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id WtlB0Ba6v-TT; Sun, 11 Jun 2023 15:59:11 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp3.osuosl.org (Postfix) with ESMTPS id 21A0260759; Sun, 11 Jun 2023 15:59:10 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 21A0260759 Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id E2164C008B; Sun, 11 Jun 2023 15:59:07 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@lists.linuxfoundation.org Received: from smtp1.osuosl.org (smtp1.osuosl.org [IPv6:2605:bc80:3010::138]) by lists.linuxfoundation.org (Postfix) with ESMTP id 0E3EAC0029 for ; Sun, 11 Jun 2023 15:59:07 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id BF9728214B for ; Sun, 11 Jun 2023 15:59:05 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org BF9728214B 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=jf0Eqkw0 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 wS_np5kvWCnW for ; Sun, 11 Jun 2023 15:59:05 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org C8ACB82157 Received: from NAM02-BN1-obe.outbound.protection.outlook.com (mail-bn1nam02on2061f.outbound.protection.outlook.com [IPv6:2a01:111:f400:7eb2::61f]) by smtp1.osuosl.org (Postfix) with ESMTPS id C8ACB82157 for ; Sun, 11 Jun 2023 15:59:04 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gPHMPvSbyt5k4wmS6Z7TdHVx5PcUVNSfgKLWIXT7EzlF2uifgoq34oKfsrDCMdanENtFcfXvSc+tfGdLskBaWWYpLavMEVkXOFsaQBoFcmfS432X3XFMGiVMdLZqY72TPmxouHkGAEJ4mL+wtDLWl4FNUjC+GVJEasdsUGAij3v9PYY3q0HHQJPRRJxZOWJJ+rYvTN99+9wIrkn3cQJfovUwrPENCF503lbGX1EJS4saGEi8CFgtGBHRWAUy9F+C8F4zsLu43pa1Pq9XyAW5BhygKn7fyhTjg2ogHUeoZVHua228uokJOnz5kfTF2Z+ey8AMs5oHStHSUFq9D+U4Fg== 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=favKsS4bBn8dA9I3+T63vcfwCRnQAXsRMI7zME5f1Qk=; b=SZP0JlpDM85HwjU6uEAz0PnlGuldGGrfwbF/AJFZUYTgd2EEtLjaZQ8Pc/eUc7t6XASl5pGsY2oEyZIo1wzl4roBkOjHo/xqI67jvLIQf2iU6hxjgsnwDVx5e16n7r5rGS7ACy5cqEHcZ+vx+3lIFUlTdGxmj8o/G1OPV59U5Ao1YLNDNOpcGp8jdmM6yXtOyHdRwscfIPZtBXWSoILSMMMd7ySipoyP5YZKYDr096NPa7G3jtgmHgF1R6CL0s8GzzL+YAsBDReLtcfY7yXWZYcj0+0jPcsJ26a6Vt79csbjU270utIhd2wfNOqSnW8g/lIliIxoW709y0m5A5tNyQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.160) smtp.rcpttodomain=openvswitch.org 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=favKsS4bBn8dA9I3+T63vcfwCRnQAXsRMI7zME5f1Qk=; b=jf0Eqkw0R/sYTeTDTbree4pEFGmAOCGUamKWB7twMcWruHRH+C367f71/I/njwJoBQYr2Mjdf4K9TjwltwgA2M0mihvYbVafKEEI3AN0xtu/be6ybpCTN9n0vfLHnm5V5cOwJ3qqhn3cdGKIVZ+HhP3V/l8QiWx6qlHHJ/p6g8Ni1dL3WV3HHt9cCbTEwR2hLZdZhFrXEfTnW9YxBVY5dDgvcOUbyj1tI50OcBM47SuJtwiNIZvK+K32k+WYFOrM0qN5j/AbHBLbIAvTos59YLcxe70dy15N/tqjHr3/Zrod1ldYN3N6wUsHNewhsFeEa0bG93ewriwKd/GQNylo7g== Received: from MW4PR04CA0329.namprd04.prod.outlook.com (2603:10b6:303:82::34) by SA3PR12MB8811.namprd12.prod.outlook.com (2603:10b6:806:312::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6455.33; Sun, 11 Jun 2023 15:59:00 +0000 Received: from CO1NAM11FT089.eop-nam11.prod.protection.outlook.com (2603:10b6:303:82:cafe::49) by MW4PR04CA0329.outlook.office365.com (2603:10b6:303:82::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6477.33 via Frontend Transport; Sun, 11 Jun 2023 15:58:59 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.160) 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 216.228.117.160 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.160; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.160) by CO1NAM11FT089.mail.protection.outlook.com (10.13.175.179) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6477.33 via Frontend Transport; Sun, 11 Jun 2023 15:58:59 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.5; Sun, 11 Jun 2023 08:58:58 -0700 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.37; Sun, 11 Jun 2023 08:58:56 -0700 To: Date: Sun, 11 Jun 2023 18:58:27 +0300 Message-ID: <20230611155827.1957023-2-elibr@nvidia.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230611155827.1957023-1-elibr@nvidia.com> References: <20230611155827.1957023-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-TrafficTypeDiagnostic: CO1NAM11FT089:EE_|SA3PR12MB8811:EE_ X-MS-Office365-Filtering-Correlation-Id: 0fe514cd-7cd4-4f5b-61fe-08db6a94c50f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: cU/2z63nTU/Pvg8EogXx058yzYv2+BWPWeBWH1mpLkAGVVMzBaHcyskltg/q5vqAQKMiD9lo4xrqE2jA61pSuROAIaElEBoalXp2xdbQvdMj6Kn0xSOAMht7AQzNsAq/r/z85Bd7+BndHHssJhZzRjW6DafCWwY4suq6xxtNmzeOMXA3K+oCFpaXywuzRX1Tpybr8MUTGF2o/j/ukP/FDF4maPYj6dbcoQIoUyqeWZSddYGMgzAVbN1TT4LOFsIf+FcMSKzora2coOAOJAR9Zc6rs5csw8wbgyjvFU5nnmmCAKrSIyMndE7d0ceLCYqjtRESwyNwibb6OD++QWPFm2si0+McQ9Ku+q+D+sHVc/hthNPOJvY+dYTvl4fIUFk7eAXQa0uZPDGN5BscMc1xBycY/tLG69fGx/ibRWdokUOWxY0GKdXnjF8N0/bR1wciFQHGwqhnYFZwMkaGgf2vA9HN9Mx/QngGoSL5L5jHG7dcEDUCSRdLUPWtPkC7+CTduQ87VAKJ5LTxib6cOrqDOeyl77WD5N8jqazxy2TSgzRU65S/5u3ohUFwOgD/dwVIYQtgiiCQAkCnUb9WewmoJXoGDmy36Y4sI2NzZvXkHNweCWH7HcJVtX6+2yikErbRUZSm7m/hD7Iq/gAk3eK7XvM9J5czM2dFhcCVBApng5N5wybKCpsG0DXxjkpWWupNPCWovXuC8hkx6498SVmBVZt6FGHBuTOwQ+lA3vFns/vEFhM8O4Rp6LRUqOC3ODsg X-Forefront-Antispam-Report: CIP:216.228.117.160; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge1.nvidia.com; CAT:NONE; SFS:(13230028)(4636009)(39860400002)(396003)(136003)(346002)(376002)(451199021)(40470700004)(36840700001)(46966006)(4326008)(70206006)(6916009)(8936002)(70586007)(8676002)(36756003)(7696005)(478600001)(86362001)(41300700001)(316002)(83380400001)(40460700003)(36860700001)(356005)(6666004)(5660300002)(54906003)(55016003)(40480700001)(2906002)(186003)(16526019)(82740400003)(82310400005)(2616005)(7636003)(47076005)(6286002)(336012)(426003)(107886003)(26005)(1076003); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jun 2023 15:58:59.5943 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0fe514cd-7cd4-4f5b-61fe-08db6a94c50f X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.117.160]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT089.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR12MB8811 Cc: wuxi_seu@163.com, Simon Horman , David Marchand , Ilya Maximets , Eli Britstein Subject: [ovs-dev] [PATCH V3 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 Acked-by: Simon Horman --- 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 70b953ae6..52d2998d7 100644 --- a/lib/dpif-netdev.c +++ b/lib/dpif-netdev.c @@ -547,7 +547,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); @@ -1884,7 +1885,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); @@ -2151,7 +2152,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; @@ -2167,6 +2168,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); @@ -2196,7 +2200,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]; @@ -2215,7 +2219,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 60bd39643..a02f0f2d9 100644 --- a/lib/dpif-netlink.c +++ b/lib/dpif-netlink.c @@ -1144,7 +1144,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; @@ -1157,6 +1157,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 a33c6ec30..47c573d95 100644 --- a/lib/dpif-provider.h +++ b/lib/dpif-provider.h @@ -203,10 +203,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 3305401fe..926b4ca6d 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",