From patchwork Sun Feb 5 13:55:17 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oz Shlomo X-Patchwork-Id: 13129035 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9640EC636D3 for ; Sun, 5 Feb 2023 13:55:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229734AbjBENzs (ORCPT ); Sun, 5 Feb 2023 08:55:48 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46556 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229732AbjBENzr (ORCPT ); Sun, 5 Feb 2023 08:55:47 -0500 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2040.outbound.protection.outlook.com [40.107.236.40]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EDD1D1E2AA for ; Sun, 5 Feb 2023 05:55:45 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Rl8RHL7uvutGS1NYmGaDDbRiFeGJTTxUGITDY0QSXD6mjLqOWYAAarCyYVP8Ytsuuzc9NcIB8BhVJqzRma9Yv+t0cz9V5nC36nQsc3EGQq8bSpQNESewlUUJZ+1xMsykGYAILIOcVMrVBfNxceFaPxMs/e0DLm5Xqqx8vrWAgSCJlSp5wxxSYsI0hfNhJqHgGLvcrnRzZmzwBJ6z5DA26aXxsONrfRDfaqog1h9iB6C3LonryK/hTwxCBURCje9oq5/zd1yeGzy7Po3Obe9yHZYdaICPw9iLRPt+42QCLY1f6ogdUuAQUt/8KpC406Qnrp221FtW+MUTYQ2GT+jM0A== 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=uYidjSZnwvZk6/CSjod/j+4hD5+c2KmBSY3wGeTDLr8=; b=StTycz/6TM8Rt+waVDHicss1LKwThsT2YCdu2YO1ZEipYSDD7VZ48a79SCq10vdbzCIKvLrv4/5BUFOYjxJWtgI2bazdue7POOKYQQXq6dmdN4B8hjnAutde7oSVRPdDaOB5nHAZ9cPpNra4SJcyy82VEXWvrZIoRZI7a8jBiDpOyaQfF7J6cQbKQfnE83Ly/kIPwRgswZNrZ5z8u7UlVMQ7/4mtxEldwG7UYRa/ctJrvAqpDSlVoSynfavoY8R52kXEAQ658itQ/jCmJaJGAACN2Jm5Nb9F6W1grt7ihNsYCx2PUNCt7Y90IkKA9fok/YOfr2tuOvfCYtY19S/pNQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=uYidjSZnwvZk6/CSjod/j+4hD5+c2KmBSY3wGeTDLr8=; b=jFn2CVJtYpZNqHERbUN3Z/HYStWEvK/i5l/g6GTZpjgQx0WeKb+1+hYiFdZ3GfEDUJClLNxmmbPmqDwQaRsqyHryI+edQhBKH5yej2CpRmxSdDehzwQ2Ar3hv70AhhHCXkf/ZqIGjr2cQ0+WBvl9L37CZAT98ah3t3EHehgaMJTzQB47s6rtwpsWR9bIk5oY/yHATUvgjLGE0EdI2HBAHoAxyioIU5ORbIXb5GSunLdC+1URl7BurmILKa38STqTAxUnTIf5UoG0WPRIaifm/5kJmopMF9hohq87BCNaajPaG3TL82r3EzSAkscbje+xfzQ43IxMqD2DN20LDZs8Lw== Received: from BN9PR03CA0749.namprd03.prod.outlook.com (2603:10b6:408:110::34) by DM4PR12MB6087.namprd12.prod.outlook.com (2603:10b6:8:b1::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.34; Sun, 5 Feb 2023 13:55:44 +0000 Received: from BN8NAM11FT021.eop-nam11.prod.protection.outlook.com (2603:10b6:408:110:cafe::e5) by BN9PR03CA0749.outlook.office365.com (2603:10b6:408:110::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.34 via Frontend Transport; Sun, 5 Feb 2023 13:55:43 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.161) by BN8NAM11FT021.mail.protection.outlook.com (10.13.177.114) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.32 via Frontend Transport; Sun, 5 Feb 2023 13:55:43 +0000 Received: from rnnvmail203.nvidia.com (10.129.68.9) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.36; Sun, 5 Feb 2023 05:55:34 -0800 Received: from rnnvmail203.nvidia.com (10.129.68.9) by rnnvmail203.nvidia.com (10.129.68.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.36; Sun, 5 Feb 2023 05:55:34 -0800 Received: from reg-r-vrt-019-180.mtr.labs.mlnx (10.127.8.11) by mail.nvidia.com (10.129.68.9) with Microsoft SMTP Server id 15.2.986.36 via Frontend Transport; Sun, 5 Feb 2023 05:55:32 -0800 From: Oz Shlomo To: CC: Saeed Mahameed , Roi Dayan , "Jiri Pirko" , Marcelo Ricardo Leitner , "Simon Horman" , Baowen Zheng , Jamal Hadi Salim , Edward Cree , "Oz Shlomo" Subject: [PATCH net-next v2 1/9] net/sched: optimize action stats api calls Date: Sun, 5 Feb 2023 15:55:17 +0200 Message-ID: <20230205135525.27760-2-ozsh@nvidia.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20230205135525.27760-1-ozsh@nvidia.com> References: <20230205135525.27760-1-ozsh@nvidia.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT021:EE_|DM4PR12MB6087:EE_ X-MS-Office365-Filtering-Correlation-Id: 0d0e30ea-73da-47df-4e5a-08db0780acc5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: KnZGBK9vza4h4y3T8EpPZTGwIAHcbOfrXT99gssv71KguZ349x4GFxaiii1QyGeTYDkNU+70HUYHO16uaSDnimRW4RUSsqQ45Yqef6iuWc6VpjVLg1TUyXgSQrrSTV1SP4tjkdnlYRCzmEVk4UDNvnBDO5AV/w6C33CrJnQt0jaFTKR3eTmYKNlYZTPkvmTfVDWpx9n6AeFQQCcyjpNH2JMcOHN+VGjt0KR1HzXYRJPjDiCQIoYiKYT+HmNGq2xmvZXsfuWvSXUJ1McEhQkFtlbL2LxBho9sWZuy2DM4Hw6Bwjxg3VBGtMMMrvt18AC492fOprD25oKPyCgGtXCefzW7l3udbVsFkSBNoWU9NtSczGOS7wPByNeyzxV5NuWzMpudXw1W7L9Rfl0AoicyTeABHyBUXvpiuUB1WkumEPljZumkfECI9Xh0VkAiBT7lc2PaGvhEdtpdUe5VA6yej8ho1IB9s8mh0NMq42RdJ0o7c8/CiOTcc4/fFbTuzUBI2WTVRva1koccZCIDf3UT/9QxGD9i8MsjVblzhr1Uye7hVSig/FS7S/caNp2FhC3eu1dgtcrTrJH+pex2eIsE9yZsm+i8uBZdS2YTPtB5fbdjNxcYggC9+wMLMvK5w7fwOMo1ViaIGoxMLc4Q0svmyjYUc/U/ncJjCGnLD+ETaLNz09wric3492kNG21HJ4GYGTmA3cexHJ+wt3rUIrFarQ== X-Forefront-Antispam-Report: CIP:216.228.117.161;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge2.nvidia.com;CAT:NONE;SFS:(13230025)(4636009)(39860400002)(396003)(136003)(346002)(376002)(451199018)(36840700001)(40470700004)(46966006)(4326008)(6916009)(70586007)(70206006)(8676002)(356005)(82740400003)(107886003)(6666004)(7636003)(186003)(26005)(1076003)(336012)(83380400001)(426003)(86362001)(47076005)(36860700001)(40480700001)(82310400005)(316002)(478600001)(54906003)(40460700003)(36756003)(2616005)(2906002)(8936002)(41300700001)(5660300002);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Feb 2023 13:55:43.6689 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0d0e30ea-73da-47df-4e5a-08db0780acc5 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.161];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT021.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB6087 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org Currently the hw action stats update is called from tcf_exts_hw_stats_update, when a tc filter is dumped, and from tcf_action_copy_stats, when a hw action is dumped. However, the tcf_action_copy_stats is also called from tcf_action_dump. As such, the hw action stats update cb is called 3 times for every tc flower filter dump. Move the tc action hw stats update from tcf_action_copy_stats to tcf_dump_walker to update the hw action stats when tc action is dumped. Signed-off-by: Oz Shlomo Reviewed-by: Simon Horman --- net/sched/act_api.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/net/sched/act_api.c b/net/sched/act_api.c index cd09ef49df22..f4fa6d7340f8 100644 --- a/net/sched/act_api.c +++ b/net/sched/act_api.c @@ -539,6 +539,8 @@ static int tcf_dump_walker(struct tcf_idrinfo *idrinfo, struct sk_buff *skb, (unsigned long)p->tcfa_tm.lastuse)) continue; + tcf_action_update_hw_stats(p); + nest = nla_nest_start_noflag(skb, n_i); if (!nest) { index--; @@ -1539,9 +1541,6 @@ int tcf_action_copy_stats(struct sk_buff *skb, struct tc_action *p, if (p == NULL) goto errout; - /* update hw stats for this action */ - tcf_action_update_hw_stats(p); - /* compat_mode being true specifies a call that is supposed * to add additional backward compatibility statistic TLVs. */ From patchwork Sun Feb 5 13:55:18 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oz Shlomo X-Patchwork-Id: 13129034 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 49752C636CC for ; Sun, 5 Feb 2023 13:55:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229733AbjBENzs (ORCPT ); Sun, 5 Feb 2023 08:55:48 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46558 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229581AbjBENzr (ORCPT ); Sun, 5 Feb 2023 08:55:47 -0500 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2046.outbound.protection.outlook.com [40.107.223.46]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 37D501E2BC for ; Sun, 5 Feb 2023 05:55:46 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eNOeWhxvNuXW+XChI2+7Dlvpec4T+x8NtJlih5Y5pZ2B5SvqIKhNuoaTzM04tl0ec44OlMjR7/BpRFIbdfAT2KCzmczZjAefqbHgwTFgjsQJxNz9g1nwJxapZ20ANznpSYia+CE3hjGAuOFLSi4i+4AafFw6S6DtZmi5/oqa8TLdMtdIr5vnYGcAVR3hLD6J8KD8ucsAi2yFrzi6l46ztfK/mAP7i2iH1vkXIFnIyD2ZTaKQshY3xO/3QqI/rFIj8aH2B0Ufcu8IGTjPGLVbjBFgwavSeuasTC5WaTBixyigXantg4ihwJ4Z3mmiYHSSlVEPG89maVgU9DVyEXh/7g== 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=kjOoDS0OBM1oMuck7yvRmu/UAhKFur17MBXZ5OTCYcw=; b=Ua0boJM3zoAKTv8NjD8kYJKEwfWMAeTfUG17S7UEi1zMpNSX3a+X0fplI/eKyKCSK2tAjoqWltLTVnm5eEFGcuKPyZxhmsYXrdzBJYe+zpxsg2eOczVUic8eu1LWzEshqZmC7NMk7xzQ1/FIv9W+/nBbAheIj31vcrNs4IIOsLgYGhDRgxn1MRokHZGa1NCG/WOtjZbbz+BeJSy74TpYcqOI04M73wF/FlqiAcdbQM62vYBOKmKtNHsHRDs3ReLo6i+0HTt6eNbUHCexzTfOIG1JeEU86ZzjAsrYvihgtxYk0lmznWawB0AKmEKCpRsS21YJd+2Y4m1Df2x5gG+IRw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.160) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=kjOoDS0OBM1oMuck7yvRmu/UAhKFur17MBXZ5OTCYcw=; b=ViDzgDhiyzeae14AJwLnCzCo2ibxVBHj8r8NVOFoU5g99vUxLVhLkdiBasU2H5+IvmD37XUzI/HPHmQZ7DnFHIQeJ6EitCvNvYqqgEegLVievYQDn4uOTMjOZY7Qs7MnfuSACkUmxTKcwV7re/PLy/YKkhXxIAmbQjLJUxaDUJx3RjvDqGIDA8bM8i6u1o0VXjHvt3S5h+JOYh8lEDIXNY6cyW4NK/hv5QcGmAPvu0gEAzkNGOdafBMk6uBrTgsAqlTuYAQUWCnmr1CMz4eNwXTchJUBjMDWflL9NWUqi72GgDzNmPTGI5f0PnP8YAW7cowyZm22nf+8jc0/BTQ7CQ== Received: from DM6PR08CA0012.namprd08.prod.outlook.com (2603:10b6:5:80::25) by IA0PR12MB7675.namprd12.prod.outlook.com (2603:10b6:208:433::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.27; Sun, 5 Feb 2023 13:55:43 +0000 Received: from DM6NAM11FT104.eop-nam11.prod.protection.outlook.com (2603:10b6:5:80:cafe::18) by DM6PR08CA0012.outlook.office365.com (2603:10b6:5:80::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.34 via Frontend Transport; Sun, 5 Feb 2023 13:55:42 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.160) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.160 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.160; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.160) by DM6NAM11FT104.mail.protection.outlook.com (10.13.173.232) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.34 via Frontend Transport; Sun, 5 Feb 2023 13:55:42 +0000 Received: from rnnvmail203.nvidia.com (10.129.68.9) by mail.nvidia.com (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.36; Sun, 5 Feb 2023 05:55:38 -0800 Received: from rnnvmail203.nvidia.com (10.129.68.9) by rnnvmail203.nvidia.com (10.129.68.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.36; Sun, 5 Feb 2023 05:55:37 -0800 Received: from reg-r-vrt-019-180.mtr.labs.mlnx (10.127.8.11) by mail.nvidia.com (10.129.68.9) with Microsoft SMTP Server id 15.2.986.36 via Frontend Transport; Sun, 5 Feb 2023 05:55:35 -0800 From: Oz Shlomo To: CC: Saeed Mahameed , Roi Dayan , "Jiri Pirko" , Marcelo Ricardo Leitner , "Simon Horman" , Baowen Zheng , Jamal Hadi Salim , Edward Cree , "Oz Shlomo" Subject: [PATCH net-next v2 2/9] net/sched: act_pedit, setup offload action for action stats query Date: Sun, 5 Feb 2023 15:55:18 +0200 Message-ID: <20230205135525.27760-3-ozsh@nvidia.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20230205135525.27760-1-ozsh@nvidia.com> References: <20230205135525.27760-1-ozsh@nvidia.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6NAM11FT104:EE_|IA0PR12MB7675:EE_ X-MS-Office365-Filtering-Correlation-Id: a9a7c31f-07d3-4ace-0b05-08db0780ac26 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Tc2GqWje+vb9Gg8Lh798MnTNqtNCvolT4EciTLvCw37S3P9i2MotKDQJ2y2NueQaupBbzBIk2WG8P80+1C2PzdCkVFNZA0aEJn3IP2lhZBYVM3lv1b8+68oM65l/5ZhsYsedNspIFbPPKbOJ3g+EkI2iJsCisntzOy2YIOnVZVigfZmMffbO9XKKc4pD4d9dC1mD6+mGJ3c2oadcvgqOGOIepHbxEoR6sWK1tTPpeCi2aQhLJhnxNJmlJv0US8sQYjSEy64HfSN6ExeE/7or7aqupxPpHztP8ygSG1KVnm6T/gceJqL72nRdm0QDGho9MwSi6BuE+pIRJEyalym1SvEcu6aYt4jtjRO3x1/8Vt8skVJ6wO4hB19yrhFGoNCAkZkopXVOR2kR3WzltNkBrSS9rVbTPRK2/25e8oyNUm+DIlzSH4uUPYtoA/76e+RW9spojD6OsxzLlv24x+gUReDAGnDJrJAQc+TgEc0LaH96wp4c1ECj/NkUoeFaHvZnrHoG60UScaz1mrSU7SJgt+AIjxtQ4KnJbMbEN4q2gOgUbF1lxeTPwQE/j9LNhwWEpTpLrbzUWy/RpCW+t0Gr0iwgotgAw0ryYfiemYZEtBxkwRKECeFXVEe+qAvOQEDHBFt2qzU60D5XcAu6q6gm7guSmXX4YmkxwbXarCOlT++cn6BRaxu96ZIw+j6IRFESnq4rJilW9A3e6yntA5OW4g== X-Forefront-Antispam-Report: CIP:216.228.117.160;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge1.nvidia.com;CAT:NONE;SFS:(13230025)(4636009)(136003)(396003)(39860400002)(346002)(376002)(451199018)(36840700001)(40470700004)(46966006)(186003)(82310400005)(478600001)(7636003)(2906002)(26005)(6666004)(1076003)(70586007)(8676002)(8936002)(41300700001)(107886003)(6916009)(4326008)(70206006)(5660300002)(83380400001)(316002)(426003)(36756003)(336012)(82740400003)(356005)(54906003)(40480700001)(86362001)(2616005)(40460700003)(47076005)(36860700001);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Feb 2023 13:55:42.6877 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a9a7c31f-07d3-4ace-0b05-08db0780ac26 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.160];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: DM6NAM11FT104.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR12MB7675 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org A single tc pedit action may be translated to multiple flow_offload actions. Offload only actions that translate to a single pedit command value. Signed-off-by: Oz Shlomo --- Change log: V1 -> V2: - Add extack message on error - Assign the flow action id outside the for loop. Ensure the rest of the pedit actions follow the assigned id. --- net/sched/act_pedit.c | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/net/sched/act_pedit.c b/net/sched/act_pedit.c index c42fcc47dd6d..dae88e205cb1 100644 --- a/net/sched/act_pedit.c +++ b/net/sched/act_pedit.c @@ -545,7 +545,33 @@ static int tcf_pedit_offload_act_setup(struct tc_action *act, void *entry_data, } *index_inc = k; } else { - return -EOPNOTSUPP; + struct flow_offload_action *fl_action = entry_data; + u32 cmd = tcf_pedit_cmd(act, 0); + u32 last_cmd; + int k; + + switch (cmd) { + case TCA_PEDIT_KEY_EX_CMD_SET: + fl_action->id = FLOW_ACTION_MANGLE; + break; + case TCA_PEDIT_KEY_EX_CMD_ADD: + fl_action->id = FLOW_ACTION_ADD; + break; + default: + NL_SET_ERR_MSG_MOD(extack, "Unsupported pedit command offload"); + return -EOPNOTSUPP; + } + + for (k = 1; k < tcf_pedit_nkeys(act); k++) { + cmd = tcf_pedit_cmd(act, k); + + if (cmd != last_cmd) { + NL_SET_ERR_MSG_MOD(extack, "Unsupported pedit command offload"); + return -EOPNOTSUPP; + } + + last_cmd = cmd; + } } return 0; From patchwork Sun Feb 5 13:55:19 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oz Shlomo X-Patchwork-Id: 13129036 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D8720C636CD for ; Sun, 5 Feb 2023 13:55:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229737AbjBENzv (ORCPT ); Sun, 5 Feb 2023 08:55:51 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46576 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229736AbjBENzt (ORCPT ); Sun, 5 Feb 2023 08:55:49 -0500 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2053.outbound.protection.outlook.com [40.107.220.53]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D07411E29B for ; Sun, 5 Feb 2023 05:55:47 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=i1qo9rqCaLZkD8W5T7ZpmEV1bkmWrbq8c3tceE64WMNRw08wlppz2aSAldVFgt8JNx1VW88R9bwLsxwSCE+iPpvIbJZf0noPGhmg43yEfAmdkSOZpVKGKsAA4KJXNlLr0ms4gD+kdQLyEHyJpoafUgeBgOu5xZwaOedtsxof0Ul9cRIHCjerapgR+Qf7uM8Tz6GjG7a3zhDG4NzMbw68NkVI9znF6l2YRSoGA4TxdSYoFuVxW9OnYPrPuLkROf3PlBMo/hnYPmIARwMJkHAiC4WZyYd92rOrr7L0vX2kfuNd+OX7qub78zGan0/QchIvEbHPfUIuwlLIiqNsheUP3g== 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=QRKUjVuKtymUxy4OKbYSD1KuqGcgNQTGUiqtVq3Ote8=; b=XcJDZ8REB5GR7iQ9HPPQ3tAC23iVkW8TfHHRIpjeJ5MOdtajGp1GK5qRO5s01uqr0ZXF/nDsWb+5e+MaOJRxZ+L+7NavbCkWd3HVtv37KyLUAqsc3T+WCGg3yU/DdJB7JQ8BxkhWowChq54JgMS7IB3NRGLehXcYdrNrPHezZuvAFeVeDPkPcwMHEiL2/fhQYw6Ak0lZ0c5Ro1P+YteOz1XHAUXKu3u0+eRDjB1ypUWKv82vXjjw2B0PEesDRKOdSZdkGAZ/nBA8NaopWiV+FAjujwkpyaQk76G6gFxDh248AijD4BX0oxQW+olaZyBmRNQY4b2p3tkFc/C3+/MLcw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.160) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=QRKUjVuKtymUxy4OKbYSD1KuqGcgNQTGUiqtVq3Ote8=; b=eVLoRMbC5zNK6c9W3Z8H3tHBDgQmI3hmVb0e9HRAW1a5X3sEnT3Td5jecFDxBADQjGf3Rven4WKK0ytV5uBFoz7zYALLGZDMEu0Ob1MW0nJ/NlRBf4wiDphfrniBQ3bdiPMlD0IPWCO2oRb48hirQf4ExO9Ebxt2nGpP4AK0HuRU/WxFQdH/IUCMy4maiEjjCq3Su5fz9PjrUUuflci/aCTGagKcg4JYvlX8lPZ2MG/1a5fKfR7HrpvBrfuWUyTzYQp5xvPzzfo51vnfBCeG8YvCMw6RgjxbsiPx6+H4N+TP4Me9BMIz3yRNvj7Rbl/PGAa8K+h1izznVLCsyjEORw== Received: from DM6PR08CA0010.namprd08.prod.outlook.com (2603:10b6:5:80::23) by SA3PR12MB7903.namprd12.prod.outlook.com (2603:10b6:806:307::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.32; Sun, 5 Feb 2023 13:55:45 +0000 Received: from DM6NAM11FT104.eop-nam11.prod.protection.outlook.com (2603:10b6:5:80:cafe::d6) by DM6PR08CA0010.outlook.office365.com (2603:10b6:5:80::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.34 via Frontend Transport; Sun, 5 Feb 2023 13:55:45 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.160) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.160 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.160; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.160) by DM6NAM11FT104.mail.protection.outlook.com (10.13.173.232) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.34 via Frontend Transport; Sun, 5 Feb 2023 13:55:45 +0000 Received: from rnnvmail203.nvidia.com (10.129.68.9) by mail.nvidia.com (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.36; Sun, 5 Feb 2023 05:55:41 -0800 Received: from rnnvmail203.nvidia.com (10.129.68.9) by rnnvmail203.nvidia.com (10.129.68.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.36; Sun, 5 Feb 2023 05:55:40 -0800 Received: from reg-r-vrt-019-180.mtr.labs.mlnx (10.127.8.11) by mail.nvidia.com (10.129.68.9) with Microsoft SMTP Server id 15.2.986.36 via Frontend Transport; Sun, 5 Feb 2023 05:55:38 -0800 From: Oz Shlomo To: CC: Saeed Mahameed , Roi Dayan , "Jiri Pirko" , Marcelo Ricardo Leitner , "Simon Horman" , Baowen Zheng , Jamal Hadi Salim , Edward Cree , "Oz Shlomo" Subject: [PATCH net-next v2 3/9] net/sched: pass flow_stats instead of multiple stats args Date: Sun, 5 Feb 2023 15:55:19 +0200 Message-ID: <20230205135525.27760-4-ozsh@nvidia.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20230205135525.27760-1-ozsh@nvidia.com> References: <20230205135525.27760-1-ozsh@nvidia.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6NAM11FT104:EE_|SA3PR12MB7903:EE_ X-MS-Office365-Filtering-Correlation-Id: 850f1859-86ea-4265-00ec-08db0780adeb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Mmb7HmBKy4r+DtPaMjzv7Y1QOITaQLEgt8PjDzuu85Mk62KFF8IT1UJFPB1/9OJYdTs9dRh4jgLSfj0SfbnVsmyg8bIxDQLokKx897hnLvxNVQLR32tOIFh1ZZu4nPZR6xbjFma25MjeXlxin9rTlalFmJq9U2fFAoXbV7K/GNO8m46t6PdFGTES3orSVpj6Qbsk2FnJX0oO8PsS9Lm98FzAfPofWglGpt/Q0bqDna1uXlRDrUDRS8Np9J8PFvXr1Mt7T2iPzdHbR4uhY1d2nbECvk7ZbB6DurRpeP/BjebhLm/HbKyWYKf8bx8QocTAASQn5AfNKOCqo5jZEGCLbplt1XYeGVlPQ8JdhOd/yJQwnvEywuZ1htkj0U8QIMLCtbY8Vc35ayTClUTM9TE2058J18aUCuBfTklaTni7DciP/s8UT8ZG93cO3tbWaPLn6l2GoZtzsSR7YQ2dBTr29RTIQz8lW3bI/McA5nNpF9K25GeG04NTeD8XhwtQNEs5ofr5dWrOUMRxwEuG2nK9TiXnY6Lwht2SljKKcV6vCYAIlDaFjz3BgYhNeO41mOGUjKjjNjjdC9Ugbhi2E13PHzlgG/NoBDgODBoLfzfhIsNIjVg2Gc/NnP3JjnMRSKE6iESwqKFW8bxlPr5bnV73Ot1KTEvoilk7LhbO+/hLkDB6mARUe5MAcvKKtPO1WE+GP8TPqKRjg29DXP1BVXt7Eg== X-Forefront-Antispam-Report: CIP:216.228.117.160;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge1.nvidia.com;CAT:NONE;SFS:(13230025)(4636009)(376002)(396003)(136003)(39860400002)(346002)(451199018)(36840700001)(46966006)(40470700004)(2906002)(6916009)(70586007)(336012)(8676002)(70206006)(4326008)(2616005)(47076005)(426003)(86362001)(36756003)(82310400005)(36860700001)(83380400001)(8936002)(40480700001)(41300700001)(107886003)(6666004)(186003)(54906003)(82740400003)(1076003)(478600001)(26005)(316002)(40460700003)(356005)(5660300002)(7636003);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Feb 2023 13:55:45.6562 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 850f1859-86ea-4265-00ec-08db0780adeb X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.160];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: DM6NAM11FT104.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR12MB7903 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org Instead of passing 6 stats related args, pass the flow_stats. Signed-off-by: Oz Shlomo Reviewed-by: Simon Horman --- include/net/pkt_cls.h | 11 +++++------ net/sched/cls_flower.c | 7 +------ net/sched/cls_matchall.c | 6 +----- 3 files changed, 7 insertions(+), 17 deletions(-) diff --git a/include/net/pkt_cls.h b/include/net/pkt_cls.h index 4cabb32a2ad9..be21764a3b34 100644 --- a/include/net/pkt_cls.h +++ b/include/net/pkt_cls.h @@ -294,8 +294,7 @@ static inline void tcf_exts_put_net(struct tcf_exts *exts) static inline void tcf_exts_hw_stats_update(const struct tcf_exts *exts, - u64 bytes, u64 packets, u64 drops, u64 lastuse, - u8 used_hw_stats, bool used_hw_stats_valid) + struct flow_stats *stats) { #ifdef CONFIG_NET_CLS_ACT int i; @@ -306,12 +305,12 @@ static inline void tcf_exts_put_net(struct tcf_exts *exts) /* if stats from hw, just skip */ if (tcf_action_update_hw_stats(a)) { preempt_disable(); - tcf_action_stats_update(a, bytes, packets, drops, - lastuse, true); + tcf_action_stats_update(a, stats->bytes, stats->pkts, stats->drops, + stats->lastused, true); preempt_enable(); - a->used_hw_stats = used_hw_stats; - a->used_hw_stats_valid = used_hw_stats_valid; + a->used_hw_stats = stats->used_hw_stats; + a->used_hw_stats_valid = stats->used_hw_stats_valid; } } #endif diff --git a/net/sched/cls_flower.c b/net/sched/cls_flower.c index 0b15698b3531..cb04739a13ce 100644 --- a/net/sched/cls_flower.c +++ b/net/sched/cls_flower.c @@ -502,12 +502,7 @@ static void fl_hw_update_stats(struct tcf_proto *tp, struct cls_fl_filter *f, tc_setup_cb_call(block, TC_SETUP_CLSFLOWER, &cls_flower, false, rtnl_held); - tcf_exts_hw_stats_update(&f->exts, cls_flower.stats.bytes, - cls_flower.stats.pkts, - cls_flower.stats.drops, - cls_flower.stats.lastused, - cls_flower.stats.used_hw_stats, - cls_flower.stats.used_hw_stats_valid); + tcf_exts_hw_stats_update(&f->exts, &cls_flower.stats); } static void __fl_put(struct cls_fl_filter *f) diff --git a/net/sched/cls_matchall.c b/net/sched/cls_matchall.c index 705f63da2c21..b3883d3d4dbd 100644 --- a/net/sched/cls_matchall.c +++ b/net/sched/cls_matchall.c @@ -331,11 +331,7 @@ static void mall_stats_hw_filter(struct tcf_proto *tp, tc_setup_cb_call(block, TC_SETUP_CLSMATCHALL, &cls_mall, false, true); - tcf_exts_hw_stats_update(&head->exts, cls_mall.stats.bytes, - cls_mall.stats.pkts, cls_mall.stats.drops, - cls_mall.stats.lastused, - cls_mall.stats.used_hw_stats, - cls_mall.stats.used_hw_stats_valid); + tcf_exts_hw_stats_update(&head->exts, &cls_mall.stats); } static int mall_dump(struct net *net, struct tcf_proto *tp, void *fh, From patchwork Sun Feb 5 13:55:20 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oz Shlomo X-Patchwork-Id: 13129037 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id C2258C636CD for ; Sun, 5 Feb 2023 13:55:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229728AbjBENz4 (ORCPT ); Sun, 5 Feb 2023 08:55:56 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46662 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229738AbjBENzx (ORCPT ); Sun, 5 Feb 2023 08:55:53 -0500 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2086.outbound.protection.outlook.com [40.107.243.86]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CDFB91E5D1 for ; Sun, 5 Feb 2023 05:55:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=k4Z3zrKw9S25DEiAyBAgb0jYZUS7tshS2V9VWeMn4BFdelxknIizYXgGhnVdUPORkWvPuxQQY+9UTPAKBZJ1xV2tqpGZF8Ehus5whyKFok9hVEYnV4oHWRbfZC9Fh42SK25piZP3g27V1EoBFn8whXPyFVXp9I8vSaRtvq8gQ0SdQi072PvHnyblXtXcFGjNPKDTDWmLsOzYie0HXAFHfvs4Ww4xGuSP3R1BHpKv83mXZs32MMyTn9GTVgIA3g9DN4rdir2dEncI5GG/Hyc5WSI/xyJs0dGKiwzBw1wY2r0jCOR+RDmrZmba9iDCjDEdDAAeEkrSfX3e7NvGNzZWRg== 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=x+7YDjkoSoU+0wJnvoF8VMfGYxl7O4Sl4bRE4vm0nK8=; b=D6tFJ+401TkYoqhTAhvGFsbmjSSUCC8crdkaBVdWIe9/Ou/MK+mAFaO+nZ06wrEKfiQPG8ArfiAwvZ+PzJZ/wiFyLpSdTvEdhn+QmaCTkay3u8+RKiljiOpFkfqCbAu8msllMc6GZiFxx+MuNgnAPaViCDm+fUb2rogT8ynPqMTPFz8j+PInaV+UC53uk1XM3xfVB4C8+dpeMbxJAJeOIlVMqy8X1Hwk/FJDeYfwTFX8L6toDHUcYHHuMQ52/mug/gTB/PVpGeuVpLLIrp7iBMqH0fbZS/RznhQEl30+PYNopahObQfotI2kskSpiIvdrZmJqjZhRrg6OcO3iJL3BA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.160) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=x+7YDjkoSoU+0wJnvoF8VMfGYxl7O4Sl4bRE4vm0nK8=; b=P1nEjYMePPS1/2QTbB2bIAxxNSFvhzvmHhPievt2cfMnVc8mFTaUR1dNlTJTCigKYl5co14s6eBxWlH3MOTMvBEeR5jT6nqHOH4hIxX9ApV2U7TD0IU99IEXE4zZ5+XMLKitQXVMnC+Kfzvt+DIfGYQ40ABTD2cFwM3vkBdMrx6qWMpRmRGlbPdCM9qCcLFy6byatbJIEeO8pUFlFr5OrbSCpLp8DHDtLylcxPng7WE9b7cT1/2KucOl2jGayH5IQRdHAe93czsSfpD0JZS35/82aoBF8qT7DT9C+y7JMVy604NfBJswv/AJhoJEFgQUIjlkyVckTFTPJOz0NfZeVg== Received: from DM6PR08CA0015.namprd08.prod.outlook.com (2603:10b6:5:80::28) by DM4PR12MB6662.namprd12.prod.outlook.com (2603:10b6:8:bb::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.29; Sun, 5 Feb 2023 13:55:48 +0000 Received: from DM6NAM11FT104.eop-nam11.prod.protection.outlook.com (2603:10b6:5:80:cafe::99) by DM6PR08CA0015.outlook.office365.com (2603:10b6:5:80::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.34 via Frontend Transport; Sun, 5 Feb 2023 13:55:48 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.160) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.160 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.160; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.160) by DM6NAM11FT104.mail.protection.outlook.com (10.13.173.232) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.34 via Frontend Transport; Sun, 5 Feb 2023 13:55:48 +0000 Received: from rnnvmail203.nvidia.com (10.129.68.9) by mail.nvidia.com (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.36; Sun, 5 Feb 2023 05:55:44 -0800 Received: from rnnvmail203.nvidia.com (10.129.68.9) by rnnvmail203.nvidia.com (10.129.68.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.36; Sun, 5 Feb 2023 05:55:43 -0800 Received: from reg-r-vrt-019-180.mtr.labs.mlnx (10.127.8.11) by mail.nvidia.com (10.129.68.9) with Microsoft SMTP Server id 15.2.986.36 via Frontend Transport; Sun, 5 Feb 2023 05:55:41 -0800 From: Oz Shlomo To: CC: Saeed Mahameed , Roi Dayan , "Jiri Pirko" , Marcelo Ricardo Leitner , "Simon Horman" , Baowen Zheng , Jamal Hadi Salim , Edward Cree , "Oz Shlomo" Subject: [PATCH net-next v2 4/9] net/sched: introduce flow_offload action cookie Date: Sun, 5 Feb 2023 15:55:20 +0200 Message-ID: <20230205135525.27760-5-ozsh@nvidia.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20230205135525.27760-1-ozsh@nvidia.com> References: <20230205135525.27760-1-ozsh@nvidia.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6NAM11FT104:EE_|DM4PR12MB6662:EE_ X-MS-Office365-Filtering-Correlation-Id: 3d55e264-6cd8-4dde-c194-08db0780af57 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: WSnV5YBMkVixLzOOmnxzFObpfA2iaQ/FiJsoFfYpSm/HjUY3GQAf/j4ma5o58HV11DCSpxJbfgb2MfgX4rnq8zbYCMaknjdliO6eNucd6iPVCBee1ANj77A98L4ITqm7eT7zg0hJ78B+diobVjnMbOjxWEHtjMd6mHbm+WbdttKvkaNBrK2BMN2FVmGxIj2XhZZ6U86ApFnEb1DHdt13Od+BYZMgWJ5YOilET6eFoUIpLgLidEIoejDu4XLTOf2mSblkUP6HOMEUIPVLeHsXHRFGNiq8NLQla767J+0utdy20BHKjiuzPMFNblxgi+/ksn2M/T75MAHeYDQRamqEFijHgy5UR4PHSxr1noIp//z4cDxYTkrLb+Dj5NTKhmK91OnGsiapbI8xvtCyjXUqP50WprNW0dBCXxWxD4qsIwuwCl2eBolneyDq1wh78780xTa4T3ICSmIPeMUNvBt1x8i9rawy3f9ln9WqXRxQm1K6uAAEhxK2Rjtxz/DpqIWdjQfeKBTMQWTpktdDFTU+pZaV2d8x2PSx5jJBvzZC0QMTIWWkD9c1cHrKJkyFOHynYT5LM/NiI+IOpIxI9U38oc7oGeX5QvDbIUx3+B+QaL/jmxBmtOSIIst6s+03bVc/hEo7JTw5zN1/vcDF2MdsC5f2bt3TFHiZvousfzZ4c3xoq8wXmfabSZAtogsX8MzF+lStbBrQ+XYFIZ8D8DmAuw== X-Forefront-Antispam-Report: CIP:216.228.117.160;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge1.nvidia.com;CAT:NONE;SFS:(13230025)(4636009)(396003)(136003)(39860400002)(376002)(346002)(451199018)(46966006)(40470700004)(36840700001)(70206006)(70586007)(186003)(26005)(426003)(47076005)(336012)(6916009)(4326008)(8676002)(1076003)(8936002)(40460700003)(5660300002)(40480700001)(83380400001)(41300700001)(36756003)(6666004)(107886003)(2616005)(2906002)(82310400005)(7636003)(86362001)(82740400003)(356005)(478600001)(54906003)(316002)(36860700001);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Feb 2023 13:55:48.0467 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3d55e264-6cd8-4dde-c194-08db0780af57 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.160];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: DM6NAM11FT104.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB6662 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org Currently a hardware action is uniquely identified by the tuple. However, the id is set by the flow_act_setup callback and tc core cannot enforce this, and it is possible that a future change could break this. In addition, are not unique across network namespaces. Uniquely identify the action by setting an action cookie by the tc core. Use the unique action cookie to query the action's hardware stats. Signed-off-by: Oz Shlomo Reviewed-by: Simon Horman --- include/net/flow_offload.h | 2 ++ net/sched/act_api.c | 1 + net/sched/cls_api.c | 1 + 3 files changed, 4 insertions(+) diff --git a/include/net/flow_offload.h b/include/net/flow_offload.h index 0400a0ac8a29..d177bf5f0e1a 100644 --- a/include/net/flow_offload.h +++ b/include/net/flow_offload.h @@ -228,6 +228,7 @@ struct flow_action_cookie *flow_action_cookie_create(void *data, struct flow_action_entry { enum flow_action_id id; u32 hw_index; + unsigned long act_cookie; enum flow_action_hw_stats hw_stats; action_destr destructor; void *destructor_priv; @@ -610,6 +611,7 @@ struct flow_offload_action { enum offload_act_command command; enum flow_action_id id; u32 index; + unsigned long cookie; struct flow_stats stats; struct flow_action action; }; diff --git a/net/sched/act_api.c b/net/sched/act_api.c index f4fa6d7340f8..917827199102 100644 --- a/net/sched/act_api.c +++ b/net/sched/act_api.c @@ -192,6 +192,7 @@ static int offload_action_init(struct flow_offload_action *fl_action, fl_action->extack = extack; fl_action->command = cmd; fl_action->index = act->tcfa_index; + fl_action->cookie = (unsigned long)act; if (act->ops->offload_act_setup) { spin_lock_bh(&act->tcfa_lock); diff --git a/net/sched/cls_api.c b/net/sched/cls_api.c index 5b4a95e8a1ee..bfabc9c95fa9 100644 --- a/net/sched/cls_api.c +++ b/net/sched/cls_api.c @@ -3577,6 +3577,7 @@ int tc_setup_action(struct flow_action *flow_action, for (k = 0; k < index ; k++) { entry[k].hw_stats = tc_act_hw_stats(act->hw_stats); entry[k].hw_index = act->tcfa_index; + entry[k].act_cookie = (unsigned long)act; } j += index; From patchwork Sun Feb 5 13:55:21 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oz Shlomo X-Patchwork-Id: 13129038 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 03A8EC636CC for ; Sun, 5 Feb 2023 13:56:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229580AbjBEN4E (ORCPT ); Sun, 5 Feb 2023 08:56:04 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46814 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229736AbjBEN4C (ORCPT ); Sun, 5 Feb 2023 08:56:02 -0500 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2046.outbound.protection.outlook.com [40.107.220.46]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 12D061E2AD for ; Sun, 5 Feb 2023 05:56:00 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VS1Di3/7VtIl1Jtr+dcLA5CgJwRX0TQnbq8G9byHar9vP1clN7ohd3Aw3BjKH20JKLMZhg36XRdhvbvfuMW/AKjj4f/bV3ALfx1LmYwN8L8k6fOduM6zUs/jA2pAgJyHXhWOXZW8MzGwbOfDkddOnbAPSY28ncmYNvwvU04Dq0vH6W1Enoq7vXDdprDFFxlVPvFImx1rSWmdViiCS/xYYozIKV2ogHh/wyG8Tewjpb7lp4c/cS5Ev/maU2l5tJLCKSil1nECo1QEItKn5V8Pws56sFLCyrTTBVvyh7zB0y/rt7Jr6z9jee1kHGSaPc2WuNwl3bhwCvwkHA2aZHGpiA== 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=3dOEKEYURErDlY/x1qF4MnGpIzScEsMyQtfKIN6c6ZY=; b=NtTg74+cSp1zrltwdQpcJTf1TuWfmTxZ7pNiu+QnFzELwHl7Ok0QY8WUkk1lPo+NO9CGtd8O644eqFtMsIBL8FGYVrQMMkIjelR3kKiEw8GFEBt9Bo3vRmAXrn+SsZTkdFj/BlevKGNjbt4+e2okxvIik8aEDT7n4hqCoN4gwCnTD30WkvkfP04lUKQELpJ96aSzm4P0nziY7pV5Bef7cSezWM6scV+h0zxSuBH1uzbc4V0hPnK1zHB4ofFtp5HqrFyS3NKQraeWUNiGZDqd5B72J/SGX21AnksEkSSNI0EFV605LbZAV2m2fdLYNwbVR91dra2ax86dxzOOO1lFug== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3dOEKEYURErDlY/x1qF4MnGpIzScEsMyQtfKIN6c6ZY=; b=hoJ51W6OLZLVSY6tXMrj7o+F6XKmWi4Zpz+zxG9wrjVF1v5VAIhqNXghTUAvL822PEwaLQvDcP3RlwjUaVNxI29rFPIdgCo5O7qSHbI/obrbkarwJPDSU1K51kxf1U4AMbHJuHoxfo1POUjeclpUYJpc053pYpqeZOeVMMd4IWbNANhgzDl8ocw+aHBJWTrfFbBu+EOcTrEzWVb5dlmRprALpPH+dJhKK1SoD+aGjCYo3dL3hhUY0+pm93Qm/sAGSgzd618Hhs+YL0g8A1oZSsfdbXsPotvOPfwIvNokWfx3eB7DaCh67/eitQOl1ya6zRQUNIxbgWscdSgnRghLnw== Received: from BN7PR06CA0052.namprd06.prod.outlook.com (2603:10b6:408:34::29) by PH8PR12MB6939.namprd12.prod.outlook.com (2603:10b6:510:1be::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.31; Sun, 5 Feb 2023 13:55:56 +0000 Received: from BN8NAM11FT054.eop-nam11.prod.protection.outlook.com (2603:10b6:408:34:cafe::8e) by BN7PR06CA0052.outlook.office365.com (2603:10b6:408:34::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.31 via Frontend Transport; Sun, 5 Feb 2023 13:55:55 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.161) by BN8NAM11FT054.mail.protection.outlook.com (10.13.177.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.32 via Frontend Transport; Sun, 5 Feb 2023 13:55:55 +0000 Received: from rnnvmail204.nvidia.com (10.129.68.6) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.36; Sun, 5 Feb 2023 05:55:47 -0800 Received: from rnnvmail203.nvidia.com (10.129.68.9) by rnnvmail204.nvidia.com (10.129.68.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.36; Sun, 5 Feb 2023 05:55:47 -0800 Received: from reg-r-vrt-019-180.mtr.labs.mlnx (10.127.8.11) by mail.nvidia.com (10.129.68.9) with Microsoft SMTP Server id 15.2.986.36 via Frontend Transport; Sun, 5 Feb 2023 05:55:44 -0800 From: Oz Shlomo To: CC: Saeed Mahameed , Roi Dayan , "Jiri Pirko" , Marcelo Ricardo Leitner , "Simon Horman" , Baowen Zheng , Jamal Hadi Salim , Edward Cree , "Oz Shlomo" Subject: [PATCH net-next v2 5/9] net/sched: support per action hw stats Date: Sun, 5 Feb 2023 15:55:21 +0200 Message-ID: <20230205135525.27760-6-ozsh@nvidia.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20230205135525.27760-1-ozsh@nvidia.com> References: <20230205135525.27760-1-ozsh@nvidia.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT054:EE_|PH8PR12MB6939:EE_ X-MS-Office365-Filtering-Correlation-Id: 137b4ba6-b8f0-44df-2f5d-08db0780b3ee X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: zxEgNW5a9FVGZq+WgnlM7Gf85PsDDx39H2mAeDBYHNtlXibvCCgLDsCSNfKlcf/WdidBm2ZX+5kA3k6HqyrqorwsxYn4osFK4ymYTSf7WN8xFjMKtqtClSqOmkiXqdBw4a56wnbyBeAO1WHi7TS/JpXRYX4Be6RqWDYj7U1HMQc1HBozah9QNIgPFRVwl1keZ6BxxkDjf+l90LtD2sJG0oye7GvryiptPWrxmorH8AfOxQzLkE6ogc3s2dFV2XQHd2EtVw9NM5xSFj+TiDtRH6nqwktx9+GemOFd4Q0cY6APswbHdUMdVYmyKyurrMsvSwtoDDSU1Y/UYu1Fw2mH9U8kNed0wigfXaQQDbFcrXGUGqNuay6KBsLN3nrZXGvyF0OC1rITDTqD5sfGd1exAYARYQQCePkPWWPQsOqh7g9ImwzhdENfA89Q0fb6ykjt4Y3U7NtfbWNwqInP56DoFsdCbqdEsni4EzJw/sY6xw9SzEMFqfYPoZQbQqCQc5Y6lQOBvU8plRFB+KnvxZxLfCpK2V0WFW+OKdw4F3krltZ+gR1nJkuzUeuySWzZ/+uPVkwxnnL0X/SgMoj8VX62ecMSxb2n0TBmCcTlb2m1aK2ldf5d5zHuaWM25PYRYTEA49L/PDDmwi3ii3UVMmN1/T1SRqVzPKD2eHWeLQJWvXFk7Y+ScxLQ6HmoEBAi+xtwyR3dSoNnbu0s4H5AxOIlL5utDz99dMeA6EyiEedZUeM= X-Forefront-Antispam-Report: CIP:216.228.117.161;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge2.nvidia.com;CAT:NONE;SFS:(13230025)(4636009)(39860400002)(396003)(136003)(376002)(346002)(451199018)(36840700001)(40470700004)(46966006)(36756003)(2616005)(2906002)(186003)(26005)(86362001)(107886003)(6666004)(8676002)(478600001)(5660300002)(36860700001)(82310400005)(1076003)(336012)(426003)(4326008)(356005)(40480700001)(83380400001)(316002)(54906003)(8936002)(47076005)(70586007)(70206006)(6916009)(40460700003)(41300700001)(7636003)(82740400003)(309714004);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Feb 2023 13:55:55.6965 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 137b4ba6-b8f0-44df-2f5d-08db0780b3ee X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.161];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT054.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR12MB6939 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org There are currently two mechanisms for populating hardware stats: 1. Using flow_offload api to query the flow's statistics. The api assumes that the same stats values apply to all the flow's actions. This assumption breaks when action drops or jumps over following actions. 2. Using hw_action api to query specific action stats via a driver callback method. This api assures the correct action stats for the offloaded action, however, it does not apply to the rest of the actions in the flow's actions array. Extend the flow_offload stats callback to indicate that a per action stats update is required. Use the existing flow_offload_action api to query the action's hw stats. In addition, currently the tc action stats utility only updates hw actions. Reuse the existing action stats cb infrastructure to query any action stats. Signed-off-by: Oz Shlomo Reviewed-by: Simon Horman --- Change log: V1 -> V2 - Fix static function without inline keyword in header file - Rearrange flow_cls_offload members such that stats and use_act_stats will be on the same cache line - Fall-through to flow stats when hw_stats update returns an error (this aligns with current behavior). --- include/net/flow_offload.h | 1 + include/net/pkt_cls.h | 29 +++++++++++++++++++---------- net/sched/act_api.c | 8 -------- net/sched/cls_flower.c | 2 +- net/sched/cls_matchall.c | 2 +- 5 files changed, 22 insertions(+), 20 deletions(-) diff --git a/include/net/flow_offload.h b/include/net/flow_offload.h index d177bf5f0e1a..8c05455b1e34 100644 --- a/include/net/flow_offload.h +++ b/include/net/flow_offload.h @@ -594,6 +594,7 @@ struct flow_cls_common_offload { struct flow_cls_offload { struct flow_cls_common_offload common; enum flow_cls_command command; + bool use_act_stats; unsigned long cookie; struct flow_rule *rule; struct flow_stats stats; diff --git a/include/net/pkt_cls.h b/include/net/pkt_cls.h index be21764a3b34..4cb6022449dd 100644 --- a/include/net/pkt_cls.h +++ b/include/net/pkt_cls.h @@ -292,9 +292,15 @@ static inline void tcf_exts_put_net(struct tcf_exts *exts) #define tcf_act_for_each_action(i, a, actions) \ for (i = 0; i < TCA_ACT_MAX_PRIO && ((a) = actions[i]); i++) +static inline bool tc_act_in_hw(struct tc_action *act) +{ + return !!act->in_hw_count; +} + static inline void tcf_exts_hw_stats_update(const struct tcf_exts *exts, - struct flow_stats *stats) + struct flow_stats *stats, + bool use_act_stats) { #ifdef CONFIG_NET_CLS_ACT int i; @@ -302,16 +308,18 @@ static inline void tcf_exts_put_net(struct tcf_exts *exts) for (i = 0; i < exts->nr_actions; i++) { struct tc_action *a = exts->actions[i]; - /* if stats from hw, just skip */ - if (tcf_action_update_hw_stats(a)) { - preempt_disable(); - tcf_action_stats_update(a, stats->bytes, stats->pkts, stats->drops, - stats->lastused, true); - preempt_enable(); - - a->used_hw_stats = stats->used_hw_stats; - a->used_hw_stats_valid = stats->used_hw_stats_valid; + if (use_act_stats || tc_act_in_hw(a)) { + if (!tcf_action_update_hw_stats(a)) + continue; } + + preempt_disable(); + tcf_action_stats_update(a, stats->bytes, stats->pkts, stats->drops, + stats->lastused, true); + preempt_enable(); + + a->used_hw_stats = stats->used_hw_stats; + a->used_hw_stats_valid = stats->used_hw_stats_valid; } #endif } @@ -769,6 +777,7 @@ struct tc_cls_matchall_offload { enum tc_matchall_command command; struct flow_rule *rule; struct flow_stats stats; + bool use_act_stats; unsigned long cookie; }; diff --git a/net/sched/act_api.c b/net/sched/act_api.c index 917827199102..eda58b78da13 100644 --- a/net/sched/act_api.c +++ b/net/sched/act_api.c @@ -169,11 +169,6 @@ static bool tc_act_skip_sw(u32 flags) return (flags & TCA_ACT_FLAGS_SKIP_SW) ? true : false; } -static bool tc_act_in_hw(struct tc_action *act) -{ - return !!act->in_hw_count; -} - /* SKIP_HW and SKIP_SW are mutually exclusive flags. */ static bool tc_act_flags_valid(u32 flags) { @@ -308,9 +303,6 @@ int tcf_action_update_hw_stats(struct tc_action *action) struct flow_offload_action fl_act = {}; int err; - if (!tc_act_in_hw(action)) - return -EOPNOTSUPP; - err = offload_action_init(&fl_act, action, FLOW_ACT_STATS, NULL); if (err) return err; diff --git a/net/sched/cls_flower.c b/net/sched/cls_flower.c index cb04739a13ce..885c95191ccf 100644 --- a/net/sched/cls_flower.c +++ b/net/sched/cls_flower.c @@ -502,7 +502,7 @@ static void fl_hw_update_stats(struct tcf_proto *tp, struct cls_fl_filter *f, tc_setup_cb_call(block, TC_SETUP_CLSFLOWER, &cls_flower, false, rtnl_held); - tcf_exts_hw_stats_update(&f->exts, &cls_flower.stats); + tcf_exts_hw_stats_update(&f->exts, &cls_flower.stats, cls_flower.use_act_stats); } static void __fl_put(struct cls_fl_filter *f) diff --git a/net/sched/cls_matchall.c b/net/sched/cls_matchall.c index b3883d3d4dbd..fa3bbd187eb9 100644 --- a/net/sched/cls_matchall.c +++ b/net/sched/cls_matchall.c @@ -331,7 +331,7 @@ static void mall_stats_hw_filter(struct tcf_proto *tp, tc_setup_cb_call(block, TC_SETUP_CLSMATCHALL, &cls_mall, false, true); - tcf_exts_hw_stats_update(&head->exts, &cls_mall.stats); + tcf_exts_hw_stats_update(&head->exts, &cls_mall.stats, cls_mall.use_act_stats); } static int mall_dump(struct net *net, struct tcf_proto *tp, void *fh, From patchwork Sun Feb 5 13:55:22 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oz Shlomo X-Patchwork-Id: 13129039 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id BF3F7C636CD for ; Sun, 5 Feb 2023 13:56:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229740AbjBEN4G (ORCPT ); Sun, 5 Feb 2023 08:56:06 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46842 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229710AbjBEN4E (ORCPT ); Sun, 5 Feb 2023 08:56:04 -0500 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2049.outbound.protection.outlook.com [40.107.244.49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AB9661E5CE for ; Sun, 5 Feb 2023 05:56:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cLOm86jFmaIra9ToXYuBX3MN5l2GqpxgQkGRIvZpsY43NuUDyRBsHDCfqv7cDM7ktIgDw9G3LYNIzbRajK3Oe8yJIB6vvdRM90WJeYmuOWswtbef59GJqwIquJG6kWsYiD4madkPpoRXjfaX1dGklGchF96MZbmvIAvSlrGs7F5tHwPntJEXo5yyAiToSZ9tP0Rvcti2zx2Rxn7peCyYZ7T/0DqUKGybDoiuspbbtMSgHhL30O608qPli5uT6YrnOABj4G5pZPrxHU007b3JD5Oaww4e1PliZ24ycUhBc4NSTFKaYviTB3LzUppin9qifsyTBRY8FyDeBZp2ZuulBQ== 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=bMfHc5isviPAq4o9ckZeUYS1gFA00N0SeOsvV31q0tU=; b=etVwfZCQa8L1H2DEGtGyFM9H9szInMluO8He6/rFk81IsNXk9c8GNtilpZkH7/Qsf/qnbgWmV7ppOOzr9wyeEeBX3+b9xvMfP0awqsKpOp1iwbt+uMEzDUR0V67AVWBX2hA8HMEANd8w6BtrrzC54mXK7XxQa4DqG+SxA1r4MIxrCdIgEyFRFS6sl0enagQLYGdjD5FI1e6RC5O0ghpl5LwEN/Voby676POZBLy+aRHPfE/WQcvCehsYK3sImQLDk2tJC1KoCAbVqRm4mCHf2Yntr8M28dWT23vs+IZosNxZJXkZaR984lmoi9/TIt9gQdXWnCfIQpBeCX74COz6OQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=bMfHc5isviPAq4o9ckZeUYS1gFA00N0SeOsvV31q0tU=; b=JSncdb4Y6UaSLSBg8X/TfHTaFqVVTGHPIezCI7ntn6heEy0R5HNdVg2QVwJz/EFy0VN+hkOsFEwYurda5T93jzZ8Xzg9GvtRudZw7O35ZsEDHycq9OXCkmosEnzCGRaykOPgFkt3N5ak5ca4+p4hppoTFSfhc/YQnyCddXt5p8lnVPZjeKdUUpGO+J+1JfweO0jYTjIOsonF4Epqoi6tFyzfPLFJ/nruKNkZeWLdKypUX/Wi+n4Op0eTyk2k5tdQUoRZwkD5G08acZ5gfTzo2lLiHVBu+ApjdecirfOC6gQPZseiXDyQO5IB0XrvYxEWKKfQ/k+omejYAuSxQJNuGw== Received: from BN7PR06CA0055.namprd06.prod.outlook.com (2603:10b6:408:34::32) by DS0PR12MB7969.namprd12.prod.outlook.com (2603:10b6:8:146::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.32; Sun, 5 Feb 2023 13:56:00 +0000 Received: from BN8NAM11FT054.eop-nam11.prod.protection.outlook.com (2603:10b6:408:34:cafe::fb) by BN7PR06CA0055.outlook.office365.com (2603:10b6:408:34::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.34 via Frontend Transport; Sun, 5 Feb 2023 13:56:00 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.161) by BN8NAM11FT054.mail.protection.outlook.com (10.13.177.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.32 via Frontend Transport; Sun, 5 Feb 2023 13:56:00 +0000 Received: from rnnvmail204.nvidia.com (10.129.68.6) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.36; Sun, 5 Feb 2023 05:55:50 -0800 Received: from rnnvmail203.nvidia.com (10.129.68.9) by rnnvmail204.nvidia.com (10.129.68.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.36; Sun, 5 Feb 2023 05:55:50 -0800 Received: from reg-r-vrt-019-180.mtr.labs.mlnx (10.127.8.11) by mail.nvidia.com (10.129.68.9) with Microsoft SMTP Server id 15.2.986.36 via Frontend Transport; Sun, 5 Feb 2023 05:55:47 -0800 From: Oz Shlomo To: CC: Saeed Mahameed , Roi Dayan , "Jiri Pirko" , Marcelo Ricardo Leitner , "Simon Horman" , Baowen Zheng , Jamal Hadi Salim , Edward Cree , "Oz Shlomo" Subject: [PATCH net-next v2 6/9] net/mlx5e: TC, add hw counter to branching actions Date: Sun, 5 Feb 2023 15:55:22 +0200 Message-ID: <20230205135525.27760-7-ozsh@nvidia.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20230205135525.27760-1-ozsh@nvidia.com> References: <20230205135525.27760-1-ozsh@nvidia.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT054:EE_|DS0PR12MB7969:EE_ X-MS-Office365-Filtering-Correlation-Id: 6fcf7f6f-e890-4233-bab7-08db0780b6b4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: bUzrI3ZxJlLOZvfqk/P0zhQPSPpfWrlATRjbi9fzCXSQGgnmjTXqGcWwinJ7R4dbORyp7uUEWtVe93Qq+d7Xsty5xi5Pf3xLMBq/zFdc/J+eCoPkWm3kTcPdr6VNI5b0rNUcHEWsGykyQsItT7Lfj0RqNqDywBA+KbgCju42lh4uHQ3fG57yYjxXj/LYJvaHbvSBANXvqvd+PUknnwT2DWF9uaxXG7NkLhXV1ddWPYAm1fVuLbXDYBdLb3Ir6ZNbfWD9YdZSONNW8bRu0eAqWadQdd+O3tjv3kC345zJ24GY07qhV4HViEt41BqfhC4VgTGQCoySvqs3nyKcmcpSt7MMxKsm1E12QLOBUgEQ3tJzzUFSu6qr+5JJ9kwuV7utPZaLSHoj+Ix0nrfpYmK8t2ezBGZFOsa36ASCpIwbkeExfdtSx7SPpsYVXWQJBjpZMnGH8aO3DGXlniuuRYdp+NmZifcGLsYPIrf2TLiF82hl/vxNivsKxq9H90JtY80lClLYkNIFl0EESkXqrI6KEKfRDZxiBOloSM9LbKpGPA4eE7f4S6K3ot8q0CJGWdpkNsKkK1w0SmEBryk3pbHqj+4NnKM0PKxZT8KtmRjePehwb4y/XAQhfuTz8z/7X67M+JmOO4thi3aeefeN5jzhwZnh0IfiyJtRKY3j5UNjhaqQNVyOZAWHmLXiOcBBhs5mZnWxcJ0yGFXnUbV6Wama9A== X-Forefront-Antispam-Report: CIP:216.228.117.161;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge2.nvidia.com;CAT:NONE;SFS:(13230025)(4636009)(346002)(136003)(396003)(39860400002)(376002)(451199018)(36840700001)(40470700004)(46966006)(426003)(336012)(186003)(26005)(47076005)(40480700001)(1076003)(36860700001)(7636003)(82740400003)(2616005)(86362001)(36756003)(356005)(41300700001)(70586007)(70206006)(6916009)(4326008)(8936002)(8676002)(2906002)(316002)(54906003)(478600001)(6666004)(107886003)(5660300002)(40460700003)(82310400005);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Feb 2023 13:56:00.3688 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6fcf7f6f-e890-4233-bab7-08db0780b6b4 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.161];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT054.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB7969 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org Currently a hw count action is appended to the last action of the action list. However, a branching action may terminate the action list before reaching the last action. Append a count action to a branching action. In the next patches, filters with branching actions will read this counter when reporting stats per action. Signed-off-by: Oz Shlomo Reviewed-by: Roi Dayan --- drivers/net/ethernet/mellanox/mlx5/core/en_tc.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c index 4e6f5caf8ab6..39f75f7d5c8b 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c @@ -3796,6 +3796,7 @@ bool mlx5e_same_hw_devs(struct mlx5e_priv *priv, struct mlx5e_priv *peer_priv) INIT_LIST_HEAD(&attr2->list); parse_attr->filter_dev = attr->parse_attr->filter_dev; attr2->action = 0; + attr2->counter = NULL; attr2->flags = 0; attr2->parse_attr = parse_attr; attr2->dest_chain = 0; @@ -4095,6 +4096,10 @@ struct mlx5_flow_attr * jump_state->jumping_attr = attr->branch_false; jump_state->jump_count = jump_count; + + /* branching action requires its own counter */ + attr->action |= MLX5_FLOW_CONTEXT_ACTION_COUNT; + return 0; err_branch_false: From patchwork Sun Feb 5 13:55:23 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oz Shlomo X-Patchwork-Id: 13129041 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D4EB6C636D3 for ; Sun, 5 Feb 2023 13:56:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229710AbjBEN4N (ORCPT ); Sun, 5 Feb 2023 08:56:13 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46922 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229742AbjBEN4K (ORCPT ); Sun, 5 Feb 2023 08:56:10 -0500 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (mail-dm6nam04on2047.outbound.protection.outlook.com [40.107.102.47]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D988F1E5E5 for ; Sun, 5 Feb 2023 05:56:09 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZSEZcO96VMRs5XdBvQeHuoFSV+jRXUYZ3qVHV/PcaU8B/MqCMiV9fU0Lp6Ds0McaGvIoUK5fgOZR/OKhXrqt1ZGwokHgSWVu6nHFKJmyv5fg3aBz8nlCMxDuhJXEivga0pE732qHheEWI3OwOEwV1+RYj/TPCnOsoWezWm5YuEkRt/Cbjfzskxq9sG0NiBZRAdiKgKatFEBxjIyANuaG4SrErI6zsiD+QdR8K/UC0BWHowAp3mzC1pqBz0VviFYU5bkOAfucEESBpsPyCaANkTd83igU36nTSA/kBd02xsbMhlNcMySwTUqXceWM2cAwNhDLyELOdpLinm3ysHlMgA== 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=qH0uDYc0Gcl8lsCxYn8R81YLZ0hLaQjmJgjBfaeb48k=; b=DG6ylCG76MP/21r/LV6Z0vElT0G5+XZG4795IkSevR0UBQ6gxY4SLKN8w2iyoeeOgJRpSsMBvQe7QqADMz1m/jhnFRQk9F0XDg7PCOur8/yq6DCrpBYxwl8QQ3LS5mBG+19SgdbmRjFhpKt7Kc/Bb9/6GILZJrzbBaRffFBXpnM2vg4FqTSPo5rcLsJOmNhNG12omdHqXsGkzzsvsqAoMuJwmaEH3aS4SGWEET3mn1gw4ZeikPmvrbk2TPWXcXISoD58GauRYbLa5c+7BlP7exme3RT24xF9dlGp+iP5k/MnMSmOTzOeehdgXfHWbnM7Cf+a+f3Lw97yeOF8s6eCJA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=qH0uDYc0Gcl8lsCxYn8R81YLZ0hLaQjmJgjBfaeb48k=; b=PkVNhb2hun+pk56SzfRN5xRD4KDlkPXzPxXjpbyLiSjWd33kMvvCZy7zatX9xIIe9BpRI+FN0t6462AN3v2p5+3KKbUc9DIfFS2pI5pC52ZhYAFm2S8g/j6rxQRCw8GUJcGKe5JsVX9fbST/spVdXMPZYEbsCrQeslfZx6yQhTMyFum7UBXyZolwPfLShRnpvI3RXce/GAsyww9xK7uAi7mB2KOsulOuFiKWL7t51FMkKWLCFfIpwchYrH0Ebv+OE3343F250JlMnTUlzCWxaYKFnXvwa6OlMkm0obcVdVkd0XxVrueglCutIR/Wl03zar2gLuuBCBuKUiyiS0Td2Q== Received: from BN9PR03CA0749.namprd03.prod.outlook.com (2603:10b6:408:110::34) by DM4PR12MB6063.namprd12.prod.outlook.com (2603:10b6:8:b1::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.31; Sun, 5 Feb 2023 13:56:06 +0000 Received: from BN8NAM11FT021.eop-nam11.prod.protection.outlook.com (2603:10b6:408:110:cafe::4d) by BN9PR03CA0749.outlook.office365.com (2603:10b6:408:110::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.34 via Frontend Transport; Sun, 5 Feb 2023 13:56:06 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.161) by BN8NAM11FT021.mail.protection.outlook.com (10.13.177.114) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.32 via Frontend Transport; Sun, 5 Feb 2023 13:56:06 +0000 Received: from rnnvmail204.nvidia.com (10.129.68.6) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.36; Sun, 5 Feb 2023 05:55:53 -0800 Received: from rnnvmail203.nvidia.com (10.129.68.9) by rnnvmail204.nvidia.com (10.129.68.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.36; Sun, 5 Feb 2023 05:55:53 -0800 Received: from reg-r-vrt-019-180.mtr.labs.mlnx (10.127.8.11) by mail.nvidia.com (10.129.68.9) with Microsoft SMTP Server id 15.2.986.36 via Frontend Transport; Sun, 5 Feb 2023 05:55:50 -0800 From: Oz Shlomo To: CC: Saeed Mahameed , Roi Dayan , "Jiri Pirko" , Marcelo Ricardo Leitner , "Simon Horman" , Baowen Zheng , Jamal Hadi Salim , Edward Cree , "Oz Shlomo" Subject: [PATCH net-next v2 7/9] net/mlx5e: TC, store tc action cookies per attr Date: Sun, 5 Feb 2023 15:55:23 +0200 Message-ID: <20230205135525.27760-8-ozsh@nvidia.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20230205135525.27760-1-ozsh@nvidia.com> References: <20230205135525.27760-1-ozsh@nvidia.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT021:EE_|DM4PR12MB6063:EE_ X-MS-Office365-Filtering-Correlation-Id: 11f3f029-f445-41f1-e183-08db0780ba24 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 8ND28dgyPIWOewNpmU/JZNJyCVGVNRYIAQVotjOYyqawUoz4/bEITiXUK59mNcZo7xO8mmvn5V3KtDOzic7sk90g6VUd4SKT0rKNuI4Oebf7B2Ff3ubb4q6nDcWnZCpMH7+Ay3aNtq77mxYg+W9WpuS2HO0QxwlVYmDv5Z1XtJLTQt7LTbp/3ulxnr+Xi4q89Kbvjktbjr5rVy9Ej1d/PGFmD4r2cy+el99uwpDuOF2Bd92LhNQ9yuEOVSYI7pNK8lZtSe7OhBhJ5USs37rmJcFm/lWIC6ENBVIIExiEj2Ns3DDfyjjZThm8QBlyCws0DHVpLpFfGWgSvMt23UCMqtmnSFjcuqq7OcS4wFj89VjJiTywyIz92hF29voJKj4JLXg+WkOIL8erUiT86DqLrtSyQbgP4QmGxgOTkByG+4GI3JAyWwT+Y06YPFttlcrv/V0/6Nz17pHVt3kllrqWSBxiRrqbKgFN2/bmeKq+fE2baQtiNUiyg8/oSYMzSVZHK4IlRRHMWsVGOThfR0NHnUn+lS0rcBN6MR4AoN3rolRy2+I5y92zKy8usC4vR4LRz3KTsUg1gA4FrhdUcCOgIgtspaG4UjiujLUt0N917oNJsvX/M08Z18UORYdtZq5IuXAruRLNUcAfGoxyWYCP3G7C1dcNPxeAN2GiW/ii0N/TrIbbm+Us88x+8o2MZCwiaBLQG0q5sGY2zPEGSpsXVQ== X-Forefront-Antispam-Report: CIP:216.228.117.161;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge2.nvidia.com;CAT:NONE;SFS:(13230025)(4636009)(39860400002)(396003)(136003)(346002)(376002)(451199018)(36840700001)(46966006)(40470700004)(107886003)(6666004)(26005)(1076003)(186003)(70206006)(478600001)(70586007)(4326008)(6916009)(2616005)(82740400003)(7636003)(426003)(336012)(40460700003)(47076005)(8676002)(41300700001)(2906002)(36756003)(86362001)(82310400005)(8936002)(36860700001)(40480700001)(5660300002)(54906003)(316002)(356005);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Feb 2023 13:56:06.1213 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 11f3f029-f445-41f1-e183-08db0780ba24 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.161];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT021.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB6063 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org The tc parse action phase translates the tc actions to mlx5 flow attributes data structure that is used during the flow offload phase. Currently, the flow offload stage instantiates hw counters while associating them to flow cookie. However, flows with branching actions are required to associate a hardware counter with its action cookies. Store the parsed tc action cookies on the flow attribute. Use the list of cookies in the next patch to associate a tc action cookie with its allocated hw counter. Signed-off-by: Oz Shlomo Reviewed-by: Roi Dayan --- Change log: V1 -> V2: - Reduce tc_act_cookies_count size from int to u16 - Rearange mlx5_flow_attr attributes for better cache alignment --- drivers/net/ethernet/mellanox/mlx5/core/en_tc.c | 3 +++ drivers/net/ethernet/mellanox/mlx5/core/en_tc.h | 2 ++ 2 files changed, 5 insertions(+) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c index 39f75f7d5c8b..a5118da3ed6c 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c @@ -3797,6 +3797,7 @@ bool mlx5e_same_hw_devs(struct mlx5e_priv *priv, struct mlx5e_priv *peer_priv) parse_attr->filter_dev = attr->parse_attr->filter_dev; attr2->action = 0; attr2->counter = NULL; + attr->tc_act_cookies_count = 0; attr2->flags = 0; attr2->parse_attr = parse_attr; attr2->dest_chain = 0; @@ -4160,6 +4161,8 @@ struct mlx5_flow_attr * goto out_free; parse_state->actions |= attr->action; + if (!tc_act->stats_action) + attr->tc_act_cookies[attr->tc_act_cookies_count++] = act->act_cookie; /* Split attr for multi table act if not the last act. */ if (jump_state.jump_target || diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.h b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.h index ce516dc7f3fd..75b34e632916 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.h +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.h @@ -69,6 +69,7 @@ struct mlx5_nic_flow_attr { struct mlx5_flow_attr { u32 action; + unsigned long tc_act_cookies[TCA_ACT_MAX_PRIO]; struct mlx5_fc *counter; struct mlx5_modify_hdr *modify_hdr; struct mlx5e_mod_hdr_handle *mh; /* attached mod header instance */ @@ -79,6 +80,7 @@ struct mlx5_flow_attr { struct mlx5e_tc_flow_parse_attr *parse_attr; u32 chain; u16 prio; + u16 tc_act_cookies_count; u32 dest_chain; struct mlx5_flow_table *ft; struct mlx5_flow_table *dest_ft; From patchwork Sun Feb 5 13:55:24 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oz Shlomo X-Patchwork-Id: 13129040 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B7BC9C636CD for ; Sun, 5 Feb 2023 13:56:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229745AbjBEN4M (ORCPT ); Sun, 5 Feb 2023 08:56:12 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46840 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229736AbjBEN4E (ORCPT ); Sun, 5 Feb 2023 08:56:04 -0500 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2052.outbound.protection.outlook.com [40.107.243.52]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7755E1E5CB for ; Sun, 5 Feb 2023 05:56:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RjxCztRatcCjhvvjCuxMUTaUsYqWHgLBbag+PkXNySBiOvQkH7qId1UNAM1aQMZ+3mcitbbcvOdGcSoErnU+TPXjd+FLKPUs/6vJaf+9KjmCPmkC9VTMAfbzeyPZNUzpmEejH0sCkFICFEy8hmp0GOPYo11cd3dVJPS5Vv+d5ASDAZtyP2C/31T0onaLXyYig6orF4GKhMmeM9OI5MkMphrWErDo+dTlfNqyyrNcvwjm4vT9xXtItLVBzTMtuopLoMOfZBdWHfS+2UBilTRrrwE08n+scccsB/2Jz42g6rDbJzsM4Tszcn/PRTUhb6HBi4hwP188hPEAEnvdtx992g== 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=HVzv9mvApAag93n9pUYvFe2fI9bqKi/iTalr8zCR8aA=; b=MEb5rDGwOakV39esK5wI53oWmnRzGv5mVSt0m058X91cjHwySdgTuCaD7W6/kvancpWB0HsUn5156TmkYna58HW2Jf8jxoIf7xWzNenQjHq6gUmRivch1x2UaS0PIeSU+m1pEsl3QXEkKQ8WNlOlfrDGGTJvQ8BO11S5tM18pqW08FCnteMevo9SqAC2SF2j3aMkRnkCIJXpnL9+BJjejB1wcIXEjS6RRlN/uj8qySOuXqBQn7gmm1PBTkSO4dkDeq3ytb31d8RtIl/uyj+cZuhXh3haJpfAHSqh9B8+zv8eXhFoQQERe6tjsWhZHqkT6vUCITxMBBDmQ3AHMBeNog== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.160) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=HVzv9mvApAag93n9pUYvFe2fI9bqKi/iTalr8zCR8aA=; b=btWjRMXWgrUrUrfRhgIlicyEDBeuzvvO/1ImHDIhDZYgOEe0i3rmDNuKIv4fGXmVtv0vjkNGWt8wRouMoPCvKL8lSGluHd/S38twcatgwKah2APJEpgleL8JrbdBkDqILUTe+D06zb4yEEUTxsA039Df/Er7yMzCwZybEWr2j68PNJMrOMU8TlfGHBPKmg/z/Rm6F+HhlVwzrdHAh2bHz/JgHUnhJ1ManWd04weoQFLyDPXqVhRqAmaYRbxbSiX/zn0Kp40oQiLsQCzARfT4vcjAyjbiw5QK6O3bWQkBUPLn6iyfCzLrJrGJHD0GV8NNCvmwqnC88iWQ7jJC70GARA== Received: from DM5PR07CA0065.namprd07.prod.outlook.com (2603:10b6:4:ad::30) by DS7PR12MB6357.namprd12.prod.outlook.com (2603:10b6:8:96::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.32; Sun, 5 Feb 2023 13:56:00 +0000 Received: from DM6NAM11FT114.eop-nam11.prod.protection.outlook.com (2603:10b6:4:ad:cafe::bb) by DM5PR07CA0065.outlook.office365.com (2603:10b6:4:ad::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.34 via Frontend Transport; Sun, 5 Feb 2023 13:56:00 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.160) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.160 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.160; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.160) by DM6NAM11FT114.mail.protection.outlook.com (10.13.172.206) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.32 via Frontend Transport; Sun, 5 Feb 2023 13:56:00 +0000 Received: from rnnvmail204.nvidia.com (10.129.68.6) by mail.nvidia.com (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.36; Sun, 5 Feb 2023 05:55:56 -0800 Received: from rnnvmail203.nvidia.com (10.129.68.9) by rnnvmail204.nvidia.com (10.129.68.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.36; Sun, 5 Feb 2023 05:55:56 -0800 Received: from reg-r-vrt-019-180.mtr.labs.mlnx (10.127.8.11) by mail.nvidia.com (10.129.68.9) with Microsoft SMTP Server id 15.2.986.36 via Frontend Transport; Sun, 5 Feb 2023 05:55:53 -0800 From: Oz Shlomo To: CC: Saeed Mahameed , Roi Dayan , "Jiri Pirko" , Marcelo Ricardo Leitner , "Simon Horman" , Baowen Zheng , Jamal Hadi Salim , Edward Cree , "Oz Shlomo" Subject: [PATCH net-next v2 8/9] net/sched: TC, map tc action cookie to a hw counter Date: Sun, 5 Feb 2023 15:55:24 +0200 Message-ID: <20230205135525.27760-9-ozsh@nvidia.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20230205135525.27760-1-ozsh@nvidia.com> References: <20230205135525.27760-1-ozsh@nvidia.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6NAM11FT114:EE_|DS7PR12MB6357:EE_ X-MS-Office365-Filtering-Correlation-Id: 686f6a39-5203-4261-5921-08db0780b69b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: tFzpjGztFGhmM8mpp/hPiw3Dnz92zbEqOrib5GkCyUODx7NJsOH/O/j0OArMaUmz0seWVyp5pXubxQlT59Twia0b6MHQGJqEaOzK0N+aSIalgT1ZR16USv1C5jmk9BmPl3U4Git3v+WcQ/u7NKHR7GU2sSvUYQA1kxNSwTd2DFW+7x14upbEpSnspji+4IVhk7YR36LVJ5esyriyOEHcilFpCl6Mtce9ax4t4QyWubMjLuy8tsTYN46kfe3xhWdGeNgt80h/I2Hz9pNkVsYbswBr4QqXenJ631ub0VbmW+wlz7oIUX/O/Ajj3Z20b6mXGeTCi1DtBN4qcBZTo9F0UaOe80OlLHwblUo5vObjaBkZAKyvOeqmA5yC1YjUrwh7FAVJnj2wumpmSnr4bYWPINkLVdoeigEqXSSYqzPexdcDktFDZIzi9nKeDa2GOo5FrdXixz9fXElJ89I2UKf6BNo/D/TdTjBozf05BHa6tlHgl07jep7aRGQzRgq2J2WLCEbS4/PEna4AzlztbfxKJ4h7SCPZqeJHUmEpGpVCC2mmWp59A0kvDXHkz7WFMHGqrnLW+/UKPz+fpgGbv6gR9GbpGcmRELabXEAns5ehu+MOMWa5jv2IhLOlxV+uQwE8VZIoiFhmuQqsY5eyw3sX0u12bwiVe5jDBGIXTvjB/TtnlctM2RfWverH96Hh2eN3jS2P48fBHsuD7NuN36VwLw== X-Forefront-Antispam-Report: CIP:216.228.117.160;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge1.nvidia.com;CAT:NONE;SFS:(13230025)(4636009)(376002)(136003)(346002)(396003)(39860400002)(451199018)(40470700004)(36840700001)(46966006)(6916009)(8676002)(8936002)(70586007)(70206006)(47076005)(41300700001)(4326008)(316002)(54906003)(36860700001)(40460700003)(30864003)(5660300002)(7636003)(2906002)(83380400001)(36756003)(426003)(336012)(40480700001)(107886003)(6666004)(86362001)(82740400003)(26005)(2616005)(82310400005)(186003)(1076003)(478600001)(356005);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Feb 2023 13:56:00.2493 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 686f6a39-5203-4261-5921-08db0780b69b X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.160];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: DM6NAM11FT114.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB6357 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org Currently a hardware counter is associated with a flow cookie. This does not apply to flows using branching action which are required to return per action stats. A single counter may apply to multiple actions. Scan the flow actions in reverse (from the last to the first action) while caching the last counter. Associate all the flow attribute tc action cookies with the current cached counter. Signed-off-by: Oz Shlomo Reviewed-by: Roi Dayan --- drivers/net/ethernet/mellanox/mlx5/core/Makefile | 2 +- .../ethernet/mellanox/mlx5/core/en/tc/act_stats.c | 153 +++++++++++++++++++++ .../ethernet/mellanox/mlx5/core/en/tc/act_stats.h | 23 ++++ drivers/net/ethernet/mellanox/mlx5/core/en_rep.h | 3 + drivers/net/ethernet/mellanox/mlx5/core/en_tc.c | 44 ++++++ 5 files changed, 224 insertions(+), 1 deletion(-) create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/en/tc/act_stats.c create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/en/tc/act_stats.h diff --git a/drivers/net/ethernet/mellanox/mlx5/core/Makefile b/drivers/net/ethernet/mellanox/mlx5/core/Makefile index cd4a1ab0ea78..06f511fcbd8e 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/Makefile +++ b/drivers/net/ethernet/mellanox/mlx5/core/Makefile @@ -47,7 +47,7 @@ mlx5_core-$(CONFIG_MLX5_CLS_ACT) += en_tc.o en/rep/tc.o en/rep/neigh.o \ en/tc_tun_vxlan.o en/tc_tun_gre.o en/tc_tun_geneve.o \ en/tc_tun_mplsoudp.o diag/en_tc_tracepoint.o \ en/tc/post_act.o en/tc/int_port.o en/tc/meter.o \ - en/tc/post_meter.o + en/tc/post_meter.o en/tc/act_stats.o mlx5_core-$(CONFIG_MLX5_CLS_ACT) += en/tc/act/act.o en/tc/act/drop.o en/tc/act/trap.o \ en/tc/act/accept.o en/tc/act/mark.o en/tc/act/goto.o \ diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/tc/act_stats.c b/drivers/net/ethernet/mellanox/mlx5/core/en/tc/act_stats.c new file mode 100644 index 000000000000..d1272c0f883c --- /dev/null +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/tc/act_stats.c @@ -0,0 +1,153 @@ +// SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB +// Copyright (c) 2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + +#include +#include +#include "en/tc_priv.h" +#include "act_stats.h" +#include "en/fs.h" + +struct mlx5e_tc_act_stats_handle { + struct rhashtable ht; + spinlock_t ht_lock; /* protects hashtable */ +}; + +struct mlx5e_tc_act_stats { + unsigned long tc_act_cookie; + + struct mlx5_fc *counter; + u64 lastpackets; + u64 lastbytes; + + struct rhash_head hash; + struct rcu_head rcu_head; +}; + +static const struct rhashtable_params act_counters_ht_params = { + .head_offset = offsetof(struct mlx5e_tc_act_stats, hash), + .key_offset = 0, + .key_len = offsetof(struct mlx5e_tc_act_stats, counter), + .automatic_shrinking = true, +}; + +struct mlx5e_tc_act_stats_handle * +mlx5e_tc_act_stats_create(void) +{ + struct mlx5e_tc_act_stats_handle *handle; + int err; + + handle = kvzalloc(sizeof(*handle), GFP_KERNEL); + if (IS_ERR(handle)) + return ERR_PTR(-ENOMEM); + + err = rhashtable_init(&handle->ht, &act_counters_ht_params); + if (err) + goto err; + + spin_lock_init(&handle->ht_lock); + return handle; +err: + kvfree(handle); + return ERR_PTR(err); +} + +void mlx5e_tc_act_stats_free(struct mlx5e_tc_act_stats_handle *handle) +{ + rhashtable_destroy(&handle->ht); + kvfree(handle); +} + +static int +mlx5e_tc_act_stats_add(struct mlx5e_tc_act_stats_handle *handle, + unsigned long act_cookie, + struct mlx5_fc *counter) +{ + struct mlx5e_tc_act_stats *act_stats, *old_act_stats; + struct rhashtable *ht = &handle->ht; + int err = 0; + + act_stats = kvzalloc(sizeof(*act_stats), GFP_KERNEL); + if (!act_stats) + return -ENOMEM; + + act_stats->tc_act_cookie = act_cookie; + act_stats->counter = counter; + + rcu_read_lock(); + old_act_stats = rhashtable_lookup_get_insert_fast(ht, + &act_stats->hash, + act_counters_ht_params); + if (IS_ERR(old_act_stats)) { + err = PTR_ERR(old_act_stats); + goto err_hash_insert; + } else if (old_act_stats) { + err = -EEXIST; + goto err_hash_insert; + } + rcu_read_unlock(); + + return 0; + +err_hash_insert: + rcu_read_unlock(); + kvfree(act_stats); + return err; +} + +void +mlx5e_tc_act_stats_del_flow(struct mlx5e_tc_act_stats_handle *handle, + struct mlx5e_tc_flow *flow) +{ + struct mlx5_flow_attr *attr; + struct mlx5e_tc_act_stats *act_stats; + int i; + + list_for_each_entry(attr, &flow->attrs, list) { + for (i = 0; i < attr->tc_act_cookies_count; i++) { + struct rhashtable *ht = &handle->ht; + + spin_lock(&handle->ht_lock); + act_stats = rhashtable_lookup_fast(ht, + &attr->tc_act_cookies[i], + act_counters_ht_params); + if (act_stats && + rhashtable_remove_fast(ht, &act_stats->hash, + act_counters_ht_params) == 0) + kvfree_rcu(act_stats, rcu_head); + + spin_unlock(&handle->ht_lock); + } + } +} + +int +mlx5e_tc_act_stats_add_flow(struct mlx5e_tc_act_stats_handle *handle, + struct mlx5e_tc_flow *flow) +{ + struct mlx5_fc *curr_counter = NULL; + unsigned long last_cookie = 0; + struct mlx5_flow_attr *attr; + int err; + int i; + + list_for_each_entry(attr, &flow->attrs, list) { + if (attr->counter) + curr_counter = attr->counter; + + for (i = 0; i < attr->tc_act_cookies_count; i++) { + /* jump over identical ids (e.g. pedit)*/ + if (last_cookie == attr->tc_act_cookies[i]) + continue; + + err = mlx5e_tc_act_stats_add(handle, attr->tc_act_cookies[i], curr_counter); + if (err) + goto out_err; + last_cookie = attr->tc_act_cookies[i]; + } + } + + return 0; +out_err: + mlx5e_tc_act_stats_del_flow(handle, flow); + return err; +} diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/tc/act_stats.h b/drivers/net/ethernet/mellanox/mlx5/core/en/tc/act_stats.h new file mode 100644 index 000000000000..4929301a5260 --- /dev/null +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/tc/act_stats.h @@ -0,0 +1,23 @@ +/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */ +/* Copyright (c) 2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved. */ + +#ifndef __MLX5_EN_ACT_STATS_H__ +#define __MLX5_EN_ACT_STATS_H__ + +#include +#include "en/tc_priv.h" + +struct mlx5e_tc_act_stats_handle; + +struct mlx5e_tc_act_stats_handle *mlx5e_tc_act_stats_create(void); +void mlx5e_tc_act_stats_free(struct mlx5e_tc_act_stats_handle *handle); + +int +mlx5e_tc_act_stats_add_flow(struct mlx5e_tc_act_stats_handle *handle, + struct mlx5e_tc_flow *flow); + +void +mlx5e_tc_act_stats_del_flow(struct mlx5e_tc_act_stats_handle *handle, + struct mlx5e_tc_flow *flow); + +#endif /* __MLX5_EN_ACT_STATS_H__ */ diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.h b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.h index b4e691760da9..0abe3313c673 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.h +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.h @@ -100,6 +100,9 @@ struct mlx5_rep_uplink_priv { struct mlx5e_tc_int_port_priv *int_port_priv; struct mlx5e_flow_meters *flow_meters; + + /* tc action stats */ + struct mlx5e_tc_act_stats_handle *action_stats_handle; }; struct mlx5e_rep_priv { diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c index a5118da3ed6c..ec5d1fbae22e 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c @@ -45,6 +45,7 @@ #include #include "en.h" #include "en/tc/post_act.h" +#include "en/tc/act_stats.h" #include "en_rep.h" #include "en/rep/tc.h" #include "en/rep/neigh.h" @@ -101,6 +102,9 @@ struct mlx5e_tc_table { struct mapping_ctx *mapping; struct mlx5e_hairpin_params hairpin_params; struct dentry *dfs_root; + + /* tc action stats */ + struct mlx5e_tc_act_stats_handle *action_stats_handle; }; struct mlx5e_tc_attr_to_reg_mapping mlx5e_tc_attr_to_reg_mappings[] = { @@ -286,6 +290,24 @@ struct mlx5_fs_chains *mlx5e_nic_chains(struct mlx5e_tc_table *tc) return err; } +static struct mlx5e_tc_act_stats_handle * +get_act_stats_handle(struct mlx5e_priv *priv) +{ + struct mlx5e_tc_table *tc = mlx5e_fs_get_tc(priv->fs); + struct mlx5_eswitch *esw = priv->mdev->priv.eswitch; + struct mlx5_rep_uplink_priv *uplink_priv; + struct mlx5e_rep_priv *uplink_rpriv; + + if (is_mdev_switchdev_mode(priv->mdev)) { + uplink_rpriv = mlx5_eswitch_get_uplink_priv(esw, REP_ETH); + uplink_priv = &uplink_rpriv->uplink_priv; + + return uplink_priv->action_stats_handle; + } + + return tc->action_stats_handle; +} + struct mlx5e_tc_int_port_priv * mlx5e_get_int_port_priv(struct mlx5e_priv *priv) { @@ -2035,6 +2057,10 @@ int mlx5e_tc_query_route_vport(struct net_device *out_dev, struct net_device *ro if (err) goto err_out; + err = mlx5e_tc_act_stats_add_flow(get_act_stats_handle(priv), flow); + if (err) + goto err_out; + /* we get here if one of the following takes place: * (1) there's no error * (2) there's an encap action and we don't have valid neigh @@ -2131,6 +2157,8 @@ static void mlx5e_tc_del_fdb_flow(struct mlx5e_priv *priv, if (flow_flag_test(flow, L3_TO_L2_DECAP)) mlx5e_detach_decap(priv, flow); + mlx5e_tc_act_stats_del_flow(get_act_stats_handle(priv), flow); + free_flow_post_acts(flow); free_branch_attr(flow, attr->branch_true); free_branch_attr(flow, attr->branch_false); @@ -5342,8 +5370,16 @@ int mlx5e_tc_nic_init(struct mlx5e_priv *priv) mlx5e_tc_debugfs_init(tc, mlx5e_fs_get_debugfs_root(priv->fs)); + tc->action_stats_handle = mlx5e_tc_act_stats_create(); + if (IS_ERR(tc->action_stats_handle)) + goto err_act_stats; + return 0; +err_act_stats: + unregister_netdevice_notifier_dev_net(priv->netdev, + &tc->netdevice_nb, + &tc->netdevice_nn); err_reg: mlx5_tc_ct_clean(tc->ct); mlx5e_tc_post_act_destroy(tc->post_act); @@ -5393,6 +5429,7 @@ void mlx5e_tc_nic_cleanup(struct mlx5e_priv *priv) mapping_destroy(tc->mapping); mlx5_chains_destroy(tc->chains); mlx5e_tc_nic_destroy_miss_table(priv); + mlx5e_tc_act_stats_free(tc->action_stats_handle); } int mlx5e_tc_ht_init(struct rhashtable *tc_ht) @@ -5469,8 +5506,14 @@ int mlx5e_tc_esw_init(struct mlx5_rep_uplink_priv *uplink_priv) goto err_register_fib_notifier; } + uplink_priv->action_stats_handle = mlx5e_tc_act_stats_create(); + if (IS_ERR(uplink_priv->action_stats_handle)) + goto err_action_counter; + return 0; +err_action_counter: + mlx5e_tc_tun_cleanup(uplink_priv->encap); err_register_fib_notifier: mapping_destroy(uplink_priv->tunnel_enc_opts_mapping); err_enc_opts_mapping: @@ -5497,6 +5540,7 @@ void mlx5e_tc_esw_cleanup(struct mlx5_rep_uplink_priv *uplink_priv) mlx5_tc_ct_clean(uplink_priv->ct_priv); mlx5e_flow_meters_cleanup(uplink_priv->flow_meters); mlx5e_tc_post_act_destroy(uplink_priv->post_act); + mlx5e_tc_act_stats_free(uplink_priv->action_stats_handle); } int mlx5e_tc_num_filters(struct mlx5e_priv *priv, unsigned long flags) From patchwork Sun Feb 5 13:55:25 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oz Shlomo X-Patchwork-Id: 13129042 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A3918C636CC for ; Sun, 5 Feb 2023 13:56:23 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229741AbjBEN4W (ORCPT ); Sun, 5 Feb 2023 08:56:22 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47014 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229739AbjBEN4R (ORCPT ); Sun, 5 Feb 2023 08:56:17 -0500 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2068.outbound.protection.outlook.com [40.107.244.68]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 192441E5E5 for ; Sun, 5 Feb 2023 05:56:14 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bV9JpuNsL+Sq53rGAXig9coxuTSTnU+hQ9XPGQ/mORKKSiGsuDg0VhGpW5bkLvlCU8pKTPom4+u1Oc9hHGaXk3/CAOZ/LLkzbnAm74UQLoxBO44f7g90FvMq5IcaZN41874qX2myS9lVKuuPalQ//ek01Np8PU1di7yiMo0NsLkxqW/wZiDtuMqxlLh0mTg8TowL6lndtSfc9RblUlbEqU8izq36JwNl3CypVHoiUv5HVM0P/N10RuNGf75M8SqC5Q8LVGt3oYSQgJN3AfdbkXkBQFjo0iCGlgAZOUROBmQEWtz1k/molKiLFH5LeMIkBaeEp3oWos8VUUbDES8yeA== 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=15hxJfE5/n3so+b8hViWCnmgZmQgoCIuXR/u2+vh3GU=; b=kkWuRdI0Laz6SAxxwJ/ZBZvsQLSamN/ck3uf6H5d4vZ62+5yFNUh4ywC8ntz5nN6+JW9frK/zYx1Vi57yohLGPPkTJQI0nPVoFlbPwU0JDUte3zdy+i5fhzcMB+3OlSQPglkuaLvu30EAftJsbT6La7OAsmahRfEuS2eFuY2Q9jYBWfdYaSu12nz7tQGnWdLpR95yPtgmvB6FfarbuKB6x5l0QuC9870m0wbvrxJnD59K8p7Ynbm4NHjTW51pyNh2pj5DIQ9OInyxg0jq/Hs7beGrsbPbqq+8oxYVMRfcNQuteYce77oiUrE9guT7UcKdQ+zXiqbZC/sJcEW23BGNw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=15hxJfE5/n3so+b8hViWCnmgZmQgoCIuXR/u2+vh3GU=; b=U1gdTpiAz6JG2y0ECqW6veoRzimVkHuuJwFKB/AHvaCFJAxyr4dzun4gep4FdLeJqgqSmDWhZeoi1vDpVnAinGhOkTZRQRi9X+gh4tUAoOO/AL/JU4Nnzz3tbqzKDS+EenRYUMZoylaTsRHY59k2WXTMNQy4ldtOT+lyKPhFt0oDn8hBpKt3P5CyJmTe4dIZZm7XmRHfXb+re9N6M3x32+7fxidXQ6ld2g/Rfo4m8t6bXsVDcYPBFBmNbxoHQu/zAvDCFwmIi5SEFANW7tzvfI7ict8wpz6mYwI+ng8s3u/QrqqUjcWMErq7nP6jsvtVb8t2lWNECORqnUdiOrAsDQ== Received: from BN9PR03CA0731.namprd03.prod.outlook.com (2603:10b6:408:110::16) by CH3PR12MB7714.namprd12.prod.outlook.com (2603:10b6:610:14e::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.31; Sun, 5 Feb 2023 13:56:11 +0000 Received: from BN8NAM11FT021.eop-nam11.prod.protection.outlook.com (2603:10b6:408:110:cafe::2a) by BN9PR03CA0731.outlook.office365.com (2603:10b6:408:110::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.34 via Frontend Transport; Sun, 5 Feb 2023 13:56:11 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.161) by BN8NAM11FT021.mail.protection.outlook.com (10.13.177.114) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.32 via Frontend Transport; Sun, 5 Feb 2023 13:56:11 +0000 Received: from rnnvmail204.nvidia.com (10.129.68.6) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.36; Sun, 5 Feb 2023 05:55:59 -0800 Received: from rnnvmail203.nvidia.com (10.129.68.9) by rnnvmail204.nvidia.com (10.129.68.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.36; Sun, 5 Feb 2023 05:55:59 -0800 Received: from reg-r-vrt-019-180.mtr.labs.mlnx (10.127.8.11) by mail.nvidia.com (10.129.68.9) with Microsoft SMTP Server id 15.2.986.36 via Frontend Transport; Sun, 5 Feb 2023 05:55:56 -0800 From: Oz Shlomo To: CC: Saeed Mahameed , Roi Dayan , "Jiri Pirko" , Marcelo Ricardo Leitner , "Simon Horman" , Baowen Zheng , Jamal Hadi Salim , Edward Cree , "Oz Shlomo" Subject: [PATCH net-next v2 9/9] net/sched: TC, support per action stats Date: Sun, 5 Feb 2023 15:55:25 +0200 Message-ID: <20230205135525.27760-10-ozsh@nvidia.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20230205135525.27760-1-ozsh@nvidia.com> References: <20230205135525.27760-1-ozsh@nvidia.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT021:EE_|CH3PR12MB7714:EE_ X-MS-Office365-Filtering-Correlation-Id: 38182ccc-c393-4689-ac68-08db0780bd4a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 1ZGoCjlMs+/BAa3kWjSUJ9O1kUNZOh3ciJyWknaQTFVh2KeizdwH1EVsofJI9HWekUyX4xq1G+4UDNLX2PUfilLfXE4fENYPafGTNO/NNko7f+sTBiJMmgr6UdnYDxyXenSu4HH3qqqw+gFTtR+HKYdyjmn2WQJhZkyRUwqBaGD3VcjfDdWPdk338sfA5oVCclTQ2Wld9SJNlq8oCNuetMGXq79zaCdT01ZDSQqMHiYXRCzBLQpgFWnC9zY/IMSZswn7tekwGjpd6ixmtiln9Q7VQUsV8J+7KXtUh5tGbTTEb2apK5Wagh3zITGHUwliEKRAIab+BkHNCteCl2FuSYDlZszvx/7+n5K/zmjbNGVfX6JzLV2n0lOU93AZFsqXPCkAh3W6i60PgKinCaMw4Le02OBem+yYoFWNXof61KBEz9qTmDANN1c/JiGiJQsQsMMdafIfl0SLcAXjkhkMmIIWA9MVBAC9M0GXspIr+Yv95V+03KugCPTrNTp7IfeH7D0FiUCuzWUzqVLHkYMtfC4usdhkaLE+KWkdMSkPFFvfe2gXTjC0sH0oubVmjUYhPmZEWpmrRZxaewI7eOitHk+rjlHODGiWK2fhGiacfxiDlmE1riY6RHDI82/EjH9wa7z/j8gq2MiHLAWjqWfSvOvNMEVy+B5s0JY1ps8JYdH2ioEeH5x25KG5irairXEAUNXK1t3X7P37eWdyjgHXfA== X-Forefront-Antispam-Report: CIP:216.228.117.161;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge2.nvidia.com;CAT:NONE;SFS:(13230025)(4636009)(376002)(39860400002)(346002)(136003)(396003)(451199018)(46966006)(36840700001)(40470700004)(1076003)(26005)(83380400001)(186003)(82310400005)(426003)(40460700003)(36756003)(107886003)(336012)(40480700001)(6666004)(82740400003)(5660300002)(2906002)(7636003)(4326008)(70206006)(70586007)(6916009)(316002)(54906003)(8936002)(8676002)(41300700001)(36860700001)(478600001)(356005)(86362001)(47076005)(2616005);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Feb 2023 13:56:11.4021 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 38182ccc-c393-4689-ac68-08db0780bd4a X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.161];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT021.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB7714 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org Extend the action stats callback implementation to update stats for actions that are associated with hw counters. Note that the callback may be called from tc action utility or from tc flower. Both apis expect the driver to return the stats difference from the last update. As such, query the raw counter value and maintain the diff from the last api call in the tc layer, instead of the fs_core layer. Signed-off-by: Oz Shlomo Reviewed-by: Roi Dayan --- .../net/ethernet/mellanox/mlx5/core/en/rep/tc.c | 2 +- .../ethernet/mellanox/mlx5/core/en/tc/act_stats.c | 44 ++++++++++++++++++++++ .../ethernet/mellanox/mlx5/core/en/tc/act_stats.h | 4 ++ .../net/ethernet/mellanox/mlx5/core/en/tc_priv.h | 1 + drivers/net/ethernet/mellanox/mlx5/core/en_tc.c | 39 +++++++++++++------ drivers/net/ethernet/mellanox/mlx5/core/en_tc.h | 2 + .../net/ethernet/mellanox/mlx5/core/fs_counters.c | 10 +++++ include/linux/mlx5/fs.h | 2 + 8 files changed, 91 insertions(+), 13 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/rep/tc.c b/drivers/net/ethernet/mellanox/mlx5/core/en/rep/tc.c index b08339d986d5..3b590cfe33b8 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en/rep/tc.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/rep/tc.c @@ -589,7 +589,7 @@ static bool mlx5e_rep_macvlan_mode_supported(const struct net_device *dev) act = mlx5e_tc_act_get(fl_act->id, ns_type); if (!act || !act->stats_action) - return -EOPNOTSUPP; + return mlx5e_tc_fill_action_stats(priv, fl_act); return act->stats_action(priv, fl_act); } diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/tc/act_stats.c b/drivers/net/ethernet/mellanox/mlx5/core/en/tc/act_stats.c index d1272c0f883c..f71766dca660 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en/tc/act_stats.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/tc/act_stats.c @@ -102,6 +102,9 @@ void mlx5e_tc_act_stats_free(struct mlx5e_tc_act_stats_handle *handle) struct mlx5e_tc_act_stats *act_stats; int i; + if (!flow_flag_test(flow, USE_ACT_STATS)) + return; + list_for_each_entry(attr, &flow->attrs, list) { for (i = 0; i < attr->tc_act_cookies_count; i++) { struct rhashtable *ht = &handle->ht; @@ -130,6 +133,9 @@ void mlx5e_tc_act_stats_free(struct mlx5e_tc_act_stats_handle *handle) int err; int i; + if (!flow_flag_test(flow, USE_ACT_STATS)) + return 0; + list_for_each_entry(attr, &flow->attrs, list) { if (attr->counter) curr_counter = attr->counter; @@ -151,3 +157,41 @@ void mlx5e_tc_act_stats_free(struct mlx5e_tc_act_stats_handle *handle) mlx5e_tc_act_stats_del_flow(handle, flow); return err; } + +int +mlx5e_tc_act_stats_fill_stats(struct mlx5e_tc_act_stats_handle *handle, + struct flow_offload_action *fl_act) +{ + struct rhashtable *ht = &handle->ht; + struct mlx5e_tc_act_stats *item; + struct mlx5e_tc_act_stats key; + u64 pkts, bytes, lastused; + int err = 0; + + key.tc_act_cookie = fl_act->cookie; + + rcu_read_lock(); + item = rhashtable_lookup(ht, &key, act_counters_ht_params); + if (!item) { + rcu_read_unlock(); + err = -ENOENT; + goto err_out; + } + + mlx5_fc_query_cached_raw(item->counter, + &bytes, &pkts, &lastused); + + flow_stats_update(&fl_act->stats, + bytes - item->lastbytes, + pkts - item->lastpackets, + 0, lastused, FLOW_ACTION_HW_STATS_DELAYED); + + item->lastpackets = pkts; + item->lastbytes = bytes; + rcu_read_unlock(); + + return 0; + +err_out: + return err; +} diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/tc/act_stats.h b/drivers/net/ethernet/mellanox/mlx5/core/en/tc/act_stats.h index 4929301a5260..002292c2567c 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en/tc/act_stats.h +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/tc/act_stats.h @@ -20,4 +20,8 @@ mlx5e_tc_act_stats_del_flow(struct mlx5e_tc_act_stats_handle *handle, struct mlx5e_tc_flow *flow); +int +mlx5e_tc_act_stats_fill_stats(struct mlx5e_tc_act_stats_handle *handle, + struct flow_offload_action *fl_act); + #endif /* __MLX5_EN_ACT_STATS_H__ */ diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_priv.h b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_priv.h index f575646d2f50..451fd4342a5a 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_priv.h +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_priv.h @@ -30,6 +30,7 @@ enum { MLX5E_TC_FLOW_FLAG_TUN_RX = MLX5E_TC_FLOW_BASE + 9, MLX5E_TC_FLOW_FLAG_FAILED = MLX5E_TC_FLOW_BASE + 10, MLX5E_TC_FLOW_FLAG_SAMPLE = MLX5E_TC_FLOW_BASE + 11, + MLX5E_TC_FLOW_FLAG_USE_ACT_STATS = MLX5E_TC_FLOW_BASE + 12, }; struct mlx5e_tc_flow_parse_attr { diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c index ec5d1fbae22e..50432c9d78c0 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c @@ -4128,6 +4128,7 @@ struct mlx5_flow_attr * /* branching action requires its own counter */ attr->action |= MLX5_FLOW_CONTEXT_ACTION_COUNT; + flow_flag_set(flow, USE_ACT_STATS); return 0; @@ -4978,6 +4979,12 @@ int mlx5e_delete_flower(struct net_device *dev, struct mlx5e_priv *priv, return err; } +int mlx5e_tc_fill_action_stats(struct mlx5e_priv *priv, + struct flow_offload_action *fl_act) +{ + return mlx5e_tc_act_stats_fill_stats(get_act_stats_handle(priv), fl_act); +} + int mlx5e_stats_flower(struct net_device *dev, struct mlx5e_priv *priv, struct flow_cls_offload *f, unsigned long flags) { @@ -5004,11 +5011,15 @@ int mlx5e_stats_flower(struct net_device *dev, struct mlx5e_priv *priv, } if (mlx5e_is_offloaded_flow(flow) || flow_flag_test(flow, CT)) { - counter = mlx5e_tc_get_counter(flow); - if (!counter) - goto errout; + if (flow_flag_test(flow, USE_ACT_STATS)) { + f->use_act_stats = true; + } else { + counter = mlx5e_tc_get_counter(flow); + if (!counter) + goto errout; - mlx5_fc_query_cached(counter, &bytes, &packets, &lastuse); + mlx5_fc_query_cached(counter, &bytes, &packets, &lastuse); + } } /* Under multipath it's possible for one rule to be currently @@ -5024,14 +5035,18 @@ int mlx5e_stats_flower(struct net_device *dev, struct mlx5e_priv *priv, u64 packets2; u64 lastuse2; - counter = mlx5e_tc_get_counter(flow->peer_flow); - if (!counter) - goto no_peer_counter; - mlx5_fc_query_cached(counter, &bytes2, &packets2, &lastuse2); - - bytes += bytes2; - packets += packets2; - lastuse = max_t(u64, lastuse, lastuse2); + if (flow_flag_test(flow, USE_ACT_STATS)) { + f->use_act_stats = true; + } else { + counter = mlx5e_tc_get_counter(flow->peer_flow); + if (!counter) + goto no_peer_counter; + mlx5_fc_query_cached(counter, &bytes2, &packets2, &lastuse2); + + bytes += bytes2; + packets += packets2; + lastuse = max_t(u64, lastuse, lastuse2); + } } no_peer_counter: diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.h b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.h index 75b34e632916..e8e39fdcda73 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.h +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.h @@ -199,6 +199,8 @@ int mlx5e_delete_flower(struct net_device *dev, struct mlx5e_priv *priv, int mlx5e_stats_flower(struct net_device *dev, struct mlx5e_priv *priv, struct flow_cls_offload *f, unsigned long flags); +int mlx5e_tc_fill_action_stats(struct mlx5e_priv *priv, + struct flow_offload_action *fl_act); int mlx5e_tc_configure_matchall(struct mlx5e_priv *priv, struct tc_cls_matchall_offload *f); diff --git a/drivers/net/ethernet/mellanox/mlx5/core/fs_counters.c b/drivers/net/ethernet/mellanox/mlx5/core/fs_counters.c index b406e0367af6..17fe30a4c06c 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/fs_counters.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/fs_counters.c @@ -504,6 +504,16 @@ void mlx5_fc_query_cached(struct mlx5_fc *counter, counter->lastpackets = c.packets; } +void mlx5_fc_query_cached_raw(struct mlx5_fc *counter, + u64 *bytes, u64 *packets, u64 *lastuse) +{ + struct mlx5_fc_cache c = counter->cache; + + *bytes = c.bytes; + *packets = c.packets; + *lastuse = c.lastuse; +} + void mlx5_fc_queue_stats_work(struct mlx5_core_dev *dev, struct delayed_work *dwork, unsigned long delay) diff --git a/include/linux/mlx5/fs.h b/include/linux/mlx5/fs.h index ba6958b49a8e..90a2fe5839fa 100644 --- a/include/linux/mlx5/fs.h +++ b/include/linux/mlx5/fs.h @@ -296,6 +296,8 @@ int mlx5_modify_rule_destination(struct mlx5_flow_handle *handler, u64 mlx5_fc_query_lastuse(struct mlx5_fc *counter); void mlx5_fc_query_cached(struct mlx5_fc *counter, u64 *bytes, u64 *packets, u64 *lastuse); +void mlx5_fc_query_cached_raw(struct mlx5_fc *counter, + u64 *bytes, u64 *packets, u64 *lastuse); int mlx5_fc_query(struct mlx5_core_dev *dev, struct mlx5_fc *counter, u64 *packets, u64 *bytes); u32 mlx5_fc_id(struct mlx5_fc *counter);