From patchwork Thu Mar 9 13:02:47 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Horman X-Patchwork-Id: 1754624 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" (1024-bit key; unprotected) header.d=corigine.onmicrosoft.com header.i=@corigine.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-corigine-onmicrosoft-com header.b=TGv/vrt6; 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 4PXTrk63pjz2469 for ; Fri, 10 Mar 2023 00:03:33 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id 62C3D40494; Thu, 9 Mar 2023 13:03:31 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org 62C3D40494 Authentication-Results: smtp2.osuosl.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=corigine.onmicrosoft.com header.i=@corigine.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-corigine-onmicrosoft-com header.b=TGv/vrt6 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 q1yrFTPp3QZ1; Thu, 9 Mar 2023 13:03:30 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp2.osuosl.org (Postfix) with ESMTPS id 7A73E40443; Thu, 9 Mar 2023 13:03:29 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org 7A73E40443 Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 319EAC0089; Thu, 9 Mar 2023 13:03:29 +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 52475C0032 for ; Thu, 9 Mar 2023 13:03:27 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id 1D4A681F0A for ; Thu, 9 Mar 2023 13:03:27 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org 1D4A681F0A Authentication-Results: smtp1.osuosl.org; dkim=pass (1024-bit key) header.d=corigine.onmicrosoft.com header.i=@corigine.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-corigine-onmicrosoft-com header.b=TGv/vrt6 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 ggzYBEI-sggx for ; Thu, 9 Mar 2023 13:03:21 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org 38252813BF Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on20719.outbound.protection.outlook.com [IPv6:2a01:111:f400:7ea9::719]) by smtp1.osuosl.org (Postfix) with ESMTPS id 38252813BF for ; Thu, 9 Mar 2023 13:03:21 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KDss3mhU+9BmwQl5UQS059sav4n5CabVzd4InrpCj5ynxMKocti0M0pN/hZYrDLKaS157nQ7tWx0bQnmiZyES0IvPxzxSxFs6cgFSjv3XrHJGONGvIrfMe6bERbFpmKBGRI0YCAn5HCoppu4RlfVt1/pZEXo7uS40Q+xSrXmz6TlCkaV9bXz8tNniyii8qtiQmhp/Wvru9vAHLpdQGYr4Jl4tS7vXQ2UjtI0hwGUYjFOVQYj7LRY8VyYBgSYkuKBSMN3Q+fI1FJXYhNPD86PffaxCI93a+ltnNyYohJCuUq21bVK3SNuHSpAErCYvZYpTO/+udIaGISdipfh0E/v6A== 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=2K5WGeKcntkVrAz8c37QjT95fwwsR2IoCGcBY3ONT1s=; b=CyrReCL4YJdLnibCwGbd9oiF0anlQp7ojWmPg4g+5U6W0QJcU9wjJxCQe/8ihG+MmLPzfXzp5vTc+q9YtaUNvsxjCd5U14jFLjBF0CWI6AEFORetKFzxoMpv2o3ni/kT/gjb7N7ktG+p73YwElG+iK3SEqvApIOocvyG7sFz77f+k5fmfPEStSAVX1MNY9J488KaJLyFr00yfIk4EOPe8In+WRS8b+Z8gnjHkzeq/HRwiigffXd0n7WlZeZaSKPwsa27sSyFBJtdeZLQLLboLpFpCpFanFFzMH1n4gj9ITSK20MG3NE7zDghNliqrPnfTj+Fizr+7K7YkeEIuvAeCA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=corigine.com; dmarc=pass action=none header.from=corigine.com; dkim=pass header.d=corigine.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=corigine.onmicrosoft.com; s=selector2-corigine-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2K5WGeKcntkVrAz8c37QjT95fwwsR2IoCGcBY3ONT1s=; b=TGv/vrt6x4QptHS7VDdSxgSIKC34caKiPVFL7ya7OPhVkwJT/jH7jRXe/j7dqlpcT6J0+tPwC5mVvo66TAJXqzlUYSUAUV3ygrYKGBi12QgdSQWOpyWIPuxQD64FN4+AxMkyfiwDr6k5Z+OlVDVSr4ufvCFtvIH0q6Vv133m9Rs= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from PH0PR13MB4842.namprd13.prod.outlook.com (2603:10b6:510:78::6) by MW3PR13MB4156.namprd13.prod.outlook.com (2603:10b6:303:2d::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.17; Thu, 9 Mar 2023 13:03:18 +0000 Received: from PH0PR13MB4842.namprd13.prod.outlook.com ([fe80::85f5:bdb:fb9e:294c]) by PH0PR13MB4842.namprd13.prod.outlook.com ([fe80::85f5:bdb:fb9e:294c%2]) with mapi id 15.20.6178.019; Thu, 9 Mar 2023 13:03:18 +0000 From: Simon Horman To: dev@openvswitch.org Date: Thu, 9 Mar 2023 14:02:47 +0100 Message-Id: <20230309130252.356289-2-simon.horman@corigine.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230309130252.356289-1-simon.horman@corigine.com> References: <20230309130252.356289-1-simon.horman@corigine.com> X-ClientProxiedBy: AM9P250CA0028.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:21c::33) To PH0PR13MB4842.namprd13.prod.outlook.com (2603:10b6:510:78::6) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR13MB4842:EE_|MW3PR13MB4156:EE_ X-MS-Office365-Filtering-Correlation-Id: a41c71f4-e7f5-4223-b472-08db209ea702 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: XJgKPv4JOXn/vjKHdy01ek/chATzCkNR4/v4IeTKMcKv5kVmEosoLkyFUiA+DCQxTWSEUnnYAdb8gf2AY9H6SmAx8DBnX8O57h9MTa8u8f6ulDeA3GnEyY2gO9a1V05OeHrPYeXjFU0Rnxr2yY6JvNLlPgWLNYcS/VQU1c2gpwiN55VT9xbz0gq6kBzY49pmM3G/WZNh1zXsjiZNvlAYMUJKbtXJAGCf93Er+62zP2u3K5rIg11sFYWOeOqcktOVyCWQHM0v1VIedgHZp9mUZQaGiqofw3597+Zkc4Ks293sXoAurFEizXISk/Gpy/jM19Tkl94J6IJAPe0rpu3R8WYV71raKf0IyVWwtjcL9Sn9W7v/ZoUPBWhUwbfNSLd/e8b7DAE9nOIOrwnN2fqTSEnd7+XsbZvESJX7esvQjne1sjDbd/yC7Q7Qk0ONgKYKerQdJlISiTE7tykvrE1GwVNFPGznL3xueUeNY3AbSojBF8otaI9MuJ4h3OJxJKaaVLyUnp2z24l84uNQRIENQOnFpgXlkTLWcYmKyes6+ksfwvpVScASpljZ+mcGGl236FM7ngBfKGgBZbazd1M9wKAbRQtunbGqxTkZ/DJVFRJEwb+NoWrR9RNdcN3R9J+oVOXoxs72wsuKLJKxNXr3lg== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR13MB4842.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230025)(4636009)(136003)(376002)(396003)(366004)(39840400004)(346002)(451199018)(8676002)(41300700001)(66476007)(66556008)(66946007)(6916009)(4326008)(52116002)(2906002)(54906003)(316002)(8936002)(38100700002)(5660300002)(186003)(44832011)(478600001)(6506007)(36756003)(6486002)(1076003)(107886003)(6512007)(6666004)(83380400001)(2616005)(86362001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: RWp+nMXuyT7+o2z6nTDBwTfOje3GEYwh/5U11nqf4khEL5/fY776bsGfIgNDDLjw0JFtpdHk57K3Kuunye3Qsx65uOUfzRsFDaf/texIvu2ViavAMZ+X50JqrJBULqaAwvbGLEKZwcjONDYiUBfJ32udGJ6ZNCCJeNwIk8ko1SVFIp8MZKxFcbvvFYm8Jadk1ryIafHpB6V71uVxGRGGEbUj0+vEtZDfMu+oYC4kUwqs30CL1nyvW5A0/YBaLfm5AQFZnAv+Y9XjiPvUGIe7xbzp01xXAO+5Hkm/8ZcVKIpUq3X4LwyLxJbuWeWlNYXZ9B6NjPvypHZt4KD2CEPTrYW3haD0frKlH8DZ+UfGLaMg3xx9ZUqOl1qzkWfUIYtRLYiwbU+hHVpthnFXn8Cvc3Byt/mfd+qLsCL2/2IcgAo8SUkuQTDUsTJirwPbdze6v4lL/GvjR45NyC5DjPrsVjYO3dWRz2r0f8SYcmr4CEJPFAcCgdQYyG5fSFOT8TBKke03mVB4gXcEP1jX+9MST9SxssYpZWYk8SKRW2r2xK+x+j6Aw+aeKZIaGOtLE4zrf/RVr+LAFFmrmK2CtxLZGjw2lqWichufrCiypPwq2F7u6HMGCYVjYNS9KGM3JXgzScZPR4exIfILmYiZ1q+p5n1uvaDr/EemuLqSYA5dK5BB2jYO3vRuGgOrx4v8FEN0/541JxEVKjGTk3gWrLItQsLDOfbI1ONN3r7lab7DBJC5u+jtw8wSouj96XYrvKZ4c15n1wHBFPL6KDipvNEyPUHqICepafEgA2TsQ96PqNX8+gJ7W7UVwB8LVt+Gh+Y9UXiNcuLctIgomxWlgEYFbhwtoEzMxVO6Gws5Z1fR/+RftKZUzzTm/QCBoeRCln95gblMDrqjS4ZgUSJMzV7KAgCZWCZpu2/ozCew+4HJCAbt7Uf+tzgIregniOdQ5r/yVF50fSTxp2jYElr17NglfnD4AkipPnswgj95NsVzXR9xJMHqtLkfpdmHdLb/b1EkFfbFHi6a+fB4zHlmFh/ZWyuQrVmxsM1AEzQl2jp+jbs8QT2kdPz3CRrSsU3hOXQj9ajaQx7pXxVv+QIc/MzHL3owos377unI5Jce35IXPixwupidDwc0LiX7DbiYXnjY/AOMvgtfwjLcCXsfw748joumqarHQBmuHZlt39StXjSv3/8ILLu8XFQrVviLbeK8VnLjUmCZwzQg0IK0m/Y5va1GDXATS8A7b7VXg3tTrjcdCmH1UT8XfvFfBk2phmOK2uhk/6dg8yuoO/09UmAXU7OTFIx+aIl95YxwMviM/q78arnXgHyWYlXlSiqUyXtUdnkahvcqNtggrJYXNHuMMHXrfsYlmxIOGdBqiX8k58I/0AIEdbNNlUwRYPs10hE7Y6vJKFQ88UV9W1tNDnsinJ6fhG1k88ZF+fsMd3BM4MPo3O6HApLT8Urm9VnNEsU6bA/M5mrQC3IMLswN2V+/OqersRHr9YtL/EFCDkFP0znkxfX2HeUJ/62EeeVskCYQMOkucavMzFIaoFHVFisK1eRYsiEyKAJjFZiCvksG35SkYW4Ts4MdCpAcHr4XqNFyLgWRjfv37/t9e4y6XWcXOZekhXYcsFb4iEN86r3rts9n1mLRAQCS3NqOgESpMPoWdx9NFQgMLwg3H04H/i0ycA== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: a41c71f4-e7f5-4223-b472-08db209ea702 X-MS-Exchange-CrossTenant-AuthSource: PH0PR13MB4842.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Mar 2023 13:03:18.3357 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: fe128f2c-073b-4c20-818e-7246a585940c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: IWlKKNttSwk1LEg434Xu+LKGUtKRtQvVF77uWvP5Si87pUHcrIeh9/dKEJy5gaPTOUpIxbfRf/vTGP6lBbHwMbuhxLZB9V75AvKo2/Iv1og= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW3PR13MB4156 Cc: Eli Britstein , Jin Liu , Simon Horman , Chaoyong He , oss-drivers@corigine.com, Ilya Maximets , Peng Zhang Subject: [ovs-dev] [PATCH v2 1/6] netdev-offload-dpdk: use flow transfer proxy 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: , Errors-To: ovs-dev-bounces@openvswitch.org Sender: "dev" From: Peng Zhang Manage "transfer" flows via the corresponding mechanism. Doing so requires that the traffic source be specified explicitly, via the corresponding pattern item. Signed-off-by: Peng Zhang Signed-off-by: Jin Liu Signed-off-by: Simon Horman --- lib/netdev-dpdk.c | 60 +++++++++++++++++++++++++++++++++++++++++++++-- lib/netdev-dpdk.h | 2 ++ 2 files changed, 60 insertions(+), 2 deletions(-) diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c index fff57f78279a..d6f2f0517da6 100644 --- a/lib/netdev-dpdk.c +++ b/lib/netdev-dpdk.c @@ -437,6 +437,7 @@ enum dpdk_hw_ol_features { struct netdev_dpdk { PADDED_MEMBERS_CACHELINE_MARKER(CACHE_LINE_SIZE, cacheline0, dpdk_port_t port_id; + dpdk_port_t flow_transfer_proxy_port_id; /* If true, device was attached by rte_eth_dev_attach(). */ bool attached; @@ -1155,6 +1156,24 @@ dpdk_eth_dev_init(struct netdev_dpdk *dev) uint32_t rx_chksm_offload_capa = RTE_ETH_RX_OFFLOAD_UDP_CKSUM | RTE_ETH_RX_OFFLOAD_TCP_CKSUM | RTE_ETH_RX_OFFLOAD_IPV4_CKSUM; + int ret; + + /* Managing "transfer" flows requires that the user communicate them + * via a port which has the privilege to control the embedded switch. + * For some vendors, all ports in a given switching domain have + * this privilege. For other vendors, it's only one port. + * + * Get the proxy port ID and remember it for later use. + */ + ret = rte_flow_pick_transfer_proxy(dev->port_id, + &dev->flow_transfer_proxy_port_id, + NULL); + if (ret != 0) { + /* The PMD does not indicate the proxy port. + * Assume the proxy is unneeded. + */ + dev->flow_transfer_proxy_port_id = dev->port_id; + } rte_eth_dev_info_get(dev->port_id, &info); @@ -3769,6 +3788,7 @@ netdev_dpdk_detach(struct unixctl_conn *conn, int argc OVS_UNUSED, struct ds used_interfaces = DS_EMPTY_INITIALIZER; struct rte_eth_dev_info dev_info; dpdk_port_t sibling_port_id; + struct netdev_dpdk *dev; dpdk_port_t port_id; bool used = false; char *response; @@ -3786,8 +3806,6 @@ netdev_dpdk_detach(struct unixctl_conn *conn, int argc OVS_UNUSED, argv[1]); RTE_ETH_FOREACH_DEV_SIBLING (sibling_port_id, port_id) { - struct netdev_dpdk *dev; - LIST_FOR_EACH (dev, list_node, &dpdk_list) { if (dev->port_id != sibling_port_id) { continue; @@ -3807,6 +3825,17 @@ netdev_dpdk_detach(struct unixctl_conn *conn, int argc OVS_UNUSED, } ds_destroy(&used_interfaces); + /* The device being detached may happen to be a flow proxy port + * for another device (still attached). Update the flow proxy port id, + * indicate that the device being detached no longer needs a flow proxy. + */ + LIST_FOR_EACH (dev, list_node, &dpdk_list) { + if (dev->port_id == port_id) { + dev->flow_transfer_proxy_port_id = port_id; + break; + } + } + rte_eth_dev_info_get(port_id, &dev_info); rte_eth_dev_close(port_id); if (rte_dev_remove(dev_info.device) < 0) { @@ -3817,6 +3846,16 @@ netdev_dpdk_detach(struct unixctl_conn *conn, int argc OVS_UNUSED, response = xasprintf("All devices shared with device '%s' " "have been detached", argv[1]); + /* The device being detached may happen to be a flow proxy port. + * After the flow proxy port was detached, the related ports + * will reconfigure the device and update the proxy_port_id. + */ + LIST_FOR_EACH (dev, list_node, &dpdk_list) { + if (dev->flow_transfer_proxy_port_id == port_id) { + netdev_request_reconfigure(&dev->up); + } + } + ovs_mutex_unlock(&dpdk_mutex); unixctl_command_reply(conn, response); free(response); @@ -5192,6 +5231,23 @@ out: return ret; } +int +netdev_dpdk_get_prox_port_id(struct netdev *netdev) +{ + struct netdev_dpdk *dev; + int ret = -1; + + if (!is_dpdk_class(netdev->netdev_class)) { + return ret; + } + + dev = netdev_dpdk_cast(netdev); + ovs_mutex_lock(&dev->mutex); + ret = dev->flow_transfer_proxy_port_id; + ovs_mutex_unlock(&dev->mutex); + return ret; +} + bool netdev_dpdk_flow_api_supported(struct netdev *netdev) { diff --git a/lib/netdev-dpdk.h b/lib/netdev-dpdk.h index 5cd95d00f5a5..277db156fe06 100644 --- a/lib/netdev-dpdk.h +++ b/lib/netdev-dpdk.h @@ -51,6 +51,8 @@ netdev_dpdk_rte_flow_query_count(struct netdev *netdev, struct rte_flow_error *error); int netdev_dpdk_get_port_id(struct netdev *netdev); +int +netdev_dpdk_get_prox_port_id(struct netdev *netdev); #ifdef ALLOW_EXPERIMENTAL_API