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 From patchwork Thu Mar 9 13:02:48 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Horman X-Patchwork-Id: 1754625 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" (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=SMRgXfbp; 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 4PXTrq2jF1z2469 for ; Fri, 10 Mar 2023 00:03:39 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id 4B100612D5; Thu, 9 Mar 2023 13:03:36 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 4B100612D5 Authentication-Results: smtp3.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=SMRgXfbp 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 vtyJ0m82_6BA; Thu, 9 Mar 2023 13:03:35 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp3.osuosl.org (Postfix) with ESMTPS id F2CC5612C9; Thu, 9 Mar 2023 13:03:33 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org F2CC5612C9 Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id E9B5FC0098; Thu, 9 Mar 2023 13:03:30 +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 2F8DAC0035 for ; Thu, 9 Mar 2023 13:03:29 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id E7FD681496 for ; Thu, 9 Mar 2023 13:03:27 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org E7FD681496 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=SMRgXfbp 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 CXz-oRfHPl45 for ; Thu, 9 Mar 2023 13:03:22 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org 3828A81DF9 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 3828A81DF9 for ; Thu, 9 Mar 2023 13:03:22 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Q+DmhjNe68hQrk8M4WWLBkbatdPIBNVyoYyVRSI7OwyHrPr2pvmmXHXsxU91nnYmho9zONB+hlpR8fMKxsHa1cV/YHGMl784MQL+j0gFGNHxqbxnR+BWHAPwH7ku6x1++CnqTNSqmM9SS4fQQTrpZx2nOHN0PL7KMFGRZhBoC/r5zW7WMIqJKIfp8BCxrzNITbLR9k2fe2pqyc8xA87r+trUGTKhI6uTfdLCGCg6zGfixXNbA4eKAnBjs+fe/GbF/CV7RETmX8/JVne+o9A00FeEs3MfAHWK1RQVmniMW+6QS1dBFYBoLctSiEv1Hhmm2IWNUOPKh3e4Z4c4a1NLnA== 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=uJsZKAQPl2exfTEhomV7lQW+ABL4C2rgnONxF0LUlU4=; b=je63AN/I6Mhiqm1/OMJtf9zVml9nkQOe3Lu+mGubOnCJXDykWVaJ1ib1g1leUzyDZpm7afmpC5QPlKJNfgfITFJtW98Vx1fjsQ4tAkeZKKdxG1nzG0+YOvdqz5wvFvCTLgE065mw7JDfGCKdXTqDSJqUmPVtO9bqhA3EY5FNzxxvZNfY0nszrpRbOc2waTvyct05VFvtmNj9B6o7/aSm6J3cCa9aqzVtOivGEgCt0fUo9n0dgtej2bSF7Xd79p0WO7hY+mu4WbU5dCamkWkdheauv4spBfnnd6vAbvn8EGwSoyd6z3/Do+0V14GEd4yeM6NFAWIFli3f8XyIwaCg1w== 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=uJsZKAQPl2exfTEhomV7lQW+ABL4C2rgnONxF0LUlU4=; b=SMRgXfbppRO5FtKkdDnyHvSsO2X3Z6ZRFVe2DmSOht0YULa7WGJG9HJVfmjCoCnWP3d9WsiKUF0RpKTJpUGZkjU1fEKFtGoSY08YYjYRjRSb3C3WfUh+0BFft7U0RToTEAuBavWhZjWzdQLCG3iLj71iH2pLkcDkTVPDDT7pIHI= 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:20 +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:20 +0000 From: Simon Horman To: dev@openvswitch.org Date: Thu, 9 Mar 2023 14:02:48 +0100 Message-Id: <20230309130252.356289-3-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: 64f3c8df-dd6a-4e67-a565-08db209ea831 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: t7Lmt6yorKnfWym8LLeUVb5UNJ8m9kReGIrsTguV2w/hnnqmbJTCmNunV0/lKg6sel+Fxg/+Pk/XCB1IzDr+bb28wnB7FKPCQZuH/t7vVSSsi7qDRt/rpM4nuAJbV6QNwH7ZRnsiD0BmGrpng8IXWdB+yMvkExq2GBZuipdQes90GGDdvvEDSSL5BXzFBWcj2Upyn8LZKJJvswhfv12R5MSAUCqUV8fF0duMUpPwBy+r9MOcCyNW8c5MSfFaTbpFT+wq7WjDd6R3G36xnSjlxosGAQhpRpYKMiRhNAEkfPizsy0lIGSwRRT4LP376IrpfKrwh6p9lwpgcTt1UsYZhZhBO6A9ylNMbl8fbZFDgzksjfYZFKYpT2Acj2dDt3uamH9YVBw1C18c/OQfBW8ildlLMmuiB8wtjwcxu4tiRwcTOrodLtVPaA3hzU1hmTYpPYqVk3VaFBzmLlm9X52p1PAX+mlzoIdHPkNU9v0Q4lE+WH+uNERcqaP8ADOf+jUECd8p2q7akB5Wf0RAABlCpGzTZhUmrF5UvPM8nilNneW9XVXEwvxiz0Rggy7KRBY2jmurNrKPNAxuo8v13zQXxGTZ07YUxY1DH2O3Fo6URz5I8/Pey1Af5ZuxGcFcn8RjufkYCuA283P42s7LZoCn3g== 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: h7z9esiOEueH/h8WXRW3pyJji9Et1jS+9kLg2YUQiu9yJqdcvSYLbuE3tBVLbUmidHI6kUWFjWCpcjoxaaIFQ5ZvlHuaA12l/eKNADnUYBHKEYMsxqzb45hhuK73IU55eEewJdBI3vIRcMpDCz785oHzyiX2vXGZmA4UFM/GsDxVRdGNeaf+ccd7EeV+B1r8UezOiibKBVyiUAxORiTJykskzTGIo5MxUEtBMwWzfb8O4giv4dIPzkwRO9+kPzGO0x1Ok8Qf/c8ntoaBDHLDY2yW2roPdwt8uwvcvcewz7zNBIiC1JcHA4myZfwZxBvtRM+7Zq6doDjkNoVY0JreObJDNXcv8CMdNhSOEhk0yj6CMOLUXnwRXXHsedjvZoRTmBHqJvzKS7lMJM30CqTVfDuwZAskcVLcUEbJBfbaYKSFtJ0YyUvTEtfDk/D7kQYqNRBGSa1qYIbUhbcLaKbfL9TFd09yX7E9CECUsSR3ZuISHpVuIUeh3AHx+SSTZ63hGu6TeEUe82R6XLN1QhQwfteHyZAfsUylyLM2SbEJtSvL0+7NQTMpo9zlv3MOb2+htIIJ+sd9vpbw7h0hDElTHxeeWMzzEKtu7m2dUlzMVr+DhwvvrC2OJGyf3ge7Py5iGezibdbbYQcGHLj67qHESU88qFc8yTVVudm/UR5P9V/EYnhYhkVBgRbeHzhQGAbd+lnXmrwr2acWQV60sLs4Gp534VnlCxVvBTwiiHRelbx/3BuLGPm4JB4QJfilfttCpXHlHQo4fWsfkyCEpUCFRHx02Mcz1v8BhIlwSl0zXSkpvhcD0yGfu6xHL8NcVdriOdoVuSBVse8ALpKInEOvLYMgBhLdmwgF9NvecDBIWSYY488KdJw6FVElAxV9aeRaPCxMXXSEJXuXl++7zKtOa0OobfHIahSi782zCBWlSaN72pMgOp7U73wlSPq7bVtvBiZAd7Pz8lBMeC+SzP7fBVFd7JodS07yZCbvRVWsiXUI3VJfzzFJiW+W8ubklzHxNmrE1NTiLB3DRw7u3O/VwF8qGLQPKZRqOIGfiIv/IlltN0q0vGl9jpGGenOc/yKf0STsu5/bU+SGYSDj33ga8dMq/15zKvJMIklx10+6uMad/LPk7NCAWP6Vz4S9O2FAdaH7vm+W19dW+ZmPqApojTl/ZfzJw2BflXupk+/r472kbqVqL/VTEucIszGvSUj2tINbYsa4wCjqyWpcCcZ21jlQTgpGbM8JZXM6SHQwq2ywjK3NLl6cY+P1J7K4CEAGvS4NjdimyUGtholILDoMbJxKxXuxKUk/24aQYshfiyQ5j0421oAbdk2Bplf0ZBRw/DjcKLgJxtteHuZ3f2YYcJgcyIzakfx1G2Jrw3Fk+NGhrpEKEDV4tEpCWuBoP7Hk6LzFJNK4cIyffPTblxCnQ+YQiLtH1zd1QmFsgOSWGAf9LDnOoiO/toFGKZQOqTIr/j5YtUz5XWX86uKwN+ge06BhoO4MSXSOhL2b3SKs7V7ELq/DX5ch1knVQU78g2vTrwnUy+13kI7vMlT+NpJirs85nnYkD7s+RDWxZwMkOMIlOJfzuFGW69G836k6kDetdAEWkk5SjG1knhwMc8dF9ODxpvsiKAu8J4nbGAYQgjjVpY5VzmDigEAvfZgQmS5rEVmMCLXUfUrHZbID9fRNeg== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 64f3c8df-dd6a-4e67-a565-08db209ea831 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:20.3054 (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: 5mjcy5u0bBBavGoSFTmXHx4rsURfQBrotUjg8Edr3n03TP5tgRCF8U2X7p4ynZ3QD7r8dlhlcTnmmLJJuMv7opaouoNkTm/fWK6/Ko6dXLk= 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 2/6] netdev-offload: Add DPDK meter offload API 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 Add API to offload DPDK meter to HW, and the corresponding functions to call the DPDK meter callbacks from all the registered flow API providers. The interfaces are like those related to DPDK meter in dpif_class, in order to pass necessary info to HW. Signed-off-by: Peng Zhang Signed-off-by: Jin Liu Signed-off-by: Simon Horman --- Documentation/howto/dpdk.rst | 5 +- lib/netdev-offload-provider.h | 30 +++++++++++ lib/netdev-offload.c | 99 +++++++++++++++++++++++++++++++++++ lib/netdev-offload.h | 9 ++++ 4 files changed, 141 insertions(+), 2 deletions(-) diff --git a/Documentation/howto/dpdk.rst b/Documentation/howto/dpdk.rst index 04609b20bd21..02fc568770ee 100644 --- a/Documentation/howto/dpdk.rst +++ b/Documentation/howto/dpdk.rst @@ -401,10 +401,11 @@ Supported actions for hardware offload are: - Modification of IPv6 (set_field:->ipv6_src/ipv6_dst/mod_nw_ttl). - Clone/output (tnl_push and output) for encapsulating over a tunnel. - Tunnel pop, for packets received on physical ports. +- Meter. .. note:: - Tunnel offloads are experimental APIs in DPDK. In order to enable it, - compile with -DALLOW_EXPERIMENTAL_API. + Tunnel offloads and Meter offloads are experimental APIs in DPDK. To enable + these features, compile with -DALLOW_EXPERIMENTAL_API. Multiprocess ------------ diff --git a/lib/netdev-offload-provider.h b/lib/netdev-offload-provider.h index 9108856d18d1..7ecbb8d026f1 100644 --- a/lib/netdev-offload-provider.h +++ b/lib/netdev-offload-provider.h @@ -102,6 +102,16 @@ struct netdev_flow_api { int (*meter_set)(ofproto_meter_id meter_id, struct ofputil_meter_config *config); + /* Offloads or modifies the offloaded meter on the netdev with the given + * 'meter_id' and the configuration in 'config'. On failure, a non-zero + * error code is returned. + * + * The meter id specified through 'config->meter_id' is converted as an + * internal meter id. */ + int (*dpdk_meter_set)(struct netdev *, + ofproto_meter_id meter_id, + struct ofputil_meter_config *); + /* Queries HW for meter stats with the given 'meter_id'. Store the stats * of dropped packets to band 0. On failure, a non-zero error code is * returned. @@ -113,6 +123,18 @@ struct netdev_flow_api { int (*meter_get)(ofproto_meter_id meter_id, struct ofputil_meter_stats *stats); + /* Queries netdev for meter stats with the given 'meter_id'. Store the + * stats of dropped packets to band 0. On failure, a non-zero error code + * is returned. + * + * Note that the 'stats' structure is already initialized, and only the + * available statistics should be incremented, not replaced. Those fields + * are packet_in_count, byte_in_count and band[]->byte_count and + * band[]->packet_count. */ + int (*dpdk_meter_get)(struct netdev *, + ofproto_meter_id meter_id, + struct ofputil_meter_stats *); + /* Removes meter 'meter_id' from HW. Store the stats of dropped packets to * band 0. On failure, a non-zero error code is returned. * @@ -121,6 +143,14 @@ struct netdev_flow_api { int (*meter_del)(ofproto_meter_id meter_id, struct ofputil_meter_stats *stats); + /* Removes meter 'meter_id' from netdev. Store the stats of dropped packets + * to band 0. On failure, a non-zero error code is returned. + * + * If del success, 'stats' will be set zero. */ + int (*dpdk_meter_del)(struct netdev *, + ofproto_meter_id meter_id, + struct ofputil_meter_stats *stats); + /* Initializies the netdev flow api. * Return 0 if successful, otherwise returns a positive errno value. */ int (*init_flow_api)(struct netdev *); diff --git a/lib/netdev-offload.c b/lib/netdev-offload.c index 4592262bd34e..44cab0c4ee79 100644 --- a/lib/netdev-offload.c +++ b/lib/netdev-offload.c @@ -895,3 +895,102 @@ netdev_set_flow_api_enabled(const struct smap *ovs_other_config) } } } + +void +dpdk_meter_offload_set(const char *dpif_type, + ofproto_meter_id meter_id, + struct ofputil_meter_config *config) +{ + struct netdev_registered_flow_api *rfa; + struct port_to_netdev_data *data; + struct netdev *dev; + int ret; + + ovs_rwlock_rdlock(&netdev_hmap_rwlock); + HMAP_FOR_EACH (data, portno_node, &port_to_netdev) { + dev = data->netdev; + if (netdev_get_dpif_type(dev) == dpif_type) { + /* Offload APIs could fail, for example, because the offload is not + * supported. This is fine, as the offload API should take care of + * this. */ + CMAP_FOR_EACH (rfa, cmap_node, &netdev_flow_apis) { + if (rfa->flow_api->dpdk_meter_set) { + ret = rfa->flow_api->dpdk_meter_set(dev, meter_id, config); + if (ret) { + VLOG_DBG_RL(&rl, "Failed setting meter %u for flow api" + " %s, error %d", meter_id.uint32, + rfa->flow_api->type, ret); + } + } + } + } + } + ovs_rwlock_unlock(&netdev_hmap_rwlock); +} + +void +dpdk_meter_offload_get(const char *dpif_type, + ofproto_meter_id meter_id, + struct ofputil_meter_stats *stats) +{ + struct netdev_registered_flow_api *rfa; + struct ofputil_meter_stats offload_stats; + struct port_to_netdev_data *data; + struct netdev *dev; + int ret; + + ovs_rwlock_rdlock(&netdev_hmap_rwlock); + HMAP_FOR_EACH (data, portno_node, &port_to_netdev) { + memset(&offload_stats, 0, sizeof(struct ofputil_meter_stats)); + dev = data->netdev; + if (netdev_get_dpif_type(dev) == dpif_type) { + CMAP_FOR_EACH (rfa, cmap_node, &netdev_flow_apis) { + if (rfa->flow_api->dpdk_meter_get) { + ret = rfa->flow_api->dpdk_meter_get(dev, meter_id, stats); + if (ret) { + VLOG_DBG_RL(&rl, "Failed getting meter %u for flow " + "api %s, error %d", meter_id.uint32, + rfa->flow_api->type, ret); + } + } + } + + if (!offload_stats.byte_in_count && + !offload_stats.packet_in_count) { + continue; + } + stats->byte_in_count += offload_stats.byte_in_count; + stats->packet_in_count += offload_stats.packet_in_count; + } + } + ovs_rwlock_unlock(&netdev_hmap_rwlock); +} + +void +dpdk_meter_offload_del(const char *dpif_type, + ofproto_meter_id meter_id, + struct ofputil_meter_stats *stats) +{ + struct netdev_registered_flow_api *rfa; + struct port_to_netdev_data *data; + struct netdev *dev; + int ret; + + ovs_rwlock_rdlock(&netdev_hmap_rwlock); + HMAP_FOR_EACH (data, portno_node, &port_to_netdev) { + dev = data->netdev; + if (netdev_get_dpif_type(dev) == dpif_type) { + CMAP_FOR_EACH (rfa, cmap_node, &netdev_flow_apis) { + if (rfa->flow_api->dpdk_meter_del) { + ret = rfa->flow_api->dpdk_meter_del(dev, meter_id, stats); + if (ret) { + VLOG_DBG_RL(&rl, "Failed deleting meter %u for flow " + "api %s, error %d", meter_id.uint32, + rfa->flow_api->type, ret); + } + } + } + } + } + ovs_rwlock_unlock(&netdev_hmap_rwlock); +} diff --git a/lib/netdev-offload.h b/lib/netdev-offload.h index edc843cd99a3..e53f70a277b3 100644 --- a/lib/netdev-offload.h +++ b/lib/netdev-offload.h @@ -161,6 +161,15 @@ int netdev_ports_get_n_flows(const char *dpif_type, void meter_offload_set(ofproto_meter_id, struct ofputil_meter_config *); int meter_offload_get(ofproto_meter_id, struct ofputil_meter_stats *); int meter_offload_del(ofproto_meter_id, struct ofputil_meter_stats *); +void dpdk_meter_offload_set(const char *dpif_type, + ofproto_meter_id meter_id, + struct ofputil_meter_config *config); +void dpdk_meter_offload_del(const char *dpif_type, + ofproto_meter_id meter_id_, + struct ofputil_meter_stats *stats); +void dpdk_meter_offload_get(const char *dpif_type, + ofproto_meter_id meter_id_, + struct ofputil_meter_stats *stats); #ifdef __cplusplus } From patchwork Thu Mar 9 13:02:49 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Horman X-Patchwork-Id: 1754627 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::136; helo=smtp3.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=lNd0P02B; dkim-atps=neutral Received: from smtp3.osuosl.org (smtp3.osuosl.org [IPv6:2605:bc80:3010::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 4PXTrs3s4qz246H for ; Fri, 10 Mar 2023 00:03:41 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id BD67F612DC; Thu, 9 Mar 2023 13:03:37 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org BD67F612DC Authentication-Results: smtp3.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=lNd0P02B 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 SKnzeGi7aiDW; Thu, 9 Mar 2023 13:03:36 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp3.osuosl.org (Postfix) with ESMTPS id 761DE612D1; Thu, 9 Mar 2023 13:03:35 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 761DE612D1 Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id C869CC009D; Thu, 9 Mar 2023 13:03:31 +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 9F7ABC0095 for ; Thu, 9 Mar 2023 13:03:30 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 6DB6C415F6 for ; Thu, 9 Mar 2023 13:03:30 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 6DB6C415F6 Authentication-Results: smtp4.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=lNd0P02B 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 Izer88QEHyPn for ; Thu, 9 Mar 2023 13:03:24 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 98B2240650 Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on20725.outbound.protection.outlook.com [IPv6:2a01:111:f400:7ea9::725]) by smtp4.osuosl.org (Postfix) with ESMTPS id 98B2240650 for ; Thu, 9 Mar 2023 13:03:24 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Klk0ydyujT1ru0LOfsz6Q+bWBET3yPdBc5XsopD/xTUHwLUvxvA1/QOcJssRats/UE56j36gi0iyC3GI2uoqQYTH96Zvr2F4/gH0rxpV2GaH5ZNkQQWcR+JvvrusUS8ZhBuLoCu0HUQUwIS1VTzi8rCfaNxfAQ4lherNPYKrlDZYD4PzWdA4vD2EegonvqXuM5eNcuXuFjzQZ6hS2Gs1aTo/XSfj0FY/GmOX9eqEmnjx5uZM78C76AwKQlYUaK1KZH1x8/2FcwUcPpzmiG1j/Ipvd5Yagm35cGqp6LS4tjTotvBLyCM0Ep4mbj0Yndrf1AqvL6SGJc78YMbyPe1B7w== 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=3H6su9txy3W54CQBKIA7NZa0jK0AXNN7e5k4WiWibJg=; b=CK8BTzDKKOx5kdWVkCR2Pn+oC+etSWurrkiDyoJLQZuQLnmb9cqxxHvRuTx9GeSLu2iEYqVNUuptbqpqT7MD4C84MI6ilo5ijuC+ekF7sT/2alEbJaFiZ5YsISCkI+ViiOitBxzCEC17dq8v3y96qMtochFA46ewP/rNXVizvgw0s8Z7Dj1jvMsRkhCgGEAhCF7x9xmL1lqRryWXplMAKy+pSGpEOErwRszMB3eozJo009jguc+5XVAWiqGCVBS9mKmdgWTWsmDBVovuUFWN+SmnADnUiQDnmsQiJl3TRs7D7el+U80K6xPy08V6plIgay7hWq2iVWTDv/LcZZ83dA== 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=3H6su9txy3W54CQBKIA7NZa0jK0AXNN7e5k4WiWibJg=; b=lNd0P02BXhfuBEl4M8c48STUcTjvsjXN8evBy54hUAhd0f9yp+cnqTvve0EBrGrSiay+Nq0LfULYPJmFXHhrlPt85SvyBaIghIY1BFPCUaqXJH84FBvY9JeIqWrCYJQLpXCBntFl1hqS0Bcz/zE1FJtRr1UKnzyzt+6MWZC0bg0= 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:22 +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:22 +0000 From: Simon Horman To: dev@openvswitch.org Date: Thu, 9 Mar 2023 14:02:49 +0100 Message-Id: <20230309130252.356289-4-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: ce472446-22e2-42d4-1e0c-08db209ea93a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: h5cbSC0/+JshgXWOWyL1vrMbSJkKvWPXKncWyyBJBVaPk6v8vFjVTRUSSEZZdouym9GA0Qb7PkCIZHILtHkred2IS+Rbofkox5ftfWfcpFTAopFeQHiJNyTASjCbRtdQq9mbrMJN9gcCWe6I/kU6d2epoh1AvEMZFV5xPgVJAW86xwkEK41ybswbNq19CvpBj+nxs5u/c5IFYwznX0KnT76eKrYU6/W+Nfg7PxczASGYMLtTd7rOsfsL7vU7lC6I4hvbpjPGGfW5nroqbU5EseGt5eQQPW8/cyP+uXbw5ZHNODNYvU1FuN8/XW5igbardINiysBdEyOBiZEo9uUhNl/zVlDZeRBz3YQQFtInX2Emr3BI/3vHTu1sdbMJU4aDHJ8c/DTM8gvZ34Ej4U2GjLV67/sAWxDJSOjcTdgzm3yAri1eiGrPobt8iXuZoagxVqBbBAvPeo8jmO/VJPBY4mM2iPnpJb0SVzbZLlcyTy2X1zsjeaQZWP/SLDYnH7V3Ka/FYEct6Z/RZwro1zveEPqJyfOFDXdWPbwhE9qwDVpiRupe5aTDyb6k7G+EJT3KbmhdBueWkfZvl4no8QidsR8m5h/JOX6jOnaMcE7BxFCoCtKVJ+bf0WDL4OhyhdvPhV2s2NrF06TXjxwvIpdT5A== 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: m9rK09dJxOf1v3vcgaDkSFQukHvLLKSHlbbbZ3i3aD6voBk9/PQ+IFigeEcy4N93e2SsvbidgzxKLtqc97uqj9dBFQL5ujN3anWK7NmYxcfcqsIJnaIA14mv8tosQYVYzzduYwQRZqn22Lp6oZFZvI6Opf/tAACMw8YrBQbjs6QQH1xkiWCpFy65NulqjWkbgquJZa3DZBUQ9Z2hIouxDyTUKaQPlEVHbD5mN6RNdSJZYzBoJqLd4/1fJh/TUMBSumMWHnKnEz5lDdV2G8qsRHSSjAGpnv1PTuU30CpjbattIEA5a4OYaQI9lm6/bVEzrJRjDio6Kl8ivI4Gpzp+5vDoy0nIW31c4VBTBipOvIQ1tXnFwBSXUlHOzn4TDYWRvPDPkfxiubz/KHziNqbfxBoNFFihUKi+BAipF9v73+n6q5yMenpQxwDnEIt3THk+5+LQWwYTDl4YVMgDEn7O0yOtd0u7VN7QFqXPS3L/J4D+Ll4eFW6WUQqU2nrrC4wRrzObjMmN6f+kR4QMo9n+yKhGkLKI1W/8mX+BGmR26W6HPQspYBRS2AGUadwfWvkNdKUab4C6qruQvTxMAfbvi+XUkRF3xfG75Bkk4xGEcwMUo/0mkXGCtBSzC9yK+hZ968372v//v0pUuYcDRV+kAKIyvMeC2EdA5Io64HPPVSdk/7TF0UQhp3EvDls0YnQSo/AoSgngIHDDYARQ8zByf2YUUlexfd3Qlgqol8BrKbT1o3IT/ZediCwZAna8i4o9OtssBrkGCy3lQ3zgQ3/YoCjzwDRh/Fx7Z+icExP3jsxWRbOYLRUP1JhuMgNpmK4YTAC/lFJwdHKfmGZY8h3mi/ctoEFT9fnBrqlSqYkTQtFOmoJENnXA73E9IYgQ+Je7wiONV1PqDdy1GVWpzJ5DBCosn86MmSBquKUeokLkMewEIg42Itg7v9/0HkKxmisNao6/abTNAWBOLnqM+GmV3JGuKvIUnH1KXO1n7Csf2V4g47geE/CpZnjAl4t6t/lM5eYOZEvn+rnyuy8jczBwUb9Q4MUbC0i3PGmLb7EYRk0xnq0eO5A1MFq1rqrlOmrKxX1o2PtdvSr3HkV6OqOxo1aA79yLmca2Ltl9wHL5y9x7lZKoMeGp87ZaIWOgiGA+/vr77XAbBF4Lt00A1sqCeQGI53LhKrW+xAJki3aWKeiYUtADkGnBx+iIQUHRvnPiq4AEPiLPCcsASl5UZS9phzMVSwslVavXjBs/UnJVXjAchftRIEXhS/rmLRprVo2thw3klKCnLlwUNNcWBhQmpAv7HjkuCM+NNJK2lPtOJup1RSqxdZMSACAWZtAebGHYa1M5iw7fsWF0SMt5sYrGljwP4SoUxZUzL62AymkB6CpoSj++qdNX0dSRFFPex9+cjbKhxq4BTjuJQSXr7CZXNWr5qGQWn//mokif1zDUmRaSsxs6WMuOxdci1PFLgWT2x8tV7QBG8ton2oOykt409EEM8GXHdgtt6G9S6Tha9HJ59xQziulax4bmOuHcOvO6+PpBGH5VNfFS6Bds9yj2nWVKs0O6ZFwXkvlDC+2aJepY8ZFmgfuVO/yWdIK2E9OLqzFsXouQ97LAVRMSepQJ65Re+2Qdfr3oEWUMaZLo2ighH1/fPqThwBu+Q7R+HPVIB7oR52VnW4F6AcXcyjvHhQ== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: ce472446-22e2-42d4-1e0c-08db209ea93a 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:22.1168 (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: NcPFf/7Fb60EIEghusFUBwJa4UOd1aVItaLgByvzQ41zU77jlhLLdupuOa2RwpO5S2AttWevVyDXTKzkw9teC4AOr0sLhlP22a4/L3MPxbI= 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 3/6] dpif-netdev: Offloading meter with DPDK 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 OVS-DPDK meters are created in advance and OpenFlow rules refer to them by their unique ID. A new API is used to offload them. By calling the API, meters are created and try to be offload by port in the bridge with the proxy port id. Signed-off-by: Peng Zhang Signed-off-by: Jin Liu Signed-off-by: Simon Horman --- lib/dpif-netdev.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c index 2c08a71c8db2..e8d0ca6606de 100644 --- a/lib/dpif-netdev.c +++ b/lib/dpif-netdev.c @@ -7277,6 +7277,11 @@ dpif_netdev_meter_set(struct dpif *dpif, ofproto_meter_id meter_id, ovs_mutex_unlock(&dp->meters_lock); + if (netdev_is_flow_api_enabled()) { + dpdk_meter_offload_set(dpif_normalize_type(dpif_type(dpif)), + meter_id, config); + } + return 0; } @@ -7313,8 +7318,18 @@ dpif_netdev_meter_get(const struct dpif *dpif, ovs_mutex_unlock(&meter->lock); stats->n_bands = i; - } + if (netdev_is_flow_api_enabled()) { + dpdk_meter_offload_get(dpif_normalize_type(dpif_type(dpif)), + meter_id_, stats); + + /* nit: Meter offload currently only supports one band */ + if (meter->n_bands) { + stats->bands[0].packet_count = stats->packet_in_count; + stats->bands[0].byte_count = stats->byte_in_count; + } + } + } return 0; } @@ -7330,6 +7345,11 @@ dpif_netdev_meter_del(struct dpif *dpif, if (!error) { uint32_t meter_id = meter_id_.uint32; + if (netdev_is_flow_api_enabled()) { + dpdk_meter_offload_del(dpif_normalize_type(dpif_type(dpif)), + meter_id_, stats); + } + ovs_mutex_lock(&dp->meters_lock); dp_meter_detach_free(&dp->meters, meter_id); ovs_mutex_unlock(&dp->meters_lock); From patchwork Thu Mar 9 13:02:50 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Horman X-Patchwork-Id: 1754628 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::137; helo=smtp4.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=HbDH4Ut6; dkim-atps=neutral Received: from smtp4.osuosl.org (smtp4.osuosl.org [IPv6:2605:bc80:3010::137]) (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 4PXTrx63x3z2469 for ; Fri, 10 Mar 2023 00:03:45 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 069C041950; Thu, 9 Mar 2023 13:03:43 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 069C041950 Authentication-Results: smtp4.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=HbDH4Ut6 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 A44ezHF_EDsW; Thu, 9 Mar 2023 13:03:41 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp4.osuosl.org (Postfix) with ESMTPS id D534941954; Thu, 9 Mar 2023 13:03:39 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org D534941954 Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id BBE6CC008E; Thu, 9 Mar 2023 13:03:34 +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 081C4C009E for ; Thu, 9 Mar 2023 13:03:32 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id C69BD40650 for ; Thu, 9 Mar 2023 13:03:30 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org C69BD40650 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 vLUgEa7SXgSn for ; Thu, 9 Mar 2023 13:03:26 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 170C3408F8 Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on20717.outbound.protection.outlook.com [IPv6:2a01:111:f400:7ea9::717]) by smtp4.osuosl.org (Postfix) with ESMTPS id 170C3408F8 for ; Thu, 9 Mar 2023 13:03:25 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KY+sw3yn1rYptJglJKQ7NCft3eirVlGswd+5ow7yEHWti7hORVhGI3+u9/qh/Kf/MDT/ZigAW7B09znKJgYvvEq+w4tuqa9TrjW+zq5g517jc+XfphzpRWLWrI0C9mjygRuWDTeaRsm3fFYVEDAJxLdyO+sWgez2KUVLoQtj3USs/7D3nMunw3mNq5Fa22+JOiymE7N+wpTgud30V+8AYJm+BsYEdXpqDT8v2e9Vov5lGB+2a/lTuO90tCTSkd7wvZtSHEClzJD1buQVUd/OhSFqcvukHAr9E3LhJOShYcD+C2/l0HDwK37UddKofZGrcUMK11vnE3c7DUiFXnZIVA== 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=OCDydi1RzvX9W3vNNaJckZrF9muRDaoS/Y9vhvZh1/I=; b=NoMZieUJjw36/ifwHOO5zVPN/GL0h4x2f5XSaeRJly4hmxqP4ffJbL38Noe7fKKVfkuM/kg84Iz3jyjozZ5ictSL0AGUcQgBsFMnPQ0dw5kRlcIUwWnYlAvBcr1Bpshx8kG/6gHeia72g7IXeQMb0pQ6x+QMXdbXU2UVpRk9EJdf7uY8YuRO5WqBRofAHMUT0ZjyuUzzJNmoY8wZgBKlDceUUTn6iN9diRYT4lu8PpupLu97y41FIdMyakoFcWOe/Av69MtROE6TWasqM4l/PnySIcwqBJh8AtGiJnhe7jBZYgomHBhjk6CM5H9+iywQNvUOszdKLNIaRx37nO/PWA== 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=OCDydi1RzvX9W3vNNaJckZrF9muRDaoS/Y9vhvZh1/I=; b=HbDH4Ut6aCaN4Jq5S3aZ4xSY+AaCu24D+o8BWEtbYlzkpco2vGSIl8ucrF/EfVT5vw4Srdo2bv42yB/lBwesZgfoOLCA/2306Ry/H5QTJtbZSsk+/ovLofedz4z31fxB9tbLQf300y0qBvI/nwyFF/3fzxWDR/N6HU7UbB3lhYE= 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:24 +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:24 +0000 From: Simon Horman To: dev@openvswitch.org Date: Thu, 9 Mar 2023 14:02:50 +0100 Message-Id: <20230309130252.356289-5-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: f9bab581-63f9-44e5-09e8-08db209eaa4f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: g8cb6+tedGCNwB3CjpU6VJ+yHkkc1st6XG0UYju6hyVxgNS2/IkBK08vo/IsSyEkFiVUKolqmB71r6FfPAU8tTALijkGAPUEokQ3KjUoL29Ia0UdrN78VeuigXyA4ELIqcKYX/iDBjkSkw2OTjWS6vHJ710EucIYCpDf3VehiV2a44YPmeBuvcRZHEDr5g9dq+RmaTMcae/p6SdbEILQcziMaQCdobmORFlQQzPIgokWZZB99cvDjy/f3EXi/Ungar36wOoxTcXV1tYtE3DlYDGUVtm2x44GdIthdlWRQeyLdFyyiZ5ohztutDjdCbSRoMv0XQUmJpGwjIBuYMCCA09VbE/ztiC/LqAZNR3cr51AQGjDiyyP6GG/BdBm9k/Tgk9duXIZmjGXlPh4lQGcCxKh+NPQsp6eLydVLJycXYSchfq6pDO/uPeTuCFP82E1lvJLz0EWbsLa5RhTnihc0Jkr/VoFmV5X25HC0YqR8rq/Tlfhh+57a6biyCAB4C4MZ7nwChmZDk9cqCmjWUtX1hDjMRbTxbFi+jcp34c3jvJT4ioxqVt2lkkCqKYdwt6+OGc47rCo57gM4gtj91S+4djhmcjk3jHPr7sPAncgZ9l8+OntnART/x6BbvtWGRU3W4ZDfSCYpXIJgYBzx2e8Rw== 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)(30864003)(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: UmmZi22I4B0bYRZ042+gkYNAhbw6OEnvQtwo0Klh2v0ErbdWk5pkODdd6ahV0BrgKVwvn+DaVzyb837qKtdvLce0FnBaYuPNcxO1Nx1s1gZg8FA6u5LibReJNomoLGYlWV602fIZhAvaJuf3nmTQ7wQGiO3NsCL1plqjqlRNZMprMRVo2aewR9LdLOtLR5YvUh2eGpNrUab0kfe2K2uZqSYcIMCBoN25LZk/yO15uWfiTcWqefriAxwIoUNBSdFcPU80bBEEo8puOnc6+We0KikPPrEIesDU8COP731kYSEp9P+rgaVQuJ5Uy5nXIvAc3w00UGMJxlrH35NiCL2GadidLlheS+NtXzODfYDHFUpdpw5GXzlsxqeV+oWLokoWzt2nYM90PM/FUQLPiFeAf8MQX8J4mEt7HHVfgSXQu2goi3thPfiKzA1+TKI5/mrmB8T8HZEQVTUeD1kmqzMdH0a2IxTvJvRiu7BWFgULPWUcskMiiRPIprD3r92rg4ziR2X+HazbZgfVVUPXqA+vO9FHT2K3+lPa1xpmEO8dhvS5uxkUYdLBJ05d82KaiCBEWqVElCKYJZK/0FryguKphHslrSv/VN2AIDZnIEx/898fytZRlsj6ktWpONwEJhLBPaxswVnu7X6XKb61nOk1UCGC0rF2sdTOritcp5pUhgTQoghdslY9Z/M2n258iwF5NXoTCMJfLY229NBWhN7HvzEvYRTVOAfXVNrzdkNZ8eZSh38KWGyCiQIdO+7UWKGKPYoGYC8eesPwwQx4x5NiX0WlnLqjfOQJmDElXVhwR5rvM7Th8ffZNCO5xTduEFAAwh6kdFwyb27HyZ8c9aiW7xhJwdlCHntnUungpsMx8bmZKBIGuBnvA0id1L1EgZQT0vv/2LdrQWw1MfYIthcuGvdIhfxuVlMNBC0GNWdGbGZ5iGWu/+sulrGSlTmYRPoalBCo1b0rdA5778Pd9rHNtE3UQJvlhjd9/rRC1yQVeIVo5PccY38/Oj8x8pScDMiwv7DfOelHcaoL5ga34H39DBXSqUDH3gt8YHG71F2H85jNw4S71GVElMKN5wPHhi5ELuaYBLlq4KkIM/d2GFOILURJ1dSEPV19bLvSsTKupAKcSf3rjW3xXFJKascaEyviRdikiLLO2GmchfUie3UxRiVkv+3KYDWnOxWdMEQ0fPqP/xVG8AcFdYyLYPOUpxHBuMaccIyNyUuBNBvYavAFFH+o+OEf4CPK1jg9gmgF0lFsPMY9Vq1/blISCOoIA0du5iI6bjfT5tZIlA2icNAD7JdF5UiKJ3cBEi54+EuCRk43wbYUsPLMcBqI3Xb4tpNk6uv7u/p3XOqGB8mUA2/D8pjTetE1xhD2KOiaGfHrm5RZBewn8wC2DZY2BX874iZKT5JgBnycLZYDaRKDVnIL2+dMKUXqfjrpW1asEhy6f2/Yeun9tR2nd40Kqer9dnmYqHFYiFVM6JNvIiqWVQ1pQDJFaLe0dZ4xCOiolqa8XGWTWCh1bzl88fDWKtbgJMMIiNtt4Bs2jQsaDzIGXBMmef0vimqGzYA9sQuouhS5mpl2amvd4fG/u70Vq0m6njdDUwDqoG1TtdFEzB974aPRp+31SYnPUqB2HJ1NsxTboqRILRvNum16tV76YQUexS0x3IFXGDi9FxBk6dtJh8ieVw== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: f9bab581-63f9-44e5-09e8-08db209eaa4f 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:23.9941 (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: W/B6vbyxP+ncIDXi4i+bu5gKzhvQ5/gneh+slXvqv0A+Xi26NLNyILCI6x2Ga4oZdk2qer/CEDcjUTqKviCVSuO4iSZqjs0rLoUu0kdFf5Q= 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 4/6] netdev-offload-dpdk: Implement meter offload API for DPDK 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 For dpif-netdev, meters are mapped by DPDK meter with one-to-one relationship. Implement meter offload API to set/get/del the DPDK meter with proxy port id. Signed-off-by: Peng Zhang Signed-off-by: Jin Liu Signed-off-by: Simon Horman --- lib/netdev-dpdk.c | 202 ++++++++++++++++++++++++++++++++++++++ lib/netdev-dpdk.h | 41 ++++++++ lib/netdev-offload-dpdk.c | 89 +++++++++++++++++ 3 files changed, 332 insertions(+) diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c index d6f2f0517da6..cc2d0762226f 100644 --- a/lib/netdev-dpdk.c +++ b/lib/netdev-dpdk.c @@ -37,6 +37,7 @@ #include #include #include +#include #include #include #include @@ -5330,8 +5331,209 @@ netdev_dpdk_rte_flow_query_count(struct netdev *netdev, return ret; } +static int OVS_UNUSED +netdev_dpdk_meter_profile_init(struct rte_mtr_meter_profile *profile, + struct rte_mtr_capabilities *cap, + const uint64_t rate, + const uint64_t burst, + const int flag) +{ + if (!cap->meter_srtcm_rfc2697_n_max) { + return EOPNOTSUPP; + } + + profile->alg = RTE_MTR_SRTCM_RFC2697; + profile->packet_mode = flag; + profile->srtcm_rfc2697.cir = rate; + profile->srtcm_rfc2697.cbs = burst; + profile->srtcm_rfc2697.ebs = burst; + + return 0; +} + #ifdef ALLOW_EXPERIMENTAL_API +static int +netdev_dpdk_rte_mtr_meter_add(struct rte_mtr_meter_profile *profile, + struct netdev *netdev, + uint32_t meter_id, + const uint32_t rate, + const uint32_t burst, + const int flag, + struct rte_mtr_error *error) +{ + struct netdev_dpdk *dev = netdev_dpdk_cast(netdev); + uint32_t meter_profile_id = meter_id; + uint32_t meter_policy_id = meter_id; + struct rte_mtr_capabilities cap; + struct rte_mtr_stats mtr_stats; + struct rte_mtr_params params; + uint64_t stats_mask = 0; + int prox_port_id; + int clear = 0; + int mod; + int ret; + + memset(&mtr_stats, 0, sizeof(struct rte_mtr_stats)); + memset(&cap, 0, sizeof(cap)); + + ovs_mutex_lock(&dev->mutex); + + prox_port_id = dev->flow_transfer_proxy_port_id; + ret = rte_mtr_capabilities_get(prox_port_id, &cap, error); + if (ret) { + goto out; + } + + ret = netdev_dpdk_meter_profile_init(profile, &cap, rate, burst, flag); + if (ret) { + goto out; + } + + /* If can get the meter stats, the meter is offload in the HW. + * So the operate is mod, just update the meter_profile. + * + * If can't get the meter stats, the meter is not offload in the HW. + * So the operate is add, need create the profile, policy, mtr. */ + mod = rte_mtr_stats_read(prox_port_id, meter_id, &mtr_stats, &stats_mask, + clear, error); + ret = rte_mtr_meter_profile_add(prox_port_id, meter_profile_id, profile, + error); + if (!mod || ret) { + goto out; + } + + rte_mtr_policy_drop_red(policy); + ret = rte_mtr_meter_policy_add(prox_port_id, meter_policy_id, &policy, + error); + + if (ret) { + goto out; + } + + memset(¶ms, 0 , sizeof(struct rte_mtr_params)); + params.meter_profile_id = meter_profile_id; + params.meter_policy_id = meter_policy_id; + params.stats_mask = cap.stats_mask; + params.meter_enable = 1; + + ret = rte_mtr_create(prox_port_id, meter_id, ¶ms, 1, error); +out: + ovs_mutex_unlock(&dev->mutex); + return ret; +} + +int +netdev_dpdk_meter_create(struct netdev *netdev, + const uint32_t meter_profile_id, + const uint64_t rate, + const uint64_t burst, + const int flag) +{ + struct rte_mtr_meter_profile profile; + struct rte_mtr_error error; + int ret; + + memset(&profile, 0 , sizeof(struct rte_mtr_meter_profile)); + memset(&error, 0 , sizeof(struct rte_mtr_error)); + + ret = netdev_dpdk_rte_mtr_meter_add(&profile, netdev, meter_profile_id, + rate, burst, flag, &error); + if (!ret) { + if (!VLOG_DROP_DBG(&rl)) { + VLOG_DBG("%s: rte_meter_id %d port_id %d mtr create ", + netdev_get_name(netdev), meter_profile_id, + netdev_dpdk_get_prox_port_id(netdev)); + } + } else { + VLOG_DBG("%s: rte_mtr creation failed: %d (%s).", + netdev_get_name(netdev), error.type, error.message); + } + return ret; +} + +int +netdev_dpdk_meter_del(struct netdev *netdev, + const uint32_t meter_id, + const uint32_t meter_profile_id, + const uint32_t meter_policy_id) +{ + struct netdev_dpdk *dev = netdev_dpdk_cast(netdev); + struct rte_mtr_stats mtr_stats; + struct rte_mtr_error error; + uint64_t stats_mask = 0; + int proxy_port_id; + int clear = 0; + int ret = 0 ; + + memset(&mtr_stats, 0, sizeof(struct rte_mtr_stats)); + memset(&error, 0 , sizeof(struct rte_mtr_error)); + ovs_mutex_lock(&dev->mutex); + + proxy_port_id = dev->flow_transfer_proxy_port_id; + ret = rte_mtr_stats_read(proxy_port_id, meter_id, &mtr_stats, &stats_mask, + clear, &error); + if (ret) { + goto out; + } + + ret = rte_mtr_destroy(proxy_port_id, meter_id, &error); + if (!ret) { + ret = rte_mtr_meter_policy_delete(proxy_port_id, meter_policy_id, + &error); + if (!ret) { + ret = rte_mtr_meter_profile_delete(proxy_port_id, meter_profile_id, + &error); + } + + if (!VLOG_DROP_DBG(&rl)) { + VLOG_DBG("%s: rte_meter_id %d port_id %d mtr delete", + netdev_get_name(netdev), meter_id, + netdev_dpdk_get_prox_port_id(netdev)); + } + } else { + VLOG_DBG("%s: rte_mtr delete mtr_id %d failed: %d (%s).", + netdev_get_name(netdev), meter_id, error.type, error.message); + } + +out: + ovs_mutex_unlock(&dev->mutex); + return ret; +} + +int +netdev_dpdk_meter_get(struct netdev *netdev, + const uint32_t meter_id, + uint64_t *byte_in_count, + uint64_t *packet_in_count) +{ + struct netdev_dpdk *dev = netdev_dpdk_cast(netdev); + struct rte_mtr_stats mtr_stats; + struct rte_mtr_error error; + uint64_t stats_mask = 0; + int clear = 0; + int ret = 0 ; + + memset(&mtr_stats, 0, sizeof(struct rte_mtr_stats)); + memset(&error, 0, sizeof(struct rte_mtr_error)); + + ret = rte_mtr_stats_read(dev->flow_transfer_proxy_port_id, meter_id, + &mtr_stats, &stats_mask, clear, &error); + if (!ret) { + *byte_in_count = mtr_stats.n_bytes[RTE_COLOR_GREEN]; + *packet_in_count = mtr_stats.n_pkts[RTE_COLOR_GREEN]; + if (!VLOG_DROP_DBG(&rl)) { + VLOG_DBG("%s: rte_meter_id %d port_id %d mtr get stats success ", + netdev_get_name(netdev),meter_id, + netdev_dpdk_get_prox_port_id(netdev)); + } + } else { + VLOG_DBG("%s: rte_mtr get mtr_id %d stats failed: %d (%s).", + netdev_get_name(netdev), meter_id, error.type, error.message); + } + return ret; +} + int netdev_dpdk_rte_flow_tunnel_decap_set(struct netdev *netdev, struct rte_flow_tunnel *tunnel, diff --git a/lib/netdev-dpdk.h b/lib/netdev-dpdk.h index 277db156fe06..a4c8ecc3d685 100644 --- a/lib/netdev-dpdk.h +++ b/lib/netdev-dpdk.h @@ -56,6 +56,19 @@ netdev_dpdk_get_prox_port_id(struct netdev *netdev); #ifdef ALLOW_EXPERIMENTAL_API +int netdev_dpdk_meter_create(struct netdev *netdev, + const uint32_t meter_profile_id, + const uint64_t rate, + const uint64_t burst, + const int flag); +int netdev_dpdk_meter_del(struct netdev *netdev, + const uint32_t meter_id, + const uint32_t meter_profile_id, + const uint32_t meter_policy_id); +int netdev_dpdk_meter_get(struct netdev *netdev, + const uint32_t meter_id, + uint64_t *byte_in_count, + uint64_t *packet_in_count); int netdev_dpdk_rte_flow_tunnel_decap_set(struct netdev *, struct rte_flow_tunnel *, struct rte_flow_action **, @@ -81,6 +94,34 @@ int netdev_dpdk_rte_flow_tunnel_item_release(struct netdev *, #else +static inline int +netdev_dpdk_meter_create(struct netdev *netdev OVS_UNUSED, + const uint32_t meter_profile_id OVS_UNUSED, + const uint64_t rate OVS_UNUSED, + const uint64_t burst OVS_UNUSED, + const int flag OVS_UNUSED) +{ + return -1; +} + +static inline int +netdev_dpdk_meter_del(struct netdev *netdev OVS_UNUSED, + const uint32_t meter_id OVS_UNUSED, + const uint32_t meter_profile_id OVS_UNUSED, + const uint32_t meter_policy_id OVS_UNUSED) +{ + return -1; +} + +static inline int +netdev_dpdk_meter_get(struct netdev *netdev OVS_UNUSED, + const uint32_t meter_id OVS_UNUSED, + uint64_t *byte_in_count OVS_UNUSED, + uint64_t *packet_in_count OVS_UNUSED) +{ + return -1; +} + static inline void set_error(struct rte_flow_error *error, enum rte_flow_error_type type) { diff --git a/lib/netdev-offload-dpdk.c b/lib/netdev-offload-dpdk.c index 38f00fd309e6..faa878cb200c 100644 --- a/lib/netdev-offload-dpdk.c +++ b/lib/netdev-offload-dpdk.c @@ -2452,6 +2452,92 @@ netdev_offload_dpdk_flow_del(struct netdev *netdev OVS_UNUSED, return netdev_offload_dpdk_flow_destroy(rte_flow_data); } +static int +netdev_offload_dpdk_meter_set(struct netdev *dev, + ofproto_meter_id meter_id, + struct ofputil_meter_config *config) +{ + uint32_t mid = meter_id.uint32; + uint64_t burst; + uint64_t rate; + int ret = 0; + int flag; + + if (config->n_bands != 1 || config->bands[0].type != OFPMBT13_DROP) { + return 0; + } + + if (!(config->flags & (OFPMF13_KBPS | OFPMF13_PKTPS))) { + return EBADF; + } + + if (config->flags & OFPMF13_KBPS) { + flag = 0; + } else { + flag = 1; + } + + rate = config->bands[0].rate; + burst = config->bands[0].burst_size; + if (flag == 0) { + rate *= 1024 / 8; + burst *= 1024 / 8; + } + + if (!config->bands[0].burst_size) { + burst = rate / 5; + } + ret = netdev_dpdk_meter_create(dev, mid, rate, burst, flag); + if (ret) { + VLOG_ERR("Failed offload the flow to the %s", dev->name); + } + return ret; +} + +static int +netdev_offload_dpdk_meter_del(struct netdev *dev, + ofproto_meter_id meter_id, + struct ofputil_meter_stats *stats) +{ + uint32_t meter_profile_id = meter_id.uint32; + uint32_t meter_policy_id = meter_id.uint32; + int ret = 0; + + ret = netdev_dpdk_meter_del(dev, meter_id.uint32, meter_profile_id, + meter_policy_id); + if (ret) { + VLOG_ERR("Failed del the flow to the %s", dev->name); + return ret; + } + + if (stats) { + memset(stats, 0, sizeof *stats); + } + + return 0; +} + +static int +netdev_offload_dpdk_meter_get(struct netdev *dev, + ofproto_meter_id meter_id, + struct ofputil_meter_stats *stats) +{ + uint64_t byte_in_count = 0; + uint64_t packet_in_count = 0; + int ret = 0; + + ret = netdev_dpdk_meter_get(dev, meter_id.uint32, &byte_in_count, + &packet_in_count); + if (ret) { + VLOG_ERR("Failed get the flow to the %s", dev->name); + return ret; + } + stats->byte_in_count = byte_in_count; + stats->packet_in_count = packet_in_count; + + return 0; +} + static int netdev_offload_dpdk_init_flow_api(struct netdev *netdev) { @@ -2738,6 +2824,9 @@ const struct netdev_flow_api netdev_offload_dpdk = { .type = "dpdk_flow_api", .flow_put = netdev_offload_dpdk_flow_put, .flow_del = netdev_offload_dpdk_flow_del, + .dpdk_meter_set = netdev_offload_dpdk_meter_set, + .dpdk_meter_get = netdev_offload_dpdk_meter_get, + .dpdk_meter_del = netdev_offload_dpdk_meter_del, .init_flow_api = netdev_offload_dpdk_init_flow_api, .uninit_flow_api = netdev_offload_dpdk_uninit_flow_api, .flow_get = netdev_offload_dpdk_flow_get, From patchwork Thu Mar 9 13:02:51 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Horman X-Patchwork-Id: 1754629 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=nBu9hpOu; 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 4PXTrz2gF7z2469 for ; Fri, 10 Mar 2023 00:03:47 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id D17AB4034B; Thu, 9 Mar 2023 13:03:43 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org D17AB4034B 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=nBu9hpOu 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 2V0c6sibotMU; Thu, 9 Mar 2023 13:03:41 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp2.osuosl.org (Postfix) with ESMTPS id 6466540FCE; Thu, 9 Mar 2023 13:03:37 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org 6466540FCE Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id D4A41C009E; Thu, 9 Mar 2023 13:03:32 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@lists.linuxfoundation.org Received: from smtp2.osuosl.org (smtp2.osuosl.org [140.211.166.133]) by lists.linuxfoundation.org (Postfix) with ESMTP id 4DDFBC009B for ; Thu, 9 Mar 2023 13:03:31 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id 24D6640494 for ; Thu, 9 Mar 2023 13:03:31 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org 24D6640494 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 AK3lRQvv1t7j for ; Thu, 9 Mar 2023 13:03:28 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org 30F894034B Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on20700.outbound.protection.outlook.com [IPv6:2a01:111:f400:7ea9::700]) by smtp2.osuosl.org (Postfix) with ESMTPS id 30F894034B for ; Thu, 9 Mar 2023 13:03:28 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=agxoAAXK2X4Tl5igEL2JkBeop1yBg8DpC+iODjFeq04UA/xdjf9tz5HVPIafqV2nwlGuWuLvBTQIcwkNjscULIFCGHtfgl8KDwWkYDyaPiQKyzmU+sXKkBGwzxXdLP8NnyYNJheu7dcnD1cVI01ivW12Fc/Loq57B7g6u/GpD5qiZwWrfQsxQhfOXdZt4osvv+7SzKhxJJeB2HquJVQiPAFoIS/9wuDayaXhhlvexUoDN609Rz7TrK3/SqFqXXY/MHDarDKlMV0nvAteN1z+wmQLuE3HOTIaVCyrfdTUz4VgzIkTgNS5118fq6PyEJqKa4WiqgGR25t41cEP1DMjqQ== 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=rTSCTuMBJOcOUJYgll99vOSrjqseljOOns8oWySs+74=; b=d3ksLnC2KzvXAMXLnZUXrw4KGS5o8ELhQwtOKMD4qxVKu9jYg6hbPzZDbuSHpnFtDPr+QrCwwbpkU+14iGjDEBwH8yGDClyMebwetjabgsUhMlX6cHzBIzQsaDKJ3Uv++AUyitY6tjRe1THqCR69wdKNdykQN6Bh/BF5JUl/V5W9iWc0G+KM73ASFXQ+wuHzCkrRacZTCvPSJOZEGzXGO6XrDpNUAP2IuRPeXkcsgja468ngW5qPye26Xc097qsVVW5KM3538EsHds7oNFFSo/sF/XphLCYIMFmuraXZu4GV/dVmKIj2kWltzrIWa37i4w+FIlsGP5frZFp0nz4MCg== 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=rTSCTuMBJOcOUJYgll99vOSrjqseljOOns8oWySs+74=; b=nBu9hpOuJu56Xc1Sm8RirB/h0FhP75VohCaM6MSKNxJQzkrz5pgwaYg0n2av9n6MJeqyKmmRPoVCAXUs39PNBx2r2pEonGemQCLwoUMJz56+rEHfSdfK4d5BcRymtQnr42crbvatRbnpAvwJ+ib+SFab4CqWZP8RUJygenI6C8I= 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:26 +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:25 +0000 From: Simon Horman To: dev@openvswitch.org Date: Thu, 9 Mar 2023 14:02:51 +0100 Message-Id: <20230309130252.356289-6-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: b57f0e19-3c3d-41cc-9275-08db209eab7b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: M6KIeuY26Hawok8emXsKF71hchzIR80AmoNlVU8G+gheEm8GbJ91aySjUflYtSKehHEMFJxP7yGtJUWOPif9LX5DolUUAnViCwyVDU1NBEiLLhJIgtHMdlW1co4WH0i0yDlbv00SInI+Bmk/WI18xSr1aStjZ6fdMqKTqquXN4n+w8Btl406tYlomLCnyVHxcGaLeE7PKZY1AJ+uIe0osDc16K0NbUKL7ascRIGRjIhxxGodBYg/NEMJ2nA47MQo0ubfYmkGu7DWF/JsVJa70CL5ylPGj7MD4fyCCkboY1j2kzUvpmodAegiGcdkPl8eM21bvR9kgpyFe17ecLmrXBFIhQYakkBAP0uEyoozgTsg4NviGl0ZcCawWH4n91YwKzZbR9FBCXoiAg7xLCHvsTW4hAKzMXUiMPz0Ds1T8I+Le5Fmnxy2wIq1N509uhpyjzdzDPskJAix6spNp9CdWIM6fBSdCZYbST+UB+7JTU7z5AGOIq3Pr6d7r04uQ3LndbQrnPAAghF242TxL38PIj0Bxt905TZYpIQ6Ln2JB8BQqsaC5eBHs7WH2dskvUcDppcfznaJ40IsnU36lRwmL9hfTDyc9W/sLONJrQkKLCTmOffwLQ6I7ctcVS0pX5LkOHGCGvbcsVF9M0yWCMtiAg== 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: MMm6vnab2hwXGRVzY1XAbUY5tkubh/MNivs2bCvR0/NSKeQCiL1u2phjsgA5RPw6ORDPQtYktp+phdPYybspp/med4RS4FoA8S5EIavM/Uqss+fOw3T0BAM8Uu3pn4uZX/RkfrQgWM/ZHM59FdQeqMnTjGStNuxpN6KF9YH7mOJjH9GWSn5TC9Gu69WU+3SkYA+T9dIOtE1IT6zYA1mLdeoG4Ogfed1b4VvHriT1B0Zi2W9oKnJl2ogSvheEu3/dS3OYg4FWS3b+IFkD54Qrm2lgq6HVsCMgor6g11s/kVYhE3zqYzISXqZrnRGqI4mbnr4PMaNli0HAZg/4F8JGpP4woJS0Rbu6r4mrnov+kbzTUOGnzIf2ape1YaV8QapewCC4mNjr7T1Npm5QztqOpCPErGweoSj+mDt7+4R5DoQIMU7mroI8HS5ZQB0tA2oOdVt+dHcdFw7vIIhxSJkPUPvwNblgqFajkl77qS3eCHKUNuhsWLrscKDcncHbmQKWm6XhF8/Mx+O5PzhbaRGeYe8FgzQMYN1rD5+qDFKdc9f+oAxRDhICbbMlYCDSRvz4YliY/b90ODJMnxkcHbll9ZWqA8NpV7fs1Sai8Y6k2+5qVvo6anO4NuTbdqFIonAkw9Y48Z+a8XfaDcDr6uadDnGwXKyXyb1eDR46HDOIM0tEnu5dGFtpzZEsiZyxU4mRCRz5XB4RzWLeewLSlXnfsaXYgS25D1KIVD35Kl+BOEveR+P4ffapMVss+JLCwtNMBRcnBmHaGOVjvWa0VcLgHrCjmE99ahS3b05O5CZgMHmd39QNH69HtmPmvYhRDvFzFuJcaWCTPRt5R4pQj7QwOYcoJChxv2PiHC14E/q5zLJ+hBQ1sPbm4nSc7UmtlkNtQ0/z3c6m/6DVtldGxiIWYANLpGu69jLN/3jrD3Q7xWieN635RbTCqhiqlXVdV7mvqm4d87bciX9o9P8EiKh6g3/HnweJ5pDoDiNAItXaf2+DLhDu4mHHSYvQxsP+G/W9Fo2Vpn0ROHRjFPCZH51qcUXGWkoEMmyzTTQGYXNeuabreZNhLe6K+2cwZ5a38eic2ddZbXPLa2gsrMWFex1Fs9GXV82rtNWovWiFJh2kfIG/gMnspjIZp2xeXnsVNF0nonKEqi9gEQazpgLu4ywDPJY20TZdzop5NR4sOAq38Et6+zBvcMgfIE5niaS8JUkduaZfZ/GWKmzQA+Hhb5nzEiRtLvwlXRJwPuRpinD7yCRTFW7WAw/aMUddN0WWZgspsOXJQ+9/0i0Q25iuGFOMaZnA4f7//6ZpjW/yx5gw5DDewPGX4Gf7+KhisMQfUzu5twnlYzBGGj3X2skKqjPorxupipMgGG/NChgF2QcZj9jLBC3tM5A7CQg62SKdiFIcQNYzJtSXx/t4h+ViT/LBHf/f3rvqPOITikFS5+KNJv0E/7DT3P7+l56d2Nv32bsHzYd6MbBd7B3FqAiaNtOz0sxuO+iys6lBKF2PYuzKL0VM3lCFHm2EjsfA7BwtaTXrrWLcCGbkLndS+Sct1thYgl/8pJooWP0RoW7Bj6qsr4cajotVK5BJQo5o5JVmq/KprWKLpsf5NwQzx1nAWTYMxs1VKZQdJqfsAhUqofCH6up13uyB41Ih49a/y0cP3thrCoZWVSYUV/cRiXuW3UznAA== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: b57f0e19-3c3d-41cc-9275-08db209eab7b 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:25.8230 (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: cgMaTbKBjO58x4aTti3TXX4cSK7/dnulZh702gkIrTjvgmpMvKMn3BcoQcc/mfPgpruupro1EW+/Hn4YBuZP2bMTSvZlEA9TkCsg3EMGfmM= 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 5/6] netdev-dpdk: add meter algorithms 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 Add the meter algorithms. DPDK meter support three algorithms, and OVS also can support these algorithms. Signed-off-by: Peng Zhang Signed-off-by: Jin Liu Signed-off-by: Simon Horman --- lib/netdev-dpdk.c | 58 +++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 51 insertions(+), 7 deletions(-) diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c index cc2d0762226f..2ce95aed2455 100644 --- a/lib/netdev-dpdk.c +++ b/lib/netdev-dpdk.c @@ -5331,6 +5331,50 @@ netdev_dpdk_rte_flow_query_count(struct netdev *netdev, return ret; } +/* RTE_MTR_TRTCM_RFC2697 meter profile */ +static void +netdev_dpdk_meter_profile_rfc2697_init(struct rte_mtr_meter_profile *profile, + const uint64_t rate, + const uint64_t burst, + const int flag) +{ + profile->alg = RTE_MTR_SRTCM_RFC2697; + profile->packet_mode = flag; + profile->srtcm_rfc2697.cir = rate; + profile->srtcm_rfc2697.cbs = burst; + profile->srtcm_rfc2697.ebs = burst; +} + +/* RTE_MTR_TRTCM_RFC2698 meter profile */ +static void +netdev_dpdk_meter_profile_rfc2698_init(struct rte_mtr_meter_profile *profile, + const uint64_t rate, + const uint64_t burst, + const int flag) +{ + profile->alg = RTE_MTR_TRTCM_RFC2698; + profile->packet_mode = flag; + profile->trtcm_rfc2698.cir = rate; + profile->trtcm_rfc2698.cbs = burst; + profile->trtcm_rfc2698.pir = rate; + profile->trtcm_rfc2698.pbs = burst; +} + +/* RTE_MTR_TRTCM_RFC2698 meter profile */ +static void +netdev_dpdk_meter_profile_rfc4115_init(struct rte_mtr_meter_profile *profile, + const uint64_t rate, + const uint64_t burst, + const int flag) +{ + profile->alg = RTE_MTR_TRTCM_RFC4115; + profile->packet_mode = flag; + profile->trtcm_rfc4115.cir = rate; + profile->trtcm_rfc4115.cbs = burst; + profile->trtcm_rfc4115.eir = rate; + profile->trtcm_rfc4115.ebs = burst; +} + static int OVS_UNUSED netdev_dpdk_meter_profile_init(struct rte_mtr_meter_profile *profile, struct rte_mtr_capabilities *cap, @@ -5338,16 +5382,16 @@ netdev_dpdk_meter_profile_init(struct rte_mtr_meter_profile *profile, const uint64_t burst, const int flag) { - if (!cap->meter_srtcm_rfc2697_n_max) { + if (cap->meter_srtcm_rfc2697_n_max) { + netdev_dpdk_meter_profile_rfc2697_init(profile, rate, burst, flag); + } else if (cap->meter_trtcm_rfc2698_n_max) { + netdev_dpdk_meter_profile_rfc2698_init(profile, rate, burst, flag); + } else if (cap->meter_trtcm_rfc4115_n_max) { + netdev_dpdk_meter_profile_rfc4115_init(profile, rate, burst, flag); + } else { return EOPNOTSUPP; } - profile->alg = RTE_MTR_SRTCM_RFC2697; - profile->packet_mode = flag; - profile->srtcm_rfc2697.cir = rate; - profile->srtcm_rfc2697.cbs = burst; - profile->srtcm_rfc2697.ebs = burst; - return 0; } From patchwork Thu Mar 9 13:02:52 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Horman X-Patchwork-Id: 1754630 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::137; helo=smtp4.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=QBGf0hGV; dkim-atps=neutral Received: from smtp4.osuosl.org (smtp4.osuosl.org [IPv6:2605:bc80:3010::137]) (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 4PXTs06X2Dz2469 for ; Fri, 10 Mar 2023 00:03:48 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 6345D4193B; Thu, 9 Mar 2023 13:03:45 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 6345D4193B Authentication-Results: smtp4.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=QBGf0hGV 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 XQSDC6ztsc8e; Thu, 9 Mar 2023 13:03:44 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp4.osuosl.org (Postfix) with ESMTPS id B32664194E; Thu, 9 Mar 2023 13:03:41 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org B32664194E Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 6D5B4C0093; Thu, 9 Mar 2023 13:03:35 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@lists.linuxfoundation.org Received: from smtp2.osuosl.org (smtp2.osuosl.org [140.211.166.133]) by lists.linuxfoundation.org (Postfix) with ESMTP id 1C9C8C009F for ; Thu, 9 Mar 2023 13:03:32 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id 663FE404B1 for ; Thu, 9 Mar 2023 13:03:31 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org 663FE404B1 Authentication-Results: smtp2.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=QBGf0hGV 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 pqNUK4W9hYDu for ; Thu, 9 Mar 2023 13:03:29 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org 4DB6E403E5 Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on20706.outbound.protection.outlook.com [IPv6:2a01:111:f400:7ea9::706]) by smtp2.osuosl.org (Postfix) with ESMTPS id 4DB6E403E5 for ; Thu, 9 Mar 2023 13:03:29 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GqyYfsa40IuvlrJQXjpROC8/jvb/BlI5qCFm9G/DC+2V9++XHwwX3qFShSfdNt2GX1lh7iu7zzPQX+kdcUSJUywLiamyddXGL39chouBUVNPEW1o85ExbG0sMynZ2S71dRLZ8bJmGbLlK6QmttWKjjx+oCaspnpNz43qF0mDdFl19cS5MTq0WiA2aEGRg5DIXqY1TSUfZOpeMIsdQOLVvpXQp3Trg+gBohS2VIE10wAh/NSUw0L7np0QhiY5xKx8KTHna7WnKlLVwJvTfl1cgz902FnqK4AnVY/EpWazQmmwgedmTMfHSQQ8ZYOjYvUVrTTQlK0x9jMql2z7DXOg4A== 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=SG5uqMWlC3J8rkTSi73LkF8kry/9FyYbmwIA8vLdAME=; b=WOdzJS0AjJm2Gjqj/R/k59Q8ickaobeO6/rVLUUlc3rV8OIhtLL+jEm+VqX+a+6cJI9n2eS+IFmLk4EloMiOO78Mo22zl13IqTbEXPay1ljrniY9ZjTnmrAYGclin5apxEc8qocK+PrJkt/vbTt+0uu3rutPaawtKuN5EI0y7h6g1Coto9JhECgxBxWhtPw/hu8+2G6vtVx/rOrtiegLu3ULjvVTj3HyK6+O2qh2EpDbt9H+VqDrtlnbxf+ZHsNsERohZWjJ0HzzlUdKx9a/MPhTUceOwZONokAXkY+7FxCm5lQfv0RIhUopdjhM9kUC8sRTJTwmU8PG1z1AzM35MA== 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=SG5uqMWlC3J8rkTSi73LkF8kry/9FyYbmwIA8vLdAME=; b=QBGf0hGVo/+ePdVLrG0kb9XsuPqlFzM0TexLDiBQWKM+sJuLlzoHnoZ53Gg0Zhobir1CORngNpYfbZnv5TGwvDElOuwEYnwyEDVJFg/Mq+sweh+IctWNBDMvFZMIs+UdwJLqiHzoLZI3pErA4isp2KVSM7hSOe9O6gD4n475FFw= 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:27 +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:27 +0000 From: Simon Horman To: dev@openvswitch.org Date: Thu, 9 Mar 2023 14:02:52 +0100 Message-Id: <20230309130252.356289-7-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: 15ff0960-6cd3-4559-1ae6-08db209eac84 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 5/5EC+NrjEBlI+4n7gYryse1xIm9TeSjUoZQl2Kj5GJp6wrankC7SY51DDNCWxMWxzCiw0Qk8TjcSCSbwpr27hkjnM3Nb9WieH0149EQf8Iwn1NYU7WykgvBUwcnt3Wtdkg0e/zo6iZDiDXSUI8sHfP/H8q+Oo8EcYdBBix4GTfbj7/6P2qO+24wKDKKx8OaGnWyDXA9eZshSTVZjurgDqBoAu0yRTPKJMuSui0Wt3VxbU1HZca6bVcuxTX4eED9s4j/zG1j5NX1MKX6DmJZHEW8PIg6UITHbbFKfTjLAjfr4Lby97iR32MjmzFeARUIzDN85g4kc3+geGsjHYiJdw2/yKdGZC5+Gy8OKAmfvrLcvB89nK7qeyE/JvB5O4ehPii/ZiS5RIu9iytjCikpFJ8/z0lRhIYAAhw7lq3tOlu5510o+oHGn689iWfOjK5P3F8tSLc1zoJfNIU9dUXiXwmDgTfASTBkVTpNz7Anpd2rkPs/WPwKFBwnf6hwBDhIMsITauDKmCFlqvihjoMBs8rSk+mN5Fr/8idAxuxWtUV1q4qHm3ZBoDvHcCobjmF+mOtCPFqzWF7FkAx7Uhtgku4rKQbKQZhvZ2jyOq3ozgifYI0SHhfAhp5KYFJQY7G/bkpNtTjaHyVSAjNCK5rx/g== 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)(2616005)(86362001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: hWm5JUVjhmrt47LqSMBcWrrvlgv9p+eRjUV9bnvqv7CDQuewg2uVgggRE6tiGRutYGwAadcZZn7QM28hf1QUz7/GjtNKHuIhP2GqlaZrkKMCcfjPUplz+9r3gnYz7qY/USSMblSMmSTdm4e26RzCRmLlaIkcdsoaIbGYoAUNy/esBzZ8TSKAPDPGHOLDv808yE7qNDmoiVOaYNhFGm4W6hWkNWVDAv/2Ik0Y8YkHhNbH3YVwFumwzXXEQ1wkJ/E+OVZcK1t14TlkOyn0eaDs7dCY6N9+ypegWB6JZ/H/KfQjkOQpuERfUEeasUmmxvPvJ5uO1FFm0NjJUgMiQMULsKX/OUA/qv10dA5mg7mtnFhzGlXCUXuWvSbtuNGF3v9CS7kBA9j08U8J9g2Ii2pjhGhauOMJI6BSSQAGjGdNtxvWepeG2K/TA1dnp3evuzLpg20PWT/61lqdR76Nf1IwUdcnfIwkLza9YXJRqD9hkHnbXmw7nWaIVCaO2/hbJ7QOlMW+Zre1ZKJBBYesff8BAnqT68406B2COVa7CiHVlzxJa5g6E8VHzXhbYgzrHpO1Rm+EtdPQOPzpnItjJPKL3Y048LriCa4XXTx0OiiM7bFBwAedix5LlFqBtHpemfszV3Hhm9P6T8nUEAh46K1uma3aKdzUMgb4J2J1wsEouVFA3ZpprJNcDPk+NUI8ftE0pqrKdZvM7hvffDx0PX1NQvdsaE6MZOgu0Hsyqpv4cgaWffLPvbIXyX0413ZMM2UXUl3udgpxDVj1pMdn/qezRTZyZO8EouX4sPi5ihtlD0C2ks/1wEImuTIiAXnaVcuxeF/RygflFe+VvHpzdK9m7gcWJaSfFz0mZzcfkGs7Q+ix7ady1xPExk65q0oo/3oHgYl2zdWpO0HZ4YSuBhBKnLAudkuy0SUM65CegDa7e5t2Ynza4OCiEiJGxGcdeYmjCgaW8zfwNg0P27I9Hmz4QeyWXJ3p/pmNTnL5wqDfVMEGPB9Dv90wJc924GN/eflBipsmPL0KeVkBhodYzWZyajZ+Cv+mmBEtYXQVX+wMun2/z9fbfdmhe12XnecHK1c9BnAAcYgw2aVDINJQxHKqTqZyXTDm5GbZuh+jQGwB4iSKbgP0zoOUIlAPMmINiZyDibqymqiY5qRTkyK+favJec8iByGWQDhrHdL/OGH1OfyZunwIJce5N78Xn7OWi++6lAJcPrxjKJewt7EJqf2G30Z4mboF38l+GeVmXJfPKo3KiC2Xku5QZTI32ud/RcYI46VtruAJ1Foj2xwu1ENDTk6kSksyPiwSSh3XPBDeQcuDd9v+wmx9J4RhKzGHns2qFLVVx+WxOb/Mm8AINQXuNtYcvzNgQNcpG9SDzwhumXW9yYVZvGx8IOiw3d0pTlvunPkqqBzQOr/+FD5YTe5CENE936IUWentoQ6qDaQUBB/lsOlREvPcQOMAZyVZ7LH0uDJQUjsQmC1mqgb9rqYVsx2h6Qc+klIQJqK3d2jaqvB7HKQwNE4hX5+zuRn4uTytmSQ0nlX4ajJB+YSN7ZMt5T8Myx05gPi3pi1NbeWB8JHyyAb1x8LDJBsFeBfTmcpLwq3VNHGO1iYU2bx9wywF2rmhAFKB6nkIT0oT8vbc3wG+txyY+ZVFAuPED+h+n0DEvRzqSVUsHbyABKHatISY2w== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 15ff0960-6cd3-4559-1ae6-08db209eac84 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:27.5723 (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: pajDeRcXOXPJcPgrQ+xKI3vGV+5d8bOSUnTdzkd/ZoKw/HK+ZgWEyO1ONdgNJ1bD3mEsGefHjeKF+DoiRO8iIZf3c1aZGRrOMsEURXQmbUw= 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 6/6] netdev-dpdk-offload: Add support for meter action 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 Add support of DPDK meter action logic. Signed-off-by: Peng Zhang Signed-off-by: Jin Liu Signed-off-by: Simon Horman --- lib/netdev-offload-dpdk.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/lib/netdev-offload-dpdk.c b/lib/netdev-offload-dpdk.c index faa878cb200c..ac93c01cbac9 100644 --- a/lib/netdev-offload-dpdk.c +++ b/lib/netdev-offload-dpdk.c @@ -2114,6 +2114,16 @@ parse_clone_actions(struct netdev *netdev, return 0; } +static void OVS_UNUSED +parse_meter_action(struct flow_actions *actions, uint32_t meter_id) +{ + struct rte_flow_action_meter *rte_meter; + + rte_meter = xzalloc(sizeof *rte_meter); + rte_meter->mtr_id = meter_id; + add_flow_action(actions, RTE_FLOW_ACTION_TYPE_METER, rte_meter); +} + static void add_jump_action(struct flow_actions *actions, uint32_t group) { @@ -2220,6 +2230,9 @@ parse_flow_actions(struct netdev *netdev, if (add_tnl_pop_action(netdev, actions, nla)) { return -1; } + } else if (nl_attr_type(nla) == OVS_ACTION_ATTR_METER) { + uint32_t meter_id = nl_attr_get_u32(nla); + parse_meter_action(actions, meter_id); #endif } else { VLOG_DBG_RL(&rl, "Unsupported action type %d", nl_attr_type(nla));