From patchwork Tue May 3 03:08:29 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jianbo Liu X-Patchwork-Id: 1625294 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=Nvidia.com header.i=@Nvidia.com header.a=rsa-sha256 header.s=selector2 header.b=e+5+tkCt; dkim-atps=neutral Authentication-Results: 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=) 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 RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KslKh3Bwqz9sFx for ; Tue, 3 May 2022 13:08:56 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id 4644760FBB; Tue, 3 May 2022 03:08:53 +0000 (UTC) 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 n9ITh32pTAWW; Tue, 3 May 2022 03:08:52 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [IPv6:2605:bc80:3010:104::8cd3:938]) by smtp3.osuosl.org (Postfix) with ESMTPS id 1832760F18; Tue, 3 May 2022 03:08:51 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 24223C007F; Tue, 3 May 2022 03:08:50 +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 BF5F9C002D for ; Tue, 3 May 2022 03:08:47 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id 9F68040123 for ; Tue, 3 May 2022 03:08:47 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Authentication-Results: smtp2.osuosl.org (amavisd-new); dkim=pass (2048-bit key) header.d=nvidia.com 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 ss8D6H0b4LCP for ; Tue, 3 May 2022 03:08:46 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.8.0 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on20606.outbound.protection.outlook.com [IPv6:2a01:111:f400:7e88::606]) by smtp2.osuosl.org (Postfix) with ESMTPS id D652E400D9 for ; Tue, 3 May 2022 03:08:46 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Z3UNbiinMPykTrvwhpFEQjUeuJCsbRKUtsbdfCGJrTq0IU4+bWgWT3A5Qjaa0Tr+4TSa88cueu2c6wyiF32WvrNfWoulbj8U86HYZUYMahXikwTR3WC02oq2Su94cDM/Avvhq6/zIg3+VKsEG4wgdN6umvKAf2DSfQpuSAizI+DrCnMcnFhj62DWhcbVPIxVnx1BW8tU+YaVCzFcdhtnaE84A+pAvdJ9zORfpnO/1kDMBKWXQxAM+y0q50L22vqdZu5I9joEimc90+5QvbAtotJLdseNsCQYwUdRFmjo2q6aDN8zWe5PWwsh3tf39T6uNjqc1MjcXChToBIoine03w== 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=sUp5MTfCC7PatUdDgyawDWuSyprBzW+jmns3tFmEYEo=; b=AoTQ3AjR5AOoRzplAwesMlxKFyhZjiUoo2+18nFkYlbENn/S7rl0JfrYWYbKZ6N3z0l1xvZQTcAmhmIGz1k3ZUztMNZLo+4GEvj+1XniQ6KLP9Nc1vZuuSFnlv1PnnrFlZwitXvgBzMGRjfxlLbUWJlnp2hqn/9HMa6TYLhWH/QJnsC2eGcfCb/n8DxXVSeLzKC9ytumqnVMTRe84vjWGe8wPTiDIYhmYkHss2L8nOcEDFpF+KH36u3dLg5QVbSurMVTFr5PCDHPXRo5zRCF+TKb71k8s6NFkO5WeEvVIFlvBWtJcJT52KCa9tS6li8eQWojJIwIhquz8egmTKOoLw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 12.22.5.236) smtp.rcpttodomain=corigine.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=sUp5MTfCC7PatUdDgyawDWuSyprBzW+jmns3tFmEYEo=; b=e+5+tkCtYK3E7a9atJhB5XorFTcVCFRSdZY0ad64o0OfhderPLB2gisJg6gVGoi7pV7WVMhLux/zDQq18YtwMdsCNiFiq2JBITlyfzc6OMswFNZl6k22HdvVA3dCsC4SJenE4sBkmvdsvFwDCAjtEtBgE2yJEC5lhnRN3rAgZ5ril6RL8HZYg729t+pGasmjo+bC/rDyp8ddFWV3RmnTR/F6OcZzAiaxo4Va2x1PG+5mKjeUbDwd7fYkSypunXKdcBlBE4toK7fVya7y6zoIiUDmA0y6gtu4syYUCe3Jv7WwrhH3FyQsTAPJYVy/FWrp+mtbT25ny5mQv37gxKsnfw== Received: from MW4PR04CA0350.namprd04.prod.outlook.com (2603:10b6:303:8a::25) by IA1PR12MB6330.namprd12.prod.outlook.com (2603:10b6:208:3e4::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.19; Tue, 3 May 2022 03:08:44 +0000 Received: from CO1NAM11FT006.eop-nam11.prod.protection.outlook.com (2603:10b6:303:8a:cafe::90) by MW4PR04CA0350.outlook.office365.com (2603:10b6:303:8a::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5206.12 via Frontend Transport; Tue, 3 May 2022 03:08:44 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 12.22.5.236) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 12.22.5.236 as permitted sender) receiver=protection.outlook.com; client-ip=12.22.5.236; helo=mail.nvidia.com; Received: from mail.nvidia.com (12.22.5.236) by CO1NAM11FT006.mail.protection.outlook.com (10.13.174.246) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.5206.12 via Frontend Transport; Tue, 3 May 2022 03:08:44 +0000 Received: from drhqmail203.nvidia.com (10.126.190.182) by DRHQMAIL109.nvidia.com (10.27.9.19) with Microsoft SMTP Server (TLS) id 15.0.1497.32; Tue, 3 May 2022 03:08:43 +0000 Received: from drhqmail203.nvidia.com (10.126.190.182) by drhqmail203.nvidia.com (10.126.190.182) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.22; Mon, 2 May 2022 20:08:43 -0700 Received: from vdi.nvidia.com (10.127.8.14) by mail.nvidia.com (10.126.190.182) with Microsoft SMTP Server id 15.2.986.22 via Frontend Transport; Mon, 2 May 2022 20:08:41 -0700 To: , , , , Date: Tue, 3 May 2022 03:08:29 +0000 Message-ID: <20220503030836.28783-2-jianbol@nvidia.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20220503030836.28783-1-jianbol@nvidia.com> References: <20220503030836.28783-1-jianbol@nvidia.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a6950668-0213-4c59-67ea-08da2cb23b9c X-MS-TrafficTypeDiagnostic: IA1PR12MB6330:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Km0O4fA8T557Ssg5/ECcvMedlIrNPW/FENKjqXxzkP2YI8AvrTiRQksCZ7gXd2sxnRnfqc4yi38yprP4GAT84vQoghfyxrQYX2Sdrvq9m/zWfi4t/ZFZSibbc7K1lzVng6ZuNCXMYe/8AR2rfyoLT1Z0fxCQyPrEpv/cJA6WUxjKVBkxVnzrTdq4wgw6LSI5bKRv5Zqiqq4HfpGLj7Kd0y2H9HF+hMuw5VFKz8W7oQAiEwUEDhfpxbcKvxegsvqgKbwvwceroHi94UFuuW4Q+wVbJbGrNuV+tj6iALi3pjMVDoVg/779yDr+J9cZjkDehc0biZarOnfkdVF8Y/R1xNilyuwRwmQ77RVraCUCZy/qyRrDJBF+yg5KA2wRuXhKea3l8pL8GacgUrNbcDym1c+HofuBprSeJWK3D6/3v7tfaNoSDYG4zXwub/5oFLa+6BLOBfZI54IoBSswz+R9w9nOznzO3fhiJ/ZY6ZgAI77amebyBlcBHQDWWPyCpUaVgz9ztGm7qyWnknmlIRPtR9P1SZ9j1dif9xcQPX/v/RsJIrxIrqu5q7B5+RiEZl1FYK/UUszwOqXAZorTPX9iZvE9vCCpqYXUGw/DQwPaUbp04crtSBoFScT5m/3WP0ZwVjTaXXqIAuoEa/gUFI/DP2nwZaSXZlU8MX86+E5vWw/ghtG5Q+MFT3Ace6a8jdUSc4E70ckHBbi3GrFFhc8j+w== X-Forefront-Antispam-Report: CIP:12.22.5.236; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:InfoNoRecords; CAT:NONE; SFS:(13230001)(4636009)(36840700001)(46966006)(40470700004)(1076003)(2616005)(508600001)(40460700003)(186003)(70206006)(70586007)(107886003)(36860700001)(8676002)(4326008)(356005)(26005)(7696005)(6666004)(47076005)(426003)(81166007)(336012)(316002)(110136005)(83380400001)(2906002)(86362001)(8936002)(82310400005)(5660300002)(36756003)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 May 2022 03:08:44.1315 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a6950668-0213-4c59-67ea-08da2cb23b9c X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[12.22.5.236]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT006.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB6330 Cc: Jianbo Liu Subject: [ovs-dev] [v4 1/8] netdev-offload: Add 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: , X-Patchwork-Original-From: Jianbo Liu via dev From: Jianbo Liu Reply-To: Jianbo Liu Errors-To: ovs-dev-bounces@openvswitch.org Sender: "dev" Add API to offload meter to HW, and the corresponding functions to call the meter callbacks from all the registered flow API providers. The interfaces are like those related to meter in dpif_class, in order to pass necessary info to HW. Signed-off-by: Jianbo Liu --- lib/netdev-offload-provider.h | 15 ++++++++++++ lib/netdev-offload.c | 45 +++++++++++++++++++++++++++++++++++ lib/netdev-offload.h | 8 +++++++ 3 files changed, 68 insertions(+) diff --git a/lib/netdev-offload-provider.h b/lib/netdev-offload-provider.h index 8ff2de983..2441534c3 100644 --- a/lib/netdev-offload-provider.h +++ b/lib/netdev-offload-provider.h @@ -94,6 +94,21 @@ struct netdev_flow_api { * takes ownership of a packet if errno != EOPNOTSUPP. */ int (*hw_miss_packet_recover)(struct netdev *, struct dp_packet *); + /* Offloads the meter or modifies it if exists in HW + * with the given 'meter_id' and the configuration in 'config'. */ + int (*meter_set)(ofproto_meter_id meter_id, + struct ofputil_meter_config *config); + + /* Queries HW for meter stats with the given 'meter_id'. */ + int (*meter_get)(ofproto_meter_id meter_id, + struct ofputil_meter_stats *stats, + uint16_t max_bands); + + /* Removes meter 'meter_id' from HW. */ + int (*meter_del)(ofproto_meter_id meter_id, + struct ofputil_meter_stats *stats, + uint16_t max_bands); + /* 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 fb108c0d5..41f6e1723 100644 --- a/lib/netdev-offload.c +++ b/lib/netdev-offload.c @@ -195,6 +195,51 @@ netdev_assign_flow_api(struct netdev *netdev) return -1; } +int +meter_offload_set(ofproto_meter_id meter_id, + struct ofputil_meter_config *config) +{ + struct netdev_registered_flow_api *rfa; + + CMAP_FOR_EACH (rfa, cmap_node, &netdev_flow_apis) { + if (rfa->flow_api->meter_set) { + rfa->flow_api->meter_set(meter_id, config); + } + } + + return 0; +} + +int +meter_offload_get(ofproto_meter_id meter_id, + struct ofputil_meter_stats *stats, uint16_t max_bands) +{ + struct netdev_registered_flow_api *rfa; + + CMAP_FOR_EACH (rfa, cmap_node, &netdev_flow_apis) { + if (rfa->flow_api->meter_get) { + rfa->flow_api->meter_get(meter_id, stats, max_bands); + } + } + + return 0; +} + +int +meter_offload_del(ofproto_meter_id meter_id, + struct ofputil_meter_stats *stats, uint16_t max_bands) +{ + struct netdev_registered_flow_api *rfa; + + CMAP_FOR_EACH (rfa, cmap_node, &netdev_flow_apis) { + if (rfa->flow_api->meter_del) { + rfa->flow_api->meter_del(meter_id, stats, max_bands); + } + } + + return 0; +} + int netdev_flow_flush(struct netdev *netdev) { diff --git a/lib/netdev-offload.h b/lib/netdev-offload.h index 8237a85dd..a6d4ba3cb 100644 --- a/lib/netdev-offload.h +++ b/lib/netdev-offload.h @@ -22,6 +22,7 @@ #include "openvswitch/types.h" #include "ovs-rcu.h" #include "ovs-thread.h" +#include "openvswitch/ofp-meter.h" #include "packets.h" #include "flow.h" @@ -158,6 +159,13 @@ int netdev_ports_flow_get(const char *dpif_type, struct match *match, int netdev_ports_get_n_flows(const char *dpif_type, odp_port_t port_no, uint64_t *n_flows); +int meter_offload_set(ofproto_meter_id, + struct ofputil_meter_config *); +int meter_offload_get(ofproto_meter_id, + struct ofputil_meter_stats *, uint16_t); +int meter_offload_del(ofproto_meter_id, + struct ofputil_meter_stats *, uint16_t); + #ifdef __cplusplus } #endif