From nobody Mon Dec 1 22:07:30 2025 Received: from BL0PR03CU003.outbound.protection.outlook.com (mail-eastusazon11012018.outbound.protection.outlook.com [52.101.53.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 085AF14F125; Sun, 30 Nov 2025 09:21:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.53.18 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764494480; cv=fail; b=GZZyu6RI/eh0KyAs2j/mDCxgKfjowLuObv3dn+OsbBPYghmJAGrXoNkEvS3OvYbFin1fq0haj/aHXPJP6UrWBT00yTRTIkaRPRwF3+4obVyuw8aJNPWCdgmlt5NB3sPUVkB9K87nm6PWLSNTTLYiczRyi0c9ZJqZnKwBkW+CXXw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764494480; c=relaxed/simple; bh=wYVrQBRnPixKwqNTb7NSZOC6N9hZ1PbdFcv3tv7R3sI=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=j/XfmEqWhTmWfwB9OrDvyWyBr8wsJ/mBq1vjRCliJTB0D0udbhljXNpy2iaW98ogv2IDv0a2Dg0oham4RnXZgB+HmvDI+d5cYbcxOB1Gl+NHPjCRuUjuG/UImUzZKNAZuzVzOaJzW8YRUnAus/C1LCPtJtFHuoWz5JwDZoFI88o= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=lbRXZhUU; arc=fail smtp.client-ip=52.101.53.18 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="lbRXZhUU" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=O9AcR0tTA2MxgmpFbYS8qf23ekz1RxWnPiMvC1amfxRZpcIWiWTGped7SiSLgsd2RBU9nPEgnIBFyYY1grPfi3XDan6wB/6v1LaodOsWgPytyEB7OmrwB+8XmZKm8zWAf4VRgRQUieP7mrCQoyCPS4F0rcRech+PnqYO3lxAklIRNzWIk6FBl+u92vUwG+ExCmAFTGHpdN/hHhEwEXqtf/DuecX8SgAN+0te2jA5d9TmbKFHzscLGy1sMdstKWfr59FX9daXC+p6M5rV+paw2xb+Pwmzdz5Lq5JwwCwv3qRhbKTesrotsZXVA9ksXWRSc3GiqK/Oy00xZC5YHl5+lQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=L//Zt8VVRQBeKMmfozwYyRj/Cql+0z8sq+4Ro6NbEDk=; b=BrdHugmVIXxu4z3Ir2WqYUIy24xGZRQXoeQBNOXjfUnetZF/Rg8wRzY5dqz0KNVHQO9hSxRizvIg6S9L1l4XjBcpB0EZvZHzk0vgh78X2F29HV2dXPuJS6jVkypZULFijCls2WUHrLU0yh9a25QkcQiHiur2WpUe8dzqfKwsFr2MtP3etWaUrY0r5qEl2ycMqpApie3464LDNo80jK1y0E2YLuNVAOS63/iWtD6CikBMENTQ0l5pWciS+6dUZ8lGLcrJzmBIHYU5H0wIlFnkFIF50KC+WJcu7k6Kz0tiQBjuA3O9Ht2s9a2H32B2ON+7KkfittcvrknQ5Xl/8en/4g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.118.233) smtp.rcpttodomain=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 (0) 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=L//Zt8VVRQBeKMmfozwYyRj/Cql+0z8sq+4Ro6NbEDk=; b=lbRXZhUUAtMLJB4TDQ8bz4FmndoFUSHN2EqKJ1thUMfzTsEAJRc4KsExdKyr/Lnck3oQQeX844ygl5QxvVJFxGE7SPx0hcpGU9H1o2rkl0eUmkcuE0g7jq74rNPVvNb/wUEIsO8Hx9TVjeb2r6viXgIIyTIs0CY5qSOyUeKHDcXFXO0sNQJGJZYZ60TtKgpaVAzb+CmsGtEim0RiEJzIYatw8Y1H5qtiA53UGEQPq/UvZFgYxatI/AJ7Gdg4ZkLMs+cpcJNatDNn5GufcLe0NRXcrl5cRbpkBkNCYm6aD11i5rd4+LOVemX+UYczv3/jjD2pwgWZqn8iTEzN2vCFsg== Received: from BYAPR11CA0055.namprd11.prod.outlook.com (2603:10b6:a03:80::32) by CH1PPF711010B62.namprd12.prod.outlook.com (2603:10b6:61f:fc00::614) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9366.17; Sun, 30 Nov 2025 09:21:13 +0000 Received: from SJ5PEPF000001CC.namprd05.prod.outlook.com (2603:10b6:a03:80:cafe::84) by BYAPR11CA0055.outlook.office365.com (2603:10b6:a03:80::32) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9366.17 via Frontend Transport; Sun, 30 Nov 2025 09:21:09 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.118.233) 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.118.233 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.118.233; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.118.233) by SJ5PEPF000001CC.mail.protection.outlook.com (10.167.242.41) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9388.8 via Frontend Transport; Sun, 30 Nov 2025 09:21:12 +0000 Received: from drhqmail201.nvidia.com (10.126.190.180) by mail.nvidia.com (10.127.129.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Sun, 30 Nov 2025 01:21:04 -0800 Received: from drhqmail202.nvidia.com (10.126.190.181) by drhqmail201.nvidia.com (10.126.190.180) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Sun, 30 Nov 2025 01:21:04 -0800 Received: from fedora.mtl.labs.mlnx (10.127.8.11) by mail.nvidia.com (10.126.190.181) with Microsoft SMTP Server id 15.2.2562.20 via Frontend Transport; Sun, 30 Nov 2025 01:21:00 -0800 From: Carolina Jubran To: Shuah Khan , Andrew Lunn , "David S . Miller" , Eric Dumazet , "Jakub Kicinski" , Paolo Abeni CC: Gal Pressman , Tariq Toukan , "Cosmin Ratiu" , Nimrod Oren , Mark Bloch , , , Subject: [PATCH net-next V3 1/6] selftests: drv-net: Add devlink_rate_tc_bw.py to TEST_PROGS Date: Sun, 30 Nov 2025 11:19:33 +0200 Message-ID: <20251130091938.4109055-2-cjubran@nvidia.com> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20251130091938.4109055-1-cjubran@nvidia.com> References: <20251130091938.4109055-1-cjubran@nvidia.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ5PEPF000001CC:EE_|CH1PPF711010B62:EE_ X-MS-Office365-Filtering-Correlation-Id: be65003c-7773-4fb1-2864-08de2ff1ce6e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|82310400026|36860700013|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?t7G4PheqTRrYYNFJmGRSjFOiEs8iJVp+UeUWAn7HuWwohrEWn586gKETuxEo?= =?us-ascii?Q?jAMOO5rVK68u4ZI4SZpyuYH03+cSE14izcr/JXDpmcgFMgRNR3pOtIa6eZDa?= =?us-ascii?Q?droQs9kIhQR/ElXYmmTsexcan3wx0Ovj8SXJCxIizqyxNsX3zXbZ0luLIvwA?= =?us-ascii?Q?SvZ8DTmGKBQripYVB/1tCgm8kL1dWCvtUk4v1qdsyPCtgAlwVgbNySmMKfgg?= =?us-ascii?Q?l67co9fHK61qSW4xbDq+2JWGGGBhvOREp6tmFooNNIdd4qZkf0pLCulHrZCC?= =?us-ascii?Q?7LDsufUQ6KypJOap/mj8QWPuqwTeHDdzFUW0EJ5ICIYPZjJeXVojsZOA31qS?= =?us-ascii?Q?BPI4x0RUD0qzjeln1HBRpTBkDG16FiCU4WI+YAUobHzpwgoWgy2I9EtkFSWy?= =?us-ascii?Q?WqNTKOhA6fGSFEnMuWH3/O/nWaKAmeYGqqj5GStztnuW4pG+imquIFtka0VQ?= =?us-ascii?Q?kbtA5sn1Kh0T3QW9WhnWze/5qNisYTDhRYGUGaB9YLXxMC4YILxnLnIqF473?= =?us-ascii?Q?do3BcQ9fK3PQUFmMOmJ5ZKRnA8iPho3NCMl1eL6uWQQ7qOtV8f0nkH3LU+T/?= =?us-ascii?Q?ZwXU+6LbGhpn5T5X5cWuPCnOoxdiiDopIf5C9id7kvt/m1pqnKdxJXcOKktx?= =?us-ascii?Q?TuvLDoyf+TztRQJRpkpq6AG1Ml5FXqQr/FpFZzvf7r0PWNN6tk1iNtBJb/uT?= =?us-ascii?Q?5gmtw5ZH1fC+qOMmJdko7VuRJZcTP347w9CG2HpyNutt9ob9RQMNN21NpBqi?= =?us-ascii?Q?t9MwKE9bV3oXJ66kxEpjRwqX1DXDkyInA/uN42i8p8/JYIJJfkRlgHDFEKHo?= =?us-ascii?Q?2C5f+XWbrWuahSfZvt/ugPdPZ5uTGBYg8QS+RaYsdFRzSx8EUOr092n6YUyT?= =?us-ascii?Q?A700lzgJUPtpRJ+kAj2GoPAoBhSxesreOp5w0zV6jLILAj6tTIInJQfOV16p?= =?us-ascii?Q?jF19jys95/+t7+HZX2XpfbnB7fINZYCsSYysXEmmeG97QdVI8SyX37l3Wm1P?= =?us-ascii?Q?tkRE+fH27uH3r7WX3uYb++csKzw73RB4tULRMtjWzCpqTKG8iwdX0JA1sy4l?= =?us-ascii?Q?vjNSxj/59JcVUzcsIIgoF/80JZKTrZRWQLYUurAP7wpilCTP8Pe8olmJ6+cs?= =?us-ascii?Q?zkJuJDjK4bOlYiKLWkLL5Xxj0axQQgHdkv+QzzxdMWJ741WpN9FkAYhCq4qT?= =?us-ascii?Q?vKb1/E2u26XJs9fHUT/+cEjnyX60Ne1LzatHkGoEXX1Q3wyDALFCJ2jgtRf4?= =?us-ascii?Q?za7tHX+hH5B5F79ih/kyZqmT9DMq6VVXg9OPV5uhNMWmRuhnKFqpbA1S2nkT?= =?us-ascii?Q?gaZEPwSk0Lune3ymudYuDtkEl2qnz3X5jczXYlZyjGXrfprznAFaVT0qnwSE?= =?us-ascii?Q?/ihtdKVgXLPAJGh6w4gR4yBt9UallvDJuLWOrQWBCW1CS1Y8qWZ3fplnSykW?= =?us-ascii?Q?BbeAYVDoYA9aF/YpkMA8jz/Hs9tjTCjqwAR7D7e9Tyy4LGxjLHcaQ/B8bMQW?= =?us-ascii?Q?wRkWDoUldLZbsDjwwoSdqSFUNpVIJ3fKbDCe7YTb/+AQQc3dNun5Jf0fBv5J?= =?us-ascii?Q?aI7lOHpHevctrNm4VaU=3D?= X-Forefront-Antispam-Report: CIP:216.228.118.233;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc7edge2.nvidia.com;CAT:NONE;SFS:(13230040)(376014)(82310400026)(36860700013)(1800799024);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Nov 2025 09:21:12.9996 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: be65003c-7773-4fb1-2864-08de2ff1ce6e X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.118.233];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: SJ5PEPF000001CC.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH1PPF711010B62 Content-Type: text/plain; charset="utf-8" This makes devlink_rate_tc_bw.py present in the Makefile under the same directory. Signed-off-by: Carolina Jubran Reviewed-by: Cosmin Ratiu Reviewed-by: Nimrod Oren --- tools/testing/selftests/drivers/net/hw/Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/testing/selftests/drivers/net/hw/Makefile b/tools/testin= g/selftests/drivers/net/hw/Makefile index 1760238e9d4f..9cfb61eb0b98 100644 --- a/tools/testing/selftests/drivers/net/hw/Makefile +++ b/tools/testing/selftests/drivers/net/hw/Makefile @@ -8,6 +8,7 @@ TEST_GEN_FILES :=3D \ TEST_PROGS =3D \ csum.py \ devlink_port_split.py \ + devlink_rate_tc_bw.py \ devmem.py \ ethtool.sh \ ethtool_extended_state.sh \ --=20 2.38.1 From nobody Mon Dec 1 22:07:30 2025 Received: from SJ2PR03CU001.outbound.protection.outlook.com (mail-westusazon11012019.outbound.protection.outlook.com [52.101.43.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BB6662773F0; Sun, 30 Nov 2025 09:21:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.43.19 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764494482; cv=fail; b=qurlkeeM5GMLhEcdeKPSIfxdj4kq0ZUFen+/SD3w44Qrr0uRc/Rcb3ITVJidiPadOquWT67DY3amcuTuzg7CFoakXmpoQvVJk+1EIe0nx5hR+4Bu4b1DNvcbJFpQe6eNXizJbOe3ZeR1QU2kfojmgD6IDkakX3lW+v8U3+cJ3s8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764494482; c=relaxed/simple; bh=C0ublNI2iZD55dLt5usQ7u5Y6z0X8SlSPeFp/VC8pHo=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=hYwGG02wn1DB1zFQRfzeoy2RP12sw3UsWcxivrJRJB0cSEC2m7PXcYzsPxxKT+A3+Vcwg8LoXqSj1pkhKBKLjiN7Q+oeZRL6G2z4NquHt2GH+WXWx8wwSPGNyGjTid3lrpebDKZHRYcqUuDg4WIsQ4svznWtJYg5FnRoa4NW+9s= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=Td63C/zX; arc=fail smtp.client-ip=52.101.43.19 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="Td63C/zX" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=CJIiOBYPD4gurIBcCMO3KfYg+4DGjkq/Lr7pbaTLeXdx1ryHxzJS0QuQFfcuJTQ6VcDfEIsBAMa3nGa2T3oT38WXPf53D9udmtH1ivw9mV+4hqDYWzeNyqX1VDuwSCEFYdtSDUyLjtQHXl198m15AicoCLoGgRBcJOSd1UwJJrZVMJ4yF2rGaAi4N6pcVNX6VJLRg933rVx+yMWuiWePEgKNaDsR5R9zr1XBY5y/dYf7sfSmSzBy6K0zwOv79MqIAIL4IHbbmW+nd1U3Ka7q6NrnnhL/uJWCLzKM+Gc0jKUQiWH4UgHulCUManBNCplAt2O3pl6yMI7CpRQ838m0eg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=9HjVY2dx/pUP07YBrQlmsjKB9ObKbShVadQdBUMwTs8=; b=n24WEBj428O2yXm4Ds+ci6ZC376iv4SW7aEPHGzelrE+rTyb/7MrEP/Tps6oBiFBPxpfY9ii/9tXxVvFei3xXbqwH6p3JqVk21XMUZVmTR0kPBWnfISurC041djBL/iMBjsC0vATg6h9wkpUWPIUU7sS4v3E0FSjh5I67pZvjW3w8sehYDxsI9EjjNL8nJHgmLgntgTcSPlgVIM+jGP1GYsYPMl/lKE8nYpt1ZJhZwDbWsDuunKbqIqV2NbjeOE+0ehAtaFKs0f8j1bTZNdCW6VjyZkG4RbvZ6WpvFZ2LzyInbN6wv7z+cbpYQHZb5u47BAKkXXf+O05FNm+RjvnMQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.118.232) smtp.rcpttodomain=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 (0) 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=9HjVY2dx/pUP07YBrQlmsjKB9ObKbShVadQdBUMwTs8=; b=Td63C/zX76e+kmvkvdA/CzRGFw3Aefem/I6GXMYMc0pbwNkyqDYt5I9x5gSOa5UO/qrVJw9Syug9Myw/roJk6W9OeYElHY3SwaXKaLwAO3tjXhsEddkfpwjl5dwGgxrByPRL/9MuiXOTXWEm6/FigP20kz9JHe9Wk7bv66bf39UTlAdsnTNCGvn8jJsjBQ5Unb400Qjn8pNf/pbgiOx7tZGyn5PwSQiwVbn6B011PUz/dJNCrJJUIpwHgTVrOjPeQpprvjpw/XXJVB/1l2mRtkf1usTaonJBKGbRPeOs/gAQ9SfsRMYHqy/Zhz9NrpoL3rL5i7+4odyF6P1LW2mgKg== Received: from SJ0PR13CA0080.namprd13.prod.outlook.com (2603:10b6:a03:2c4::25) by SJ5PPFEB07C8E34.namprd12.prod.outlook.com (2603:10b6:a0f:fc02::9a8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9366.17; Sun, 30 Nov 2025 09:21:16 +0000 Received: from SJ1PEPF00001CEB.namprd03.prod.outlook.com (2603:10b6:a03:2c4:cafe::b2) by SJ0PR13CA0080.outlook.office365.com (2603:10b6:a03:2c4::25) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9388.9 via Frontend Transport; Sun, 30 Nov 2025 09:21:09 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.118.232) 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.118.232 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.118.232; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.118.232) by SJ1PEPF00001CEB.mail.protection.outlook.com (10.167.242.27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9388.8 via Frontend Transport; Sun, 30 Nov 2025 09:21:16 +0000 Received: from drhqmail201.nvidia.com (10.126.190.180) by mail.nvidia.com (10.127.129.5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Sun, 30 Nov 2025 01:21:09 -0800 Received: from drhqmail202.nvidia.com (10.126.190.181) by drhqmail201.nvidia.com (10.126.190.180) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Sun, 30 Nov 2025 01:21:09 -0800 Received: from fedora.mtl.labs.mlnx (10.127.8.11) by mail.nvidia.com (10.126.190.181) with Microsoft SMTP Server id 15.2.2562.20 via Frontend Transport; Sun, 30 Nov 2025 01:21:05 -0800 From: Carolina Jubran To: Shuah Khan , Andrew Lunn , "David S . Miller" , Eric Dumazet , "Jakub Kicinski" , Paolo Abeni CC: Gal Pressman , Tariq Toukan , "Cosmin Ratiu" , Nimrod Oren , Mark Bloch , , , Subject: [PATCH net-next V3 2/6] selftests: drv-net: introduce Iperf3Runner for measurement use cases Date: Sun, 30 Nov 2025 11:19:34 +0200 Message-ID: <20251130091938.4109055-3-cjubran@nvidia.com> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20251130091938.4109055-1-cjubran@nvidia.com> References: <20251130091938.4109055-1-cjubran@nvidia.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ1PEPF00001CEB:EE_|SJ5PPFEB07C8E34:EE_ X-MS-Office365-Filtering-Correlation-Id: ef2c71ba-7d5c-4c9d-707b-08de2ff1d042 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|36860700013|1800799024|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?Y+4sCNNgpH1hMSHS7q7EHCD6xRMvcTfuAFrZ58e1txlaWV2kf9RNRqtOspq/?= =?us-ascii?Q?4Cfl30e3Q7o2pQQ5c1YhnMjIDEkf0SioUz0UwX9P42wW6i4COMHphQC5odds?= =?us-ascii?Q?Tti/wViyH+MJNvVDerLn3QrY9gSI7d0Tk1MRZAZVtXbHZTsOKWu8ZAV52SFW?= =?us-ascii?Q?XET+D2iC2yX2Q6m+av/DLGGOrBYuCbMA38v0zELD7Zw3CoFJ/swk/gfkChPG?= =?us-ascii?Q?B94b/rNkgEz3fxtbjTU4qgWzws7h4oN+/ZAwZrDkaZ4QtNnhleNAD9ubmfSZ?= =?us-ascii?Q?VvnQvJFaDpkgssldbhNpHYLMaviQhoi3RbZjf1ZuSFeT95s5AWxvvJt9Xe9V?= =?us-ascii?Q?DswiKyhbVp73HmoaS0csK3pmkxFMOeag0OwK7BbRVJbwA7qnnicaEFh9wktz?= =?us-ascii?Q?tWdrVpsvdoxPEvn1rgdbDYk56ILcywHjX6njPNh3C8dZUT5SxyNXsiJOSWgo?= =?us-ascii?Q?ilx8OcCDJcnXXWqr0bgXr8X7aiBN40JG+XBWUPqvRaJWZuWgtodLzVSh2By8?= =?us-ascii?Q?VgsN8rsrbPodTJ4B13Fv8OJm6b3plbtU686agn4cy5gXJJdqEztaPIXHeEWi?= =?us-ascii?Q?Q2kjuImVyi4Sm9EtSf8zHP0mjwHVu61KJ4U2j7xLQLCXFcaT7kGtbWP5NiOX?= =?us-ascii?Q?Jt84bg0LaONKnHFBBHK9folSnBfu4hNmacU8qG5Joh35J67TSENPJdoPtkEr?= =?us-ascii?Q?MPHkoQu3vnJi38pGtW6KRpbD2ncPqgvpiWW8s3TnCh6Bgkz9vCgz6qKoXCse?= =?us-ascii?Q?CGZPkaXGh/uL0U99dEVEQIQolr6Rzk55ct8jAwJ/qRf4h7BnH/qPnaXsvWZS?= =?us-ascii?Q?9MyMOCEEYvswgAYCiJNIvcsvU/NlW4JfO04eJovR/Q8TazvroviDn9Tf4UNb?= =?us-ascii?Q?bi9sDUTMYIsvWjvLzSx0gmbIT1jxxgCl681XtUQLPNcaGfHuB9KAPoaMmV1z?= =?us-ascii?Q?3MiSNyMBaB1EUiFW0Q2NDLCa63reLNF4kLUDPM4G6LuIampUiCIBLkm2BS6I?= =?us-ascii?Q?QI4YpLYsgGN4t8b5QHjPcAiBDqrCkScuofOWszlJrsU4WAAJegkz65Q9BKdo?= =?us-ascii?Q?k/EzZBACTdko6oJ2EYjoT2rWK6/8/OI8exVLoFBkSwu7wRxgpLMw64vM2IPA?= =?us-ascii?Q?Fl5yQm4t5zqo3JYLQtAxWhmArUh0i8xioQ/4ao0EbiWgZVjEik3H9C3VD+gI?= =?us-ascii?Q?kaiEZbPs6jKesmeoaAT0JxQe88f93h5Ed1PHgub9nqH+jDmakTPmNpVNScWS?= =?us-ascii?Q?MTI0oPkhaUAlt8boJ7CKV5oSxtMCLucwJr9KxsaG1Ea1QHzl3YO8fuh36x+Q?= =?us-ascii?Q?RdbJbT1Jvfok4AySJDQET9qsFicoe+V0IzB7ZvXspj6qCG0Ft8sc/bb+cg+M?= =?us-ascii?Q?M5KJiUSIMMWB+f3Vht+pe07mvRKccS6N7vNmnBYylMRuHLqWr9Ekm2xUZ6rE?= =?us-ascii?Q?VAJ95SggeuUv9vlkJ2NFWjiW0SkEO3NJ5RsS9rl4FuDtSnqSS/7W8FQsuyH6?= =?us-ascii?Q?//LjLFK8CoztlXXghi+YXGwKDFSrfRMTrVve4LvILU/2+lifz0d9VRSuF0fe?= =?us-ascii?Q?IqBz242oNoBgAcNnwdA=3D?= X-Forefront-Antispam-Report: CIP:216.228.118.232;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc7edge1.nvidia.com;CAT:NONE;SFS:(13230040)(82310400026)(36860700013)(1800799024)(376014);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Nov 2025 09:21:16.0655 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ef2c71ba-7d5c-4c9d-707b-08de2ff1d042 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.118.232];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: SJ1PEPF00001CEB.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ5PPFEB07C8E34 Content-Type: text/plain; charset="utf-8" GenerateTraffic was added to spin up long-running iperf3 load, mainly to drive high PPS background traffic. It was never meant to provide stable throughput numbers, and trying to repurpose it for measurement does not make sense. Introduce Iperf3Runner to allow tests to split out server/client configuration, control start/stop, and collect JSON output for analysis. This makes it possible to measure bandwidth directly when validating egress shaping. GenerateTraffic stays as the background load generator, reusing the common iperf3 helpers under the hood. Signed-off-by: Carolina Jubran Reviewed-by: Cosmin Ratiu Reviewed-by: Nimrod Oren --- .../drivers/net/hw/lib/py/__init__.py | 5 +- .../selftests/drivers/net/lib/py/__init__.py | 5 +- .../selftests/drivers/net/lib/py/load.py | 84 +++++++++++++++++-- 3 files changed, 82 insertions(+), 12 deletions(-) diff --git a/tools/testing/selftests/drivers/net/hw/lib/py/__init__.py b/to= ols/testing/selftests/drivers/net/hw/lib/py/__init__.py index 0c61debf86fb..766bfc4ad842 100644 --- a/tools/testing/selftests/drivers/net/hw/lib/py/__init__.py +++ b/tools/testing/selftests/drivers/net/hw/lib/py/__init__.py @@ -28,7 +28,7 @@ try: ksft_setup, ksft_variants, KsftNamedVariant from net.lib.py import ksft_eq, ksft_ge, ksft_in, ksft_is, ksft_lt, \ ksft_ne, ksft_not_in, ksft_raises, ksft_true, ksft_gt, ksft_not_no= ne - from drivers.net.lib.py import GenerateTraffic, Remote + from drivers.net.lib.py import GenerateTraffic, Remote, Iperf3Runner from drivers.net.lib.py import NetDrvEnv, NetDrvEpEnv =20 __all__ =3D ["NetNS", "NetNSEnter", "NetdevSimDev", @@ -44,7 +44,8 @@ try: "ksft_eq", "ksft_ge", "ksft_in", "ksft_is", "ksft_lt", "ksft_ne", "ksft_not_in", "ksft_raises", "ksft_true", "ksft= _gt", "ksft_not_none", "ksft_not_none", - "NetDrvEnv", "NetDrvEpEnv", "GenerateTraffic", "Remote"] + "NetDrvEnv", "NetDrvEpEnv", "GenerateTraffic", "Remote", + "Iperf3Runner"] except ModuleNotFoundError as e: print("Failed importing `net` library from kernel sources") print(str(e)) diff --git a/tools/testing/selftests/drivers/net/lib/py/__init__.py b/tools= /testing/selftests/drivers/net/lib/py/__init__.py index d9d035634a31..8b75faa9af6d 100644 --- a/tools/testing/selftests/drivers/net/lib/py/__init__.py +++ b/tools/testing/selftests/drivers/net/lib/py/__init__.py @@ -44,10 +44,11 @@ try: "ksft_not_none", "ksft_not_none"] =20 from .env import NetDrvEnv, NetDrvEpEnv - from .load import GenerateTraffic + from .load import GenerateTraffic, Iperf3Runner from .remote import Remote =20 - __all__ +=3D ["NetDrvEnv", "NetDrvEpEnv", "GenerateTraffic", "Remote"] + __all__ +=3D ["NetDrvEnv", "NetDrvEpEnv", "GenerateTraffic", "Remote", + "Iperf3Runner"] except ModuleNotFoundError as e: print("Failed importing `net` library from kernel sources") print(str(e)) diff --git a/tools/testing/selftests/drivers/net/lib/py/load.py b/tools/tes= ting/selftests/drivers/net/lib/py/load.py index c4e808407cc4..f181fa2d38fc 100644 --- a/tools/testing/selftests/drivers/net/lib/py/load.py +++ b/tools/testing/selftests/drivers/net/lib/py/load.py @@ -2,21 +2,89 @@ =20 import re import time +import json =20 from lib.py import ksft_pr, cmd, ip, rand_port, wait_port_listen =20 -class GenerateTraffic: - def __init__(self, env, port=3DNone): - env.require_cmd("iperf3", local=3DTrue, remote=3DTrue) =20 +class Iperf3Runner: + """ + Sets up and runs iperf3 traffic. + """ + def __init__(self, env, port=3DNone, server_ip=3DNone, client_ip=3DNon= e): + env.require_cmd("iperf3", local=3DTrue, remote=3DTrue) self.env =3D env - self.port =3D rand_port() if port is None else port - self._iperf_server =3D cmd(f"iperf3 -s -1 -p {self.port}", backgro= und=3DTrue) + self.server_ip =3D server_ip + self.client_ip =3D client_ip + + def _build_server(self): + cmdline =3D f"iperf3 -s -1 -p {self.port}" + if self.server_ip: + cmdline +=3D f" -B {self.server_ip}" + return cmdline + + def _build_client(self, streams, duration, reverse): + host =3D self.env.addr if self.server_ip is None else self.server_= ip + cmdline =3D f"iperf3 -c {host} -p {self.port} -P {streams} -t {dur= ation} -J" + if self.client_ip: + cmdline +=3D f" -B {self.client_ip}" + if reverse: + cmdline +=3D " --reverse" + return cmdline + + def start_server(self): + """ + Starts an iperf3 server with optional bind IP. + """ + cmdline =3D self._build_server() + proc =3D cmd(cmdline, background=3DTrue) wait_port_listen(self.port) time.sleep(0.1) - self._iperf_client =3D cmd(f"iperf3 -c {env.addr} -P 16 -p {self.p= ort} -t 86400", - background=3DTrue, host=3Denv.remote) + return proc + + def start_client(self, background=3DFalse, streams=3D1, duration=3D10,= reverse=3DFalse): + """ + Starts the iperf3 client with the configured options. + """ + cmdline =3D self._build_client(streams, duration, reverse) + return cmd(cmdline, background=3Dbackground, host=3Dself.env.remot= e) + + def measure_bandwidth(self, reverse=3DFalse): + """ + Runs an iperf3 measurement and returns the average bandwidth (Gbps= ). + Discards the first and last few reporting intervals and uses only = the + middle part of the run where throughput is typically stable. + """ + self.start_server() + result =3D self.start_client(duration=3D10, reverse=3Dreverse) + + if result.ret !=3D 0: + raise RuntimeError("iperf3 failed to run successfully") + try: + out =3D json.loads(result.stdout) + except json.JSONDecodeError as exc: + raise ValueError("Failed to parse iperf3 JSON output") from exc + + intervals =3D out.get("intervals", []) + samples =3D [i["sum"]["bits_per_second"] / 1e9 for i in intervals] + if len(samples) < 10: + raise ValueError(f"iperf3 returned too few intervals: {len(sam= ples)}") + # Discard potentially unstable first and last 3 seconds. + stable =3D samples[3:-3] + + avg =3D sum(stable) / len(stable) + + return avg + + +class GenerateTraffic: + def __init__(self, env, port=3DNone): + self.env =3D env + self.runner =3D Iperf3Runner(env, port) + + self._iperf_server =3D self.runner.start_server() + self._iperf_client =3D self.runner.start_client(background=3DTrue,= streams=3D16, duration=3D86400) =20 # Wait for traffic to ramp up if not self._wait_pkts(pps=3D1000): @@ -61,7 +129,7 @@ class GenerateTraffic: def _wait_client_stopped(self, sleep=3D0.005, timeout=3D5): end =3D time.monotonic() + timeout =20 - live_port_pattern =3D re.compile(fr":{self.port:04X} 0[^6] ") + live_port_pattern =3D re.compile(fr":{self.runner.port:04X} 0[^6] = ") =20 while time.monotonic() < end: data =3D cmd("cat /proc/net/tcp*", host=3Dself.env.remote).std= out --=20 2.38.1 From nobody Mon Dec 1 22:07:30 2025 Received: from MW6PR02CU001.outbound.protection.outlook.com (mail-westus2azon11012004.outbound.protection.outlook.com [52.101.48.4]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 532BC27B340; Sun, 30 Nov 2025 09:21:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.48.4 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764494486; cv=fail; b=cJfXUqruwmrckk7tqKGggGU5lXWeBYFUKHHBTg8qTDFdGv7xVCYSXoW1ibzg9hr2d7w6pzfJzxtK4GzJEBM4ZFA+ixdTERTeDbD9uBbFEz8CFC6kXbx9rKTjD6QPzykXEWTk4femE3BAbVKib5GdPBrDL/a9IzJ8ZCpXTd+vHtU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764494486; c=relaxed/simple; bh=drT1rIru+T7/fNd1M/aw6ApSKOdseqZFQf53VY+hx5A=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=u07EbViPN0AVroVnfejdo1WeMAY6mL6xpCAQwERYU9GkuZKkKKuaoD5xSUC6+/F9vLBRGUhbc8Did8lnYqZqg42jcLbufAeydzJW+Hu9ehrD+16GDtliBDOORUT6vrJGMNnEEZXXd8TKzQhcNd7B090o6rnIlI+oRg8lQ633VaE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=WruGI782; arc=fail smtp.client-ip=52.101.48.4 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="WruGI782" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=CyYrQWcASHTNAW3wDRG8HdN0KNYvhAMDGfUas0jTI25VBgPaBlAdowdaz0daOa2SrKvDUyhm7byy4WaougOrQDLJUTUTfV3ddy1b1UDqrUOFHrvPUYSzyTUdhlbGR5Hp+Yk1++Gw8Dap87rmQX6wNvxj3i6+oO0ScSL2PXJesRITamcI7f3l0PtMKJxylyiVarYWi37f+ZGkDGf+DezTxWXd6Rh2Y5iixzsBTJSyzGnxwRTnW0AmKLGZBJmbDZqLQrCdiKmvpYjwyIec7jMHvjtDbV71JFUaukkqwkh6S9/sAigNo+UUqPFJnHEPVu1/NvX6vLwxRCACfu+NF40wEg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=JyiH2ugyRvz3ppOeMd6a8x/Ve8BkCuHcABvqxjVvZXs=; b=qETEGx8SGPE610Brgzg9HpkU11yrUZGAii3B/GkiUlfjZemtpAY8EilN+ZGH8zzbNguwn034g73Qq8nY0HvqogrV0fWp/uHa3l+899yjErqE1o6OmGR+li2m6z4N6lQMGktkVG3VkTVHG260jCdIwSfkBkhox2R3zrj/cvYlgHX9YZQsc6ltV5wQY4FEZFwLnr9Xns5hcd+vy8ZMGs4vtuizNyy9K1+l9Z5xS5N3u1x363RRQgGwFBJPBxcrx/mtttkE5mcsQDcfspW0rNy5BXyZ5ZGFE9WsXl61Llhdt3SCKFXm9g5T05TzqsFNUhRosAwZhAFTvbdvCPXYFZMJvg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.118.232) smtp.rcpttodomain=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 (0) 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=JyiH2ugyRvz3ppOeMd6a8x/Ve8BkCuHcABvqxjVvZXs=; b=WruGI782dvdqhKwE5BYfw4ShL/bMkYPkX2j6BEcXC5HsNKcxUAG45JgKCBr+HhPdR302idgm4wfbQAlRkU5QnDQfu2gsqLtJOOjY2hK3n6fV69JrGeQ3/l7hZxYLQmEMN6gEvswReGlsLbKLvtM99ZlFJRdb9Qw+PZUfpKZHQ93Cy75poA1MHnvkEY4OPCEMrOca808T8uZdtVPTMtPau+xRD1suVBYHb2gEAaMkPWo3xdJyaJICk28eigZRzk7Jl/41ka/5PAWfUk176rqohptG/VjgJfOLe3+ouWsmHfCnIpXDHEtr65K73C/Rm2rGbJf4HpX1jYTfogF+Mn8hCQ== Received: from SJ0PR05CA0095.namprd05.prod.outlook.com (2603:10b6:a03:334::10) by IA1PR12MB6114.namprd12.prod.outlook.com (2603:10b6:208:3ea::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9366.17; Sun, 30 Nov 2025 09:21:21 +0000 Received: from SJ1PEPF00001CE5.namprd03.prod.outlook.com (2603:10b6:a03:334:cafe::15) by SJ0PR05CA0095.outlook.office365.com (2603:10b6:a03:334::10) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9388.8 via Frontend Transport; Sun, 30 Nov 2025 09:21:21 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.118.232) 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.118.232 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.118.232; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.118.232) by SJ1PEPF00001CE5.mail.protection.outlook.com (10.167.242.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9388.8 via Frontend Transport; Sun, 30 Nov 2025 09:21:21 +0000 Received: from drhqmail203.nvidia.com (10.126.190.182) by mail.nvidia.com (10.127.129.5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Sun, 30 Nov 2025 01:21:14 -0800 Received: from drhqmail202.nvidia.com (10.126.190.181) by drhqmail203.nvidia.com (10.126.190.182) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Sun, 30 Nov 2025 01:21:13 -0800 Received: from fedora.mtl.labs.mlnx (10.127.8.11) by mail.nvidia.com (10.126.190.181) with Microsoft SMTP Server id 15.2.2562.20 via Frontend Transport; Sun, 30 Nov 2025 01:21:09 -0800 From: Carolina Jubran To: Shuah Khan , Andrew Lunn , "David S . Miller" , Eric Dumazet , "Jakub Kicinski" , Paolo Abeni CC: Gal Pressman , Tariq Toukan , "Cosmin Ratiu" , Nimrod Oren , Mark Bloch , , , Subject: [PATCH net-next V3 3/6] selftests: drv-net: Use Iperf3Runner in devlink_rate_tc_bw.py Date: Sun, 30 Nov 2025 11:19:35 +0200 Message-ID: <20251130091938.4109055-4-cjubran@nvidia.com> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20251130091938.4109055-1-cjubran@nvidia.com> References: <20251130091938.4109055-1-cjubran@nvidia.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ1PEPF00001CE5:EE_|IA1PR12MB6114:EE_ X-MS-Office365-Filtering-Correlation-Id: 9314dc6e-e109-4a5a-0564-08de2ff1d338 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|82310400026|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?utf-8?B?RksxazBhMU5ZbjN5K2gwMEgxT2tYaExQK083ZlY5R1dYYWVDRHNzTWp6ZFdC?= =?utf-8?B?U3hYNVJCODZwQmhqMlZEV2tNamNvY2ZndldRU3dLM3pGb2I5WVdvWDhjVVI5?= =?utf-8?B?VVlaZEZrdWdFQk0vQ0puS0FQVnJkZjFxdmtRYkNiVkpvcXJvem4yaXhTRDh4?= =?utf-8?B?SjE3c0E2QUlJWDlrUUFaQkVwb0ZJektOWTZjOEZUQ2d3eEEvMnhiNHlhQnZQ?= =?utf-8?B?Qk1nQTY2Q1gwN0dtZTlzVi9qaThSUk1CWEVVTTBBWnU1RUpoRE1YVHNMWEtJ?= =?utf-8?B?WUNhNkN0RSt1bTVPdU5LYlB6L1E2YkFxN2UyZTl3Z0tBRk9xM1VtRFJ2ZEg5?= =?utf-8?B?cEFLNDcyd3JaTW4wTW1VY0s5U0s5TytFaXlFSytNQnRta2tzRFd3SG1uUHVo?= =?utf-8?B?cmx3dWh0aURYUzVxTFBuOUV2QVpvZDV4by9jV013aWhBTWd5TEtUMkdhVFMv?= =?utf-8?B?ZFRDNFJaTFBycEtWMWljQ2V6ZkpVV0ZiUHM0c2pkbnRBcUJJeXMrWHVMMXZK?= =?utf-8?B?Ym1iNHpzUGdDT0hvZnludEZ5WVF6clBjTGFtbnNNdEcyN1BubnlhejQ1RWNm?= =?utf-8?B?Q3JzZVFsSHFUNWpoS2tZSHVWMUZ3bE5tQXdGVklEM2s0Q0lKQXpYMHZnZEJ4?= =?utf-8?B?NldCOURsdEg2RTc3dlNqSTRkeWJ2L2REQm52TkJLRG9zUWd2UUVGZTluL3dw?= =?utf-8?B?SGUwY1drSm82dUxyTVdjU1FaSTJtckIwakdxRGplUzR2RFZQNjZ2SFc0U1Zm?= =?utf-8?B?ZkwvbEIrK1RBYTBRbXhwZWVrVDRDTXZ5YnFIQ0VadzFHWXN6T3lPQ0lzdHZh?= =?utf-8?B?YlUxSjd3UkxQN0hhbUo2MWE1S0ZCQkQ0Y3UwbHJCVE96ckNsL29IL0xGc1Q3?= =?utf-8?B?TFhXdWpBWXUwRVkxdnNOUGl2cHpzOEJWL1EyM2lPTElsTXJiK2E0enUvMWNt?= =?utf-8?B?Tm5nL1pweFRUM1pxeGFYdCsxb2NJTkVVaDZZdXdEZUdoZDl1VXFHdzJ2WElT?= =?utf-8?B?a3lmQm45TnJramp0ZWNwc1NodU1waDZYSUQwbXpPejEvWTVmZmNlK2VwbDJp?= =?utf-8?B?RlpvMDAzSkgzdDc4czc0ZXEvQ1UzMGhrZEFCTXB6cmNOR3J5SldsdkdDZXNP?= =?utf-8?B?Qkh1MysrZU84QXdPLytNTGJ5RjVvL3c5WE05TlVDWDJ6MmJVV1lYN0xIaFRE?= =?utf-8?B?V0hhVjk1Tmk4NFNSeFNnWGs1RXpvdDEvci9GQWZpRUVMUFkvZ3hSSlJtaG16?= =?utf-8?B?SW5jZlNQSE9LTXo0TjVtUmZIOVozckF6eTR2TW11ZERkdkxIKytETTlJbzMy?= =?utf-8?B?bWpkQko4WlNsTHQ5a1djUWh6UERwaWdGM3hFOTIwc2hkV1ZETDZrejloNUFD?= =?utf-8?B?WmVUQ3k4cml4b2thTm44QUdVTVRjUFFaUUt4d3NGNWVzbm4xWmJSeHZWeWhm?= =?utf-8?B?MUpvSmlBVS91cit3bFB3RUJZVVVabUk0ZkE4THFEc0hEZERJcWZIajhpNkZI?= =?utf-8?B?dy84ckphWWNxV0c2ZTVMNDNnNTU3cGRLRTE4L1dWNDNTYUZwOXN1S3dCMGVa?= =?utf-8?B?bm82UVlkcHQrRUZwVVlpRnJCM2hJOGcxMkJVejNGdWc3aXpMSE5FVWRNanlR?= =?utf-8?B?WERtMXc4a2dQWGQ1MlVLMDNhRlBwOGgzQ3RaWmxsNU04K1BRMjRqSjJLczYx?= =?utf-8?B?YW5sOW1JMWpwc1c0TVlHeWxhbURnT0NrL3htN2duZVdsQklMODN1WGpQTmNn?= =?utf-8?B?Kzl3czl0dWhQVW9PVWE1WS9OS2VyTTdRYTJRU0ovbWxsd2VxVVN3alVTbkhC?= =?utf-8?B?Nk0xZ1ZCUGtPUWNjNmlQNFRuNy9pVW5pZEpNNFp6L09SSzF2MUdDM2NXYjZC?= =?utf-8?B?SXhDbG1BcmFRTjJrMngxbEVXblJBNVZ6Uy81T2VnMVNOWFN4L0RkYi91Ky8x?= =?utf-8?B?T0sxZGZEdXNzeDRROVkzcFNmTzBUQ0tqK2o3T1dTam42ZGpRa3Rvakg3cVB3?= =?utf-8?B?aW9HanFXSlBuWU8zQWI5cnJFNUlWVEpnYlJEa1Nib3BpN3dCaE9GbGNtUHM0?= =?utf-8?B?bTBXLy8rVDFhWlNXeUU3RkxqS0ppRDZSRW43S3dERlZselNsRWEzRE9tR0hR?= =?utf-8?Q?lVls=3D?= X-Forefront-Antispam-Report: CIP:216.228.118.232;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc7edge1.nvidia.com;CAT:NONE;SFS:(13230040)(36860700013)(82310400026)(376014)(1800799024);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Nov 2025 09:21:21.0303 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9314dc6e-e109-4a5a-0564-08de2ff1d338 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.118.232];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: SJ1PEPF00001CE5.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB6114 Replace the inline iperf3 subprocess and JSON parsing with Iperf3Runner. Signed-off-by: Carolina Jubran Reviewed-by: Cosmin Ratiu Reviewed-by: Nimrod Oren --- .../drivers/net/hw/devlink_rate_tc_bw.py | 70 ++++++++----------- 1 file changed, 29 insertions(+), 41 deletions(-) diff --git a/tools/testing/selftests/drivers/net/hw/devlink_rate_tc_bw.py b= /tools/testing/selftests/drivers/net/hw/devlink_rate_tc_bw.py index ead6784d1910..16e5dda5bee1 100755 --- a/tools/testing/selftests/drivers/net/hw/devlink_rate_tc_bw.py +++ b/tools/testing/selftests/drivers/net/hw/devlink_rate_tc_bw.py @@ -64,6 +64,7 @@ from lib.py import KsftSkipEx, KsftFailEx, KsftXfailEx from lib.py import NetDrvEpEnv, DevlinkFamily from lib.py import NlError from lib.py import cmd, defer, ethtool, ip +from lib.py import Iperf3Runner =20 =20 class BandwidthValidator: @@ -139,8 +140,8 @@ def setup_vlans_on_vf(vf_ifc): Sets up two VLAN interfaces on the given VF, each mapped to a differen= t TC. """ vlan_configs =3D [ - {"vlan_id": 101, "tc": 3, "ip": "198.51.100.2"}, - {"vlan_id": 102, "tc": 4, "ip": "198.51.100.10"}, + {"vlan_id": 101, "tc": 3, "ip": "198.51.100.1"}, + {"vlan_id": 102, "tc": 4, "ip": "198.51.100.9"}, ] =20 for config in vlan_configs: @@ -224,13 +225,13 @@ def setup_devlink_rate(cfg): raise KsftFailEx(f"rate_set failed on VF port {port_index}") from = exc =20 =20 -def setup_remote_server(cfg): +def setup_remote_vlans(cfg): """ - Sets up VLAN interfaces and starts iperf3 servers on the remote side. + Sets up VLAN interfaces on the remote side. """ remote_dev =3D cfg.remote_ifname vlan_ids =3D [101, 102] - remote_ips =3D ["198.51.100.1", "198.51.100.9"] + remote_ips =3D ["198.51.100.2", "198.51.100.10"] =20 for vlan_id, ip_addr in zip(vlan_ids, remote_ips): vlan_dev =3D f"{remote_dev}.{vlan_id}" @@ -238,14 +239,13 @@ def setup_remote_server(cfg): f"type vlan id {vlan_id}", host=3Dcfg.remote) cmd(f"ip addr add {ip_addr}/29 dev {vlan_dev}", host=3Dcfg.remote) cmd(f"ip link set dev {vlan_dev} up", host=3Dcfg.remote) - cmd(f"iperf3 -s -1 -B {ip_addr}",background=3DTrue, host=3Dcfg.rem= ote) defer(cmd, f"ip link del {vlan_dev}", host=3Dcfg.remote) =20 =20 def setup_test_environment(cfg, set_tc_mapping=3DTrue): """ Sets up the complete test environment including VF creation, VLANs, - bridge configuration, devlink rate setup, and the remote server. + bridge configuration and devlink rate setup. """ vf_ifc =3D setup_vf(cfg, set_tc_mapping) ksft_pr(f"Created VF interface: {vf_ifc}") @@ -256,51 +256,39 @@ def setup_test_environment(cfg, set_tc_mapping=3DTrue= ): setup_bridge(cfg) =20 setup_devlink_rate(cfg) - setup_remote_server(cfg) - time.sleep(2) + setup_remote_vlans(cfg) =20 =20 -def run_iperf_client(server_ip, local_ip, barrier, min_expected_gbps=3D0.1= ): +def measure_bandwidth(cfg, server_ip, client_ip, barrier): """ - Runs a single iperf3 client instance, binding to the given local IP. - Waits on a barrier to synchronize with other threads. + Synchronizes with peers and runs an iperf3-based bandwidth measurement + between the given endpoints. Returns average Gbps. """ + runner =3D Iperf3Runner(cfg, server_ip=3Dserver_ip, client_ip=3Dclient= _ip) try: barrier.wait(timeout=3D10) except Exception as exc: raise KsftFailEx("iperf3 barrier wait timed") from exc =20 - iperf_cmd =3D ["iperf3", "-c", server_ip, "-B", local_ip, "-J"] - result =3D subprocess.run(iperf_cmd, capture_output=3DTrue, text=3DTru= e, - check=3DTrue) - try: - output =3D json.loads(result.stdout) - bits_per_second =3D output["end"]["sum_received"]["bits_per_second= "] - gbps =3D bits_per_second / 1e9 - if gbps < min_expected_gbps: - ksft_pr( - f"iperf3 bandwidth too low: {gbps:.2f} Gbps " - f"(expected =E2=89=A5 {min_expected_gbps} Gbps)" - ) - return None - return gbps - except json.JSONDecodeError as exc: - ksft_pr(f"Failed to parse iperf3 JSON output: {exc}") - return None + bw_gbps =3D runner.measure_bandwidth(reverse=3DTrue) + except Exception as exc: + raise KsftFailEx("iperf3 bandwidth measurement failed") from exc =20 + return bw_gbps =20 -def run_bandwidth_test(): + +def run_bandwidth_test(cfg): """ - Launches iperf3 client threads for each VLAN/TC pair and collects resu= lts. + Runs parallel bandwidth measurements for each VLAN/TC pair and collect= s results. """ - def _run_iperf_client_thread(server_ip, local_ip, results, barrier, tc= _ix): - results[tc_ix] =3D run_iperf_client(server_ip, local_ip, barrier) + def _run_measure_bandwidth_thread(local_ip, remote_ip, results, barrie= r, tc_ix): + results[tc_ix] =3D measure_bandwidth(cfg, local_ip, remote_ip, bar= rier) =20 vf_vlan_data =3D [ # (local_ip, remote_ip, TC) - ("198.51.100.2", "198.51.100.1", 3), - ("198.51.100.10", "198.51.100.9", 4), + ("198.51.100.1", "198.51.100.2", 3), + ("198.51.100.9", "198.51.100.10", 4), ] =20 results =3D {} @@ -309,8 +297,8 @@ def run_bandwidth_test(): =20 for local_ip, remote_ip, tc_ix in vf_vlan_data: thread =3D threading.Thread( - target=3D_run_iperf_client_thread, - args=3D(remote_ip, local_ip, results, start_barrier, tc_ix) + target=3D_run_measure_bandwidth_thread, + args=3D(local_ip, remote_ip, results, start_barrier, tc_ix) ) thread.start() threads.append(thread) @@ -320,10 +308,11 @@ def run_bandwidth_test(): =20 for tc_ix, tc_bw in results.items(): if tc_bw is None: - raise KsftFailEx("iperf3 client failed; cannot evaluate bandwi= dth") + raise KsftFailEx("iperf3 failed; cannot evaluate bandwidth") =20 return results =20 + def calculate_bandwidth_percentages(results): """ Calculates the percentage of total bandwidth received by TC3 and TC4. @@ -398,10 +387,10 @@ def check_bandwidth_distribution(bw_data, validator): =20 def run_bandwidth_distribution_test(cfg, set_tc_mapping): """ - Runs parallel iperf3 tests for both TCs and collects results. + Runs parallel bandwidth measurements for both TCs and collects results. """ setup_test_environment(cfg, set_tc_mapping) - bandwidths =3D run_bandwidth_test() + bandwidths =3D run_bandwidth_test(cfg) bw_data =3D calculate_bandwidth_percentages(bandwidths) test_name =3D "with TC mapping" if set_tc_mapping else "without TC map= ping" print_bandwidth_results(bw_data, test_name) @@ -451,7 +440,6 @@ def main() -> None: ) if not cfg.pci: raise KsftSkipEx("Could not get PCI address of the interface") - cfg.require_cmd("iperf3", local=3DTrue, remote=3DTrue) =20 cfg.bw_validator =3D BandwidthValidator() =20 --=20 2.38.1 From nobody Mon Dec 1 22:07:30 2025 Received: from SJ2PR03CU001.outbound.protection.outlook.com (mail-westusazon11012014.outbound.protection.outlook.com [52.101.43.14]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9116127E1A1; Sun, 30 Nov 2025 09:21:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.43.14 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764494489; cv=fail; b=p/iSG0/+QPVENAxbmZK2PdwM/uPHk7fgULAnQSwFdT321N9Xjl0Hqhgs9KYnwK8bi24BbvqwNdcRnyCDBL8ZloXBSxxt6D4Ls8S3rgDuUzo3P57R27vQXwLVN8evVE23iqRn0RoeBgdlsgyifg3CQ73fgBxYQTem5yDvB6IZXlQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764494489; c=relaxed/simple; bh=sAa+ge9ku5HAJWp87AI2671Isqrhhf89raCiPccET40=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=E8hnDI2tr83FBtt/3dtdfz3B4Yqg8nTPSxyyydqpcbb3ILoY2D1DFpmBuXsOUlOe9LIvR843WtpgazCl6dHxsvh6rXl+cqi9jfnkd0CPArWlkqnJPQJ5oo+myxPAh1lbwkgOUuS0HO9h/74bnZVlc7Y9ck2xnFZSNLN2QlV58LQ= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=SlhSQG35; arc=fail smtp.client-ip=52.101.43.14 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="SlhSQG35" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=j9K4eFBLPOtXT+YpJeTLOXkCk+R5+jcKon61ZWM8L0ekZU0QcCyGRah4x1VXIspM6UbVsgxs/EZhIOJbQSXWLOJvMuTgzScIvtbSg3j1uZzlw/GdTZaVbdXPuRzOolXlmq1AcjPtibrg9SjlFCFrp0QZ6vOyceKFqLG2/Y2H17+q3iotRvcihO0LurCTi40mqnTVIy/cX66tjULL1MHv8g3IDK+EueaP//LlHm27Cgv5dGyQQupQQB5mJfvvw9OQp23RqqcQtw9QtnzdcRx8Favfmd8S2Y4z0A9logaljkZYwupZtJb2C+rgQYEIESXbMXbdrHdHvQa1EdVs1VIVkw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=TP0q6TIgJ9EjCNcc6wziUi9NikAkWlvNVdFxksGqn9Q=; b=u64vwqZyXDjOLXMIRjuk58BVNQe85CPWB40yKnbAU/rR4qPhhjdYjmqCZEa8ORTPvROTixiWshf82nMalJCAPUU7IcISNF85akXSZN7vqcAOu8WNL+7nEZ3jVpIvOt6/KZlK01FsfQyU8pUw6LcWEJNq8vlJ6Tu9seA4Ye4H0wSyNHU4qDLoZAMt0A95vAETeyNdR1j92Yju6PCgUXCWehQhHsfFiGPdN0qVtSqS0KzWioT3KwEdEf6ehcpeDO7hNE3hH7u5ItmrWD9Pmw2VYPyWznJweH/rDxRD3NaY41Ny5dtiYSApH5Oio8kHcK4rv1BtgGbI9ohDwunP57M4tg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.118.233) smtp.rcpttodomain=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 (0) 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=TP0q6TIgJ9EjCNcc6wziUi9NikAkWlvNVdFxksGqn9Q=; b=SlhSQG35emx9fWJtyU07SdKYXAaHYQj6LIWK27h8qCSB5F5sRY1SYggc8WmTn/KLoSprd1HWHoZl17FWDEUvNYznZLzNzLEYDrR/O690mXTAg0d2pbZQzkmVJJrzDVZn+TK24JAUml5vewNuATZK1nRp6jALZlYmXk0FyPkUOnNIsTosMhVd5xcO6tFrssvNUcbZRdZBXOKlOPQ8raJGtPheXHU7zuHSS4Ub0uKoXOam8vuqsxbChzPCnJByazLQP/Gtq4HpzFWoM/mkF4mSLxa/b1c0vjQwO36lBTzXnpFrYDiOLLL9Emit0/F8JczjqmtTHSSysOZjqgjzoYAmow== Received: from BYAPR11CA0072.namprd11.prod.outlook.com (2603:10b6:a03:80::49) by DM4PR12MB6445.namprd12.prod.outlook.com (2603:10b6:8:bd::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9366.17; Sun, 30 Nov 2025 09:21:23 +0000 Received: from SJ5PEPF000001CC.namprd05.prod.outlook.com (2603:10b6:a03:80:cafe::20) by BYAPR11CA0072.outlook.office365.com (2603:10b6:a03:80::49) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9366.17 via Frontend Transport; Sun, 30 Nov 2025 09:21:23 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.118.233) 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.118.233 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.118.233; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.118.233) by SJ5PEPF000001CC.mail.protection.outlook.com (10.167.242.41) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9388.8 via Frontend Transport; Sun, 30 Nov 2025 09:21:23 +0000 Received: from drhqmail203.nvidia.com (10.126.190.182) by mail.nvidia.com (10.127.129.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Sun, 30 Nov 2025 01:21:18 -0800 Received: from drhqmail202.nvidia.com (10.126.190.181) by drhqmail203.nvidia.com (10.126.190.182) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Sun, 30 Nov 2025 01:21:18 -0800 Received: from fedora.mtl.labs.mlnx (10.127.8.11) by mail.nvidia.com (10.126.190.181) with Microsoft SMTP Server id 15.2.2562.20 via Frontend Transport; Sun, 30 Nov 2025 01:21:14 -0800 From: Carolina Jubran To: Shuah Khan , Andrew Lunn , "David S . Miller" , Eric Dumazet , "Jakub Kicinski" , Paolo Abeni CC: Gal Pressman , Tariq Toukan , "Cosmin Ratiu" , Nimrod Oren , Mark Bloch , , , Subject: [PATCH net-next V3 4/6] selftests: drv-net: Set shell=True for sysfs writes in devlink_rate_tc_bw.py Date: Sun, 30 Nov 2025 11:19:36 +0200 Message-ID: <20251130091938.4109055-5-cjubran@nvidia.com> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20251130091938.4109055-1-cjubran@nvidia.com> References: <20251130091938.4109055-1-cjubran@nvidia.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ5PEPF000001CC:EE_|DM4PR12MB6445:EE_ X-MS-Office365-Filtering-Correlation-Id: fdad17b4-dd92-4a6b-3b26-08de2ff1d47e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|36860700013|1800799024|82310400026; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?D5Wfn5XPz7YwG8L9dr0JxUqvrcUqkAlPn0Dlg7UmGR+rUHZu3Cfss0cTY3Eq?= =?us-ascii?Q?tUCxumwXnxOhseSbqgX6gmCtm+rnnX/yDW4BWYBBx9DvF/YIGKH7mN4XR1Vv?= =?us-ascii?Q?Ix4mA+Fgwr0aDSJ+73P+YTV+6lF7aw863Ls11S+AzbDlKKP3XFksMa5taaZG?= =?us-ascii?Q?DGAJcijyNrbUCYYcunEf5uiBR6/3Z1vgK6vbvjrBPnOs/LAl5QkqcR0u+UlF?= =?us-ascii?Q?jIPrpOMkOvy4xEcHsK4R+jpt73eES5pT8mNWM8kPlo22a6ew0/0FYJYjSzyo?= =?us-ascii?Q?tLRPzH0r56vKWaSBzfzSYKeq0+BgU58yS6cjI6YMBzdPOBzWlcTvw+zLqCxj?= =?us-ascii?Q?1apQH2m8NekYii7uFaV1bPcMW5GyptLvCjwuL5DRrS06HqoCICMcUnSECCEq?= =?us-ascii?Q?+B3rqtjPQSjiigBoWKA7RaUDOUFSoMnxlU50vQWEZyRcOA6RfrY5pRZdZmET?= =?us-ascii?Q?6mo0rEI6Hzj6OzfejTvNQnH+0WkYDZ6IlPj1k/+nHvQ9axFfamBXEmN7f1SJ?= =?us-ascii?Q?nJa7PWhBDpKf41M7uJ9CZjH+JII/G33RkrCh11Bi8rL6fXPtPhtb0xMxfAzz?= =?us-ascii?Q?hSGBi98IdIzbWJFo12eDUXSiKFwejHSO5N5+tIdJujUnEAUKUCfFq0VJcYkw?= =?us-ascii?Q?NlNQdl+rdUk1Umv8/IGlo3k2rLghuN5B1BejDagCyxWy8h9Xru18my0bmx8g?= =?us-ascii?Q?yVQaQxalztQw76AmHPcTJFu5m9N6pvxuU/Q++BA1C0a3JhoUq23A6oegszzy?= =?us-ascii?Q?fHUbN1qpm5o353ML5l1LhuhBzL+OhcF2m1MY7OIbqtOVzY7Q7SfFpyLDq8Fa?= =?us-ascii?Q?6k2blfLUHxTqQkGja9lm3Gon7IDKHZfyB0P2C0rK/kacoHTXL5lamen97jiC?= =?us-ascii?Q?Cb3dsKU1YSLr/uZpWg793kEfM6m77/3klbfcM4760/qrjq02ttq7+z3KVmPr?= =?us-ascii?Q?ccv9SrBYbJ97hiZwOFZaVRK5pbUS74vyMelVpr7q/CiGuTbuKzVbDdYkP/ld?= =?us-ascii?Q?ieiWm3DfWP+nRdLECOPTmAKRUx2hjqqLtRDdWtnqRYny7z+rcpp2eszIFb4G?= =?us-ascii?Q?AhDG7UDG26AVDnWeUiAj3vPkWtUEdNpjeJJGaxaG4b7Aiob7FcSCQrAH7o35?= =?us-ascii?Q?ZL/V2RKRy+xO35fA2dEc9cG9ZETyYJYyvgcV+Z7jl4XeDP8xWeIzzqZhqXOd?= =?us-ascii?Q?ghhFaJApgULQ4fTEzKy2xiuinIIYYV602/DGU/pdSgDeN8tyhzsTxbWfHa6I?= =?us-ascii?Q?FJj5T4AfujaPY29wP5MPCCLmC/lBueG/35/qdm+uuR42mpx5KMV13txiRKcI?= =?us-ascii?Q?HMuNID3mDyiRgVkwu6uXbBa3CwCefqO6yTRvPoDwK8/4+v8ZCfSrFcVQkBs7?= =?us-ascii?Q?oihx2EVg0uliV/ahW13eJlg3cypTnMdpofa2kkXWCl6LJeKoau/8HwFqqHB7?= =?us-ascii?Q?DaDmLiRYS4LEh2bUuUWVZulw+o0SBWbPtYh94qNxBhOfYs37GMQ2SB8RuJz3?= =?us-ascii?Q?QEoA+aY/8F/xmw1nAYN2QW45wRAml7JypsOB9PTWxbbmiKiD8QkEnQu/tUBf?= =?us-ascii?Q?XEPlIzseku6BChpdkh0=3D?= X-Forefront-Antispam-Report: CIP:216.228.118.233;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc7edge2.nvidia.com;CAT:NONE;SFS:(13230040)(376014)(36860700013)(1800799024)(82310400026);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Nov 2025 09:21:23.1713 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: fdad17b4-dd92-4a6b-3b26-08de2ff1d47e X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.118.233];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: SJ5PEPF000001CC.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB6445 Content-Type: text/plain; charset="utf-8" Commit 7c32f7a2d3db ("selftests: net: py: don't default to shell=3DTrue") changed the cmd() helper to avoid spawning a shell unless explicitly requested. The devlink_rate_tc_bw test enables SR-IOV by writing to the sriov_numvfs sysfs attribute using redirection. Without shell=3DTrue the redirection is not interpreted and the VF device never appears, causing the test to fail. Fix by explicitly passing shell=3DTrue in the two places that update sriov_numvfs. Signed-off-by: Carolina Jubran Reviewed-by: Cosmin Ratiu Reviewed-by: Nimrod Oren --- tools/testing/selftests/drivers/net/hw/devlink_rate_tc_bw.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/drivers/net/hw/devlink_rate_tc_bw.py b= /tools/testing/selftests/drivers/net/hw/devlink_rate_tc_bw.py index 16e5dda5bee1..df71936531cf 100755 --- a/tools/testing/selftests/drivers/net/hw/devlink_rate_tc_bw.py +++ b/tools/testing/selftests/drivers/net/hw/devlink_rate_tc_bw.py @@ -117,8 +117,8 @@ def setup_vf(cfg, set_tc_mapping=3DTrue): except Exception as exc: raise KsftSkipEx(f"Failed to enable switchdev mode on {cfg.pci}") = from exc try: - cmd(f"echo 1 > /sys/class/net/{cfg.ifname}/device/sriov_numvfs") - defer(cmd, f"echo 0 > /sys/class/net/{cfg.ifname}/device/sriov_num= vfs") + cmd(f"echo 1 > /sys/class/net/{cfg.ifname}/device/sriov_numvfs", s= hell=3DTrue) + defer(cmd, f"echo 0 > /sys/class/net/{cfg.ifname}/device/sriov_num= vfs", shell=3DTrue) except Exception as exc: raise KsftSkipEx(f"Failed to enable SR-IOV on {cfg.ifname}") from = exc =20 --=20 2.38.1 From nobody Mon Dec 1 22:07:30 2025 Received: from SJ2PR03CU001.outbound.protection.outlook.com (mail-westusazon11012003.outbound.protection.outlook.com [52.101.43.3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C2605281357; Sun, 30 Nov 2025 09:21:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.43.3 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764494495; cv=fail; b=nnRyljqiLqwM21oBXhe5RhMlQvDfn6DVZ+dotvdcwxy0r3fgu71CrYQKKSO62BbcWgnv02iQAQc8EfpiI6Dk5y1EF3FIhuLB9D4N3wHX8anKb6MtREwbqu+SeOL9DylsyIaSRXgWScFsQl6vESg+3pRxuOAqMezgHWJwKO0YDhg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764494495; c=relaxed/simple; bh=KKQ1JdB766Z0RW8iGCM9uuc8ApWgBosEm3U0GDr9ZiE=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Nl/GqEh2kkVvLyTzlDESwtZFJMUqHyoPbejD+EDma+OjLpCoOy/vhoXvmoNrIsXItb3q1klpvfbnzSdSDd+AkWrNPR9VtvVXG2TbH8vcLROduNlrNFSJJ4V/4R4GmP2g7GHlEq78ouXBzm7l8dLqcvzrMzNQ2yA5QoltWuS2YhI= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=gmoHmBDW; arc=fail smtp.client-ip=52.101.43.3 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="gmoHmBDW" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=CGpwtnsXCetmOM+Xv1BYBvGFd0PZRttwpkvskoPmBgVtrRCqUe5A7u1zUAq8x/e7i0RI+CDlA4DUpZZxCtJedhTI9wSGS//9joEx+5sSCsase/84LKdNnmsqUhEYDrvwRvB9m7F/M0NqJDYO1Az9HAWnd3Mm8FR8DO73twbETOPvj3E5xJmcVytE0iP0A5hlRuzoS0RE9FProapCHV0CAgGHyK71nhO4uyU0Smddh3wryiwp/JMQI14a/hKYmVhzJPcxW+9770/hsmZ4cHAoWG8g19Joz+mLqavCHVowSMrlvRjisiQN04ezPfaDziBncK/qNixN7criCQq6DDL61Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=Sq73WCFQcHW8vNNIoGzrZSMw0q1uTO4dGi94yMScElQ=; b=E1ypCn/aj4DJC5cyDJlCwzVukhbMn/Ri4zzWz4M9byUXjzsrTfb9k7ZDDvbdUaE2Xl0qbTpVw2io1mjGvxZYA+J+bLfoWDu/cNTxhiCdg9lvG9JLWxS9rvAMZCnwt6S2gTC9PzmoE6SvwRJFWsTI+p97kXUf5BUEnJdsvvYyPjTWM6+1yJx/XNymu/n96Pd+eORfbk1rFKOgCCllNzOVCS+K6RxpbdCHa0F+kzyMXE0H//6i/5RGdCxt0eJKlfbb+3gkQmPfIpuL6blebztVAKnS8sr4gVFALqJb6U0V+NSsxQGmmkChTbL2Wzo1E1yl5qzXXrUSlJbCTdwr1C3nPQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.118.232) smtp.rcpttodomain=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 (0) 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=Sq73WCFQcHW8vNNIoGzrZSMw0q1uTO4dGi94yMScElQ=; b=gmoHmBDWT8ULA/WkkxoQczd/9kcBjQA59BIxNL8fLGfo+g7pOHSntJ666e+N3S80FyTlprB1KXHxu17MAOMLZJjA0e394sLe3hZ0DD9Z7zrnG/In41PU4pRMVN4X8axvxbLgWZIOf55nHBdLfiK5HhOZfnB9LWmVL5cxTYrMZ5O0LRVrsjRO0yKFEK7jFk8v1L+75Z22P57dlxNSlaEGdsaf9FDCKrX2vid5zQnRJY4G7Aq41Lh02Pz/yAinzuS76iTTWSfnSSVYo7KYtnmx1Qxx/Hu2LwKxppQ5G4FNA68YcQq9E0iC2fIvvpMp9jTobvS7NReI2Rwn6bRyMFnozg== Received: from BYAPR05CA0091.namprd05.prod.outlook.com (2603:10b6:a03:e0::32) by CYXPR12MB9320.namprd12.prod.outlook.com (2603:10b6:930:e6::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9366.17; Sun, 30 Nov 2025 09:21:30 +0000 Received: from SJ1PEPF00001CE6.namprd03.prod.outlook.com (2603:10b6:a03:e0:cafe::c3) by BYAPR05CA0091.outlook.office365.com (2603:10b6:a03:e0::32) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9388.9 via Frontend Transport; Sun, 30 Nov 2025 09:21:32 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.118.232) 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.118.232 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.118.232; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.118.232) by SJ1PEPF00001CE6.mail.protection.outlook.com (10.167.242.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9388.8 via Frontend Transport; Sun, 30 Nov 2025 09:21:30 +0000 Received: from drhqmail203.nvidia.com (10.126.190.182) by mail.nvidia.com (10.127.129.5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Sun, 30 Nov 2025 01:21:23 -0800 Received: from drhqmail202.nvidia.com (10.126.190.181) by drhqmail203.nvidia.com (10.126.190.182) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Sun, 30 Nov 2025 01:21:22 -0800 Received: from fedora.mtl.labs.mlnx (10.127.8.11) by mail.nvidia.com (10.126.190.181) with Microsoft SMTP Server id 15.2.2562.20 via Frontend Transport; Sun, 30 Nov 2025 01:21:19 -0800 From: Carolina Jubran To: Shuah Khan , Andrew Lunn , "David S . Miller" , Eric Dumazet , "Jakub Kicinski" , Paolo Abeni CC: Gal Pressman , Tariq Toukan , "Cosmin Ratiu" , Nimrod Oren , Mark Bloch , , , Subject: [PATCH net-next V3 5/6] selftests: drv-net: Fix and clarify TC bandwidth split in devlink_rate_tc_bw.py Date: Sun, 30 Nov 2025 11:19:37 +0200 Message-ID: <20251130091938.4109055-6-cjubran@nvidia.com> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20251130091938.4109055-1-cjubran@nvidia.com> References: <20251130091938.4109055-1-cjubran@nvidia.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ1PEPF00001CE6:EE_|CYXPR12MB9320:EE_ X-MS-Office365-Filtering-Correlation-Id: 76241e59-689c-4002-5300-08de2ff1d8f9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|36860700013|1800799024|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?fl887wF14VbVt1oGSNoKiECFRL/yDtMxn+ZoUjtzvdrG3lFdtCxZJgwsOGuU?= =?us-ascii?Q?42MegUcdcUOdvSECDu7MWTQLg8c2m1bYJhDCwOgjyyAlK5fyi/EPlDALspFO?= =?us-ascii?Q?xjLCjtHdmZCwVtprZ2UUt0/1ap3sYUy+wS5sNvgBI9KoJYHYrz8bjbvtQGo2?= =?us-ascii?Q?EZ8k1PrhYZAv32i+flAyxJU7qpsd02uACkDXl+ioNzAi1sFaacoIyk56Y7or?= =?us-ascii?Q?jtKmvZewp5o2UtQb3E5RBreWre5RzI5nP1rBzTgrmZTZQkyH79exxcwY6GkL?= =?us-ascii?Q?Aaai68Qyp+rGoProZ0o/eLkc89A87eIDIZeiE6B/FlsaYtaHOPKnQM+1R9BP?= =?us-ascii?Q?a0Wdhhtr+N8GKKaPVWqn1x0myGlZw+X9yl5v37hqi9KkhPnZAqb33EpT1X71?= =?us-ascii?Q?intI1RnCY4YOoUBhM8k1S99YPsEseQ4pSJD7Mh4OpopyyH0XzmGrDqyg5IvJ?= =?us-ascii?Q?RGjthmoNX9QhANqKIahzeYGEsxv/sq3AEDp5NHL48Z2KXCC8a5xFxE6uWvuG?= =?us-ascii?Q?uwyXNf9gBA20IkTwPg5RWzoeNIYwnQQfm0ZaKwUGyZxR7eC0RqOOlNxeIb1q?= =?us-ascii?Q?HvgD9BTvAsuit04NlNKWJRm2MQa9LJkRwz7fPB6pksilBJyjioChh7Z6P44v?= =?us-ascii?Q?pneT33UBUots97fRpRQVrKINfpZ3tF9Ehn4s4Ub8/PvyR2ZrwxWO8gAnt36Z?= =?us-ascii?Q?k8CnOGpK9fX5ux30+bg3HSn4tMFfk/zFq1d1/uWkcRHoVYg1r1bLNrP6k5um?= =?us-ascii?Q?Y33Y9jWiEhM7If+/gac3xztI0bUG9HwlVwO/2Ke5IdYxIK/g0c/dPZ2ZqgSz?= =?us-ascii?Q?6lhRCd25THtPKDKbZb4C4f20gTSjQprRWLUDnqo2+G9sVOl7xNCk9kM+zBrI?= =?us-ascii?Q?fKiB81swtEMa+CkfCldUsqRzKw1z4kCyFR3fPxSBVGcCiISAEjLxNWyeCsso?= =?us-ascii?Q?AWFkJY7W/xQjgJhJT8U5k1XpSXLGsQTT3WaxzBPF68MBnhEntL9SZcP4DOTB?= =?us-ascii?Q?KEAsmv/5zb7zoWFJ9sVsK+qS42KGtNv0ySJ86ySKGBWSm1ebUWDDI/W9DzNn?= =?us-ascii?Q?iUSgEAhpY6YFKdvzEr8YvfXjVIiJV+5jPVE45yPlaz5QlB7FpEZmMcyEqJR3?= =?us-ascii?Q?o+iUlu0HOp9S52W00d6BqFJ1Y1rt4UEQIlek+jWzr8KoQpaGfOkSPhkSpAfj?= =?us-ascii?Q?JMkH3mreKZRWj6ES7BmPH41paVfsY5NTf+3GMjRtWYad2dI0p4drg8YNTOxm?= =?us-ascii?Q?cCn4UuWoWwF2PwfE6nyGFqZI7K/D+ckr4BLbAvy0Jub1oJMuIu6WedKABPQN?= =?us-ascii?Q?CyWDURETQDlBVk5muOVO8EFT4THZfaVqWBtBcT83Ek9t1YPx/+ZbhbBUCB99?= =?us-ascii?Q?OYSymDqHB/jbJfStHGLaM6WhiBFu0RW5TbvQNiSxCgK3+ona/RkL0r2k5GS+?= =?us-ascii?Q?LIwFLhSTVxDWFS5yTZUwg3RCviC+ilerxO14PjN6lpq3f5WNTvtHjVZv4DPx?= =?us-ascii?Q?p9dM/R2/VXjUzXT3+uM1DCwCfiIe2d+WMH1TuUUdUpuQKpyK63+Sdd3af2Fh?= =?us-ascii?Q?BHXp55fOip2dLjjYfEc=3D?= X-Forefront-Antispam-Report: CIP:216.228.118.232;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc7edge1.nvidia.com;CAT:NONE;SFS:(13230040)(82310400026)(36860700013)(1800799024)(376014);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Nov 2025 09:21:30.6814 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 76241e59-689c-4002-5300-08de2ff1d8f9 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.118.232];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: SJ1PEPF00001CE6.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CYXPR12MB9320 Content-Type: text/plain; charset="utf-8" Correct the documented bandwidth distribution between TC3 and TC4 from 80/20 to 20/80. Update test descriptions and printed messages to consistently reflect the intended split. Signed-off-by: Carolina Jubran Reviewed-by: Cosmin Ratiu Reviewed-by: Nimrod Oren --- .../drivers/net/hw/devlink_rate_tc_bw.py | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/tools/testing/selftests/drivers/net/hw/devlink_rate_tc_bw.py b= /tools/testing/selftests/drivers/net/hw/devlink_rate_tc_bw.py index df71936531cf..db24bfc51da4 100755 --- a/tools/testing/selftests/drivers/net/hw/devlink_rate_tc_bw.py +++ b/tools/testing/selftests/drivers/net/hw/devlink_rate_tc_bw.py @@ -21,21 +21,21 @@ Test Cases: ---------- 1. test_no_tc_mapping_bandwidth: - Verifies that without TC mapping, bandwidth is NOT distributed accord= ing to - the configured 80/20 split between TC4 and TC3 - - This test should fail if bandwidth matches the 80/20 split without TC + the configured 20/80 split between TC3 and TC4 + - This test should fail if bandwidth matches the 20/80 split without TC mapping - - Expected: Bandwidth should NOT be distributed as 80/20 + - Expected: Bandwidth should NOT be distributed as 20/80 =20 2. test_tc_mapping_bandwidth: - Configures TC mapping using mqprio qdisc - Verifies that with TC mapping, bandwidth IS distributed according to = the - configured 80/20 split between TC3 and TC4 - - Expected: Bandwidth should be distributed as 80/20 + configured 20/80 split between TC3 and TC4 + - Expected: Bandwidth should be distributed as 20/80 =20 Bandwidth Distribution: ---------------------- -- TC3 (VLAN 101): Configured for 80% of total bandwidth -- TC4 (VLAN 102): Configured for 20% of total bandwidth +- TC3 (VLAN 101): Configured for 20% of total bandwidth +- TC4 (VLAN 102): Configured for 80% of total bandwidth - Total bandwidth: 1Gbps - Tolerance: +-12% =20 @@ -402,10 +402,10 @@ def run_bandwidth_distribution_test(cfg, set_tc_mappi= ng): =20 def test_no_tc_mapping_bandwidth(cfg): """ - Verifies that bandwidth is not split 80/20 without traffic class mappi= ng. + Verifies that bandwidth is not split 20/80 without traffic class mappi= ng. """ - pass_bw_msg =3D "Bandwidth is NOT distributed as 80/20 without TC mapp= ing" - fail_bw_msg =3D "Bandwidth matched 80/20 split without TC mapping" + pass_bw_msg =3D "Bandwidth is NOT distributed as 20/80 without TC mapp= ing" + fail_bw_msg =3D "Bandwidth matched 20/80 split without TC mapping" is_mlx5 =3D "driver: mlx5" in ethtool(f"-i {cfg.ifname}").stdout =20 if run_bandwidth_distribution_test(cfg, set_tc_mapping=3DFalse): @@ -419,13 +419,13 @@ def test_no_tc_mapping_bandwidth(cfg): =20 def test_tc_mapping_bandwidth(cfg): """ - Verifies that bandwidth is correctly split 80/20 between TC3 and TC4 + Verifies that bandwidth is correctly split 20/80 between TC3 and TC4 when traffic class mapping is set. """ if run_bandwidth_distribution_test(cfg, set_tc_mapping=3DTrue): - ksft_pr("Bandwidth is distributed as 80/20 with TC mapping") + ksft_pr("Bandwidth is distributed as 20/80 with TC mapping") else: - raise KsftFailEx("Bandwidth did not match 80/20 split with TC mapp= ing") + raise KsftFailEx("Bandwidth did not match 20/80 split with TC mapp= ing") =20 =20 def main() -> None: --=20 2.38.1 From nobody Mon Dec 1 22:07:30 2025 Received: from DM1PR04CU001.outbound.protection.outlook.com (mail-centralusazon11010061.outbound.protection.outlook.com [52.101.61.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 780E12773EE; Sun, 30 Nov 2025 09:21:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.61.61 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764494503; cv=fail; b=PtRNTSJ+SK1c9aoWC+cEIkLzKCmVIHorrTQWDCtDvGCOu6eFCBMuJZTXFz8Uzzi9sCj+3QYn4r5GeGekgKI42u9qWfFdVXvxQJ/89O51JR+EHJHZr6BeWp2xaL/WOxXDhgpQ6irpIrMN3y/VIxg3H1eTwIbrEoU5Z8vXPGr0t8E= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764494503; c=relaxed/simple; bh=KDwQCmXunXAK57wOAPlY8Zdnv6bCq+2jGDjNgaiUz+I=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=BQZZvvjGNt1q2/G1m2GOKHGg+anLreceKTPQk7rEJuzaKtgdmoUMcFFiPSuLPn8nDkvpdVPKJFjVYqMeeKcim9i9l2mqW0vVlXeu/9J4p7wx/oLBLJRn8w+ljSoWzCfSTIeNTQJO4xQo0NWK2Q6yE+p5B8S6E5Nnm/borCNv1zw= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=AJg4l335; arc=fail smtp.client-ip=52.101.61.61 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="AJg4l335" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=jJ44gs3ODa75hqA6OuMkN7btIUcWsRW+I6nQrPiJY/0nHfBwsUaDutNJuQLRCqSzTE173gl5EAYze07vGcU1fb2WtnD437MngrhPWeO20kCdIcXFmUE9+0Plwxm60IO1QSgLz+ZvBa5Xr8qd/fuUlV1yXVOGngiEj9zLBRp+LupmoBK0TcAKDyoD0Si3vzzlys0sDk6N98ORTef23jiJVGYFh5Mr/qDsdqaskWvUA9Jb0L+R9F2CLlA7RYX015Up22EZIk8px0VGMg7K94/a0RIFaGtNAV4x3NpBxjHw1u9JYh1umFd1ASaKttpfwynS2YGxLAvT4WxLIw9qK25Omw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=Ijd0bHM1g9JbvS/k9b33eDUgJm0w6ibJpkdhtrL7VBc=; b=av/y++6JOmIRSfNCvBLi4RT+Nt15MbaGdRKXSvRWJhUJZJwsG5dnt9jCynWO4D3+qmnKG5f2uW59OTtZlH+Y9RtpJVtScayVFbc/mXbZN2bK68WOM5c8O7gcfHFv4kxtV3NsiZFjVQsNpc6JsOBwbxuztdCPpTXA+1yOqOXGRF4aEA+JqqORZyrkMMmoreGqmxFrUl/e+rqqBSylP774tWGkNsoyKUl2BmQLvr28exppzqduG6MJ5yps9dVpzCBWhHSsOlYspeSff893iYcKlvE6NxMrd1gAvpwzoWXlmlJndqWxMpdrUYjhyzae86Si5CmPF5PJK3ODRF6t2FyZig== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.118.233) smtp.rcpttodomain=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 (0) 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=Ijd0bHM1g9JbvS/k9b33eDUgJm0w6ibJpkdhtrL7VBc=; b=AJg4l33564/3BpFXUSmJ+0fCpYWjH8Ck2hFfT878jOZXGBqkW7Io/L+G75HxGi/NCHn4BXhw+OwqI8wwl1TJmNF1vW2OCOutc/On/KSmjfnbZPQAaYkxhSseRz5TAkeoPGDz33bR9OlJzrV5sM5O78GQONO7Ur0H/kVj9ny+npasNryXcgbltMGymG7K36eQdHWcKRjq/e7PmlsoRIpPtWUosT7z9Oc0Djqde1b3JBR+nmURuUw7mGqiDBZwbUpvo2rIPWcC3DurvPi9CMj9Txd1qnYDLDGvJU4kFgOW8EqoS7GIlE0cD6opEeAqbKojRdte6ZPkBZRQSyZRiXQLwg== Received: from SJ0PR03CA0166.namprd03.prod.outlook.com (2603:10b6:a03:338::21) by MN2PR12MB4125.namprd12.prod.outlook.com (2603:10b6:208:1d9::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9366.17; Sun, 30 Nov 2025 09:21:37 +0000 Received: from SJ5PEPF000001C8.namprd05.prod.outlook.com (2603:10b6:a03:338:cafe::9c) by SJ0PR03CA0166.outlook.office365.com (2603:10b6:a03:338::21) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9366.12 via Frontend Transport; Sun, 30 Nov 2025 09:21:04 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.118.233) 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.118.233 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.118.233; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.118.233) by SJ5PEPF000001C8.mail.protection.outlook.com (10.167.242.36) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9388.8 via Frontend Transport; Sun, 30 Nov 2025 09:21:37 +0000 Received: from drhqmail203.nvidia.com (10.126.190.182) by mail.nvidia.com (10.127.129.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Sun, 30 Nov 2025 01:21:27 -0800 Received: from drhqmail202.nvidia.com (10.126.190.181) by drhqmail203.nvidia.com (10.126.190.182) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Sun, 30 Nov 2025 01:21:27 -0800 Received: from fedora.mtl.labs.mlnx (10.127.8.11) by mail.nvidia.com (10.126.190.181) with Microsoft SMTP Server id 15.2.2562.20 via Frontend Transport; Sun, 30 Nov 2025 01:21:23 -0800 From: Carolina Jubran To: Shuah Khan , Andrew Lunn , "David S . Miller" , Eric Dumazet , "Jakub Kicinski" , Paolo Abeni CC: Gal Pressman , Tariq Toukan , "Cosmin Ratiu" , Nimrod Oren , Mark Bloch , , , Subject: [PATCH net-next V3 6/6] selftests: drv-net: Fix tolerance calculation in devlink_rate_tc_bw.py Date: Sun, 30 Nov 2025 11:19:38 +0200 Message-ID: <20251130091938.4109055-7-cjubran@nvidia.com> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20251130091938.4109055-1-cjubran@nvidia.com> References: <20251130091938.4109055-1-cjubran@nvidia.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ5PEPF000001C8:EE_|MN2PR12MB4125:EE_ X-MS-Office365-Filtering-Correlation-Id: de4d7ebb-aacd-4d0f-d90e-08de2ff1dcf9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|82310400026|36860700013; X-Microsoft-Antispam-Message-Info: =?utf-8?B?MHZtS0Q0SWlIbDE5RTBsblAyZzhyVkwvbkVOamNtVi94Y3V2K3BpZ0p3RGxo?= =?utf-8?B?aUV0WUhvS1ZEOE1nTWZ1bjQxZGlwVlB1MDllcDRHcU1iWVkwTW12RElxZnpT?= =?utf-8?B?bXRONDljRnVTYWpBbmYvQ0VDczJnVElibWx0UnRJYWhaVTQvVmR5aHd5ZVBN?= =?utf-8?B?SXRWTXA0R1BEOEI0RlpvU0xxN1JTMmNjblkydnBXTlNDQ2ljOXA4aHNZVnI2?= =?utf-8?B?dXAwQjhSVkl2MzNER3hDZC9Zd3dhVm5tTmdtZHJUTmF0SXJNeEVZWmk2VDd0?= =?utf-8?B?cDlQMkRZZW9GR2VRS3FsVFlGcHkwNFFJRnVCRUpsVUl3cjhWNGJoMWNpdEZ1?= =?utf-8?B?UWlrTEZmTDg0V1NvSFM3QXNuL1ZVRTkybTZCZjlCNzRKZXVWZFRTNXRESjZ1?= =?utf-8?B?TmQvK2EwYkNqbWxYS1B5ek1odkdKenk0OEVEZFNOWCtDcVBiaExSTlBhaUZB?= =?utf-8?B?U1M4K0dULytHZEZ2ZjJtMUZvdTRoTzV6U1lNVjR6S0F1SUdXVnRFTmxobGl1?= =?utf-8?B?NU9vSUF0bEpVRmF0T1E1TTY3VmtkSENVcmpFNnNCU1dTdmErSGNiRE1saFor?= =?utf-8?B?MWhSV1VkbERQa2ZKam91VWsrdjhqa2VJMlkrOFZOWHc3QmV1YnB2U29qbzVS?= =?utf-8?B?a282VTE0L0NxSGtZS3Jjc1g5aUIzTnRyNU1VTnJVa2dMYnVqbzErZ0ZZY25l?= =?utf-8?B?cUx6UnN3WTd5R2lWTDZ1QUt2cnlzcHdFdHN4eHdnc3lqbmVrUC91ejNnQ1c3?= =?utf-8?B?dFRIR0RtQVlCYkpaMzVjRUVvcmUzZVV5ZUhyT2p1NmdHNUtlODdLR1pOeWdQ?= =?utf-8?B?ZGZud3g1RUVzR29QMTVCZU5PNDkzKzluQUJ2WlJnVGlvVVdreitFUFdrUDFz?= =?utf-8?B?UFlpS1FlNkN5UDBuOENlNytBcXZLQm5mU3p3eWFHZHlZMTJRUjFrWGozUFVN?= =?utf-8?B?dU16cmlxTnZ6SXI1L3FMbFdVN2JXR2xrVE5LZStmY0JxNG1Qdkp6V3BRY0pa?= =?utf-8?B?d1V2MlZLSThiK01BRk5Id1NxTUowQkQySmh4TVN2Y2YwRHJ1SVBzTkdDYVM2?= =?utf-8?B?eEZocG1TV3YyTitNRHl4cU5idGlZZnFZVXI2MCszQjhFN09xU08zbkFWVjlr?= =?utf-8?B?YkhWcUtWekJ1bG9HRlRaZlVXRDZ6ckRtZm8vRzdTTmpJdDFEZUUrT2tHOTNF?= =?utf-8?B?aTJ4VzErcHpNOEZXWC9ZQmRtZnRPZHFVT1dJdW1BeUZIc1ZLWDErenpXSDV2?= =?utf-8?B?M3lHZTVPYWxZais2aDBsaGZCOWFTVTBIN2lvblpyUzlveGk3SjU5U1hNNFJm?= =?utf-8?B?dTRQWVUxZVpnMEpqamtxWldhRkpYOEZ5NDdRdmpheTF3bWJFWjA3bEV3cmtV?= =?utf-8?B?SVZCNkN2UmlxVU1vNHpxZGliUWF0ZlRNcDIrcGVBT1RNMGhWSUpMcklwa0gr?= =?utf-8?B?YityS29QaDdVUXE2VWRab1FiQ0dNYjlkSFdqdEIwbmJ4NEhCcDFyRjk2MzVm?= =?utf-8?B?VXhrM2NkU1NBTGdEdC9zMjdSUmUrTHVReldxbCtVZ2JDblFTaDlEZ29WTFBC?= =?utf-8?B?dXI2ZTFrUWgxbmwvcmo5L2VBS01wei9MYXB2MWpZNEpDMHhYcFRDOXBaVHh6?= =?utf-8?B?RWhaQ0luSnFOVFNhSzBTMkhYdFo5UE1MNXdSRXNtalB6QUFGSFJQcjVpQStV?= =?utf-8?B?NzQxZ3J1Rnk4WHNkK0QrYlYzZ0F4UGFkeHlLS1cwSjNUWmhkcDhsaFNXM0d2?= =?utf-8?B?Nm1FSTQ1bmgzaWdSVjg3VkNycnZEa25JVVUxRFJCVmpHY05WS2U2R1BXY0Vv?= =?utf-8?B?dTBuR3U0QW9uUEpIWE1WSzZ4aHBvZ0dNUC83WTRaaVZsTmNlMVpmSjhXTUZL?= =?utf-8?B?REVxVzdRdmRJOW01K25ZRm1NQ0IxcVVjZTk3YkYyckZ2LzYyR0MrOGc0Slgy?= =?utf-8?B?cDJBUmxHUVovb2Z3RHdDa283alRjSHJweFZjY09GVXk4WC9rV2ZyZjBQR1ZK?= =?utf-8?B?NnJrSUFra01HOUtpa3Ywa29BclpodWZhMGxCVGlVRzhuUlAyenNYZzZ1WDRS?= =?utf-8?B?NjlNSDRBdElKUUNHSHlwaXdaV2N0VXNJd3VvMW52aVpYcmVXZHFzUENsKzE0?= =?utf-8?Q?klNs=3D?= X-Forefront-Antispam-Report: CIP:216.228.118.233;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc7edge2.nvidia.com;CAT:NONE;SFS:(13230040)(376014)(1800799024)(82310400026)(36860700013);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Nov 2025 09:21:37.3743 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: de4d7ebb-aacd-4d0f-d90e-08de2ff1dcf9 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.118.233];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: SJ5PEPF000001C8.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4125 Currently, tolerance is computed against the TC=E2=80=99s expected percenta= ge, making TC3 (20%) validation overly strict and TC4 (80%) overly loose. Update BandwidthValidator to take a dict of shares and compute bounds relative to the overall total, so that all shares are validated consistently. Signed-off-by: Carolina Jubran Reviewed-by: Cosmin Ratiu Reviewed-by: Nimrod Oren --- .../drivers/net/hw/devlink_rate_tc_bw.py | 74 ++++++++----------- 1 file changed, 30 insertions(+), 44 deletions(-) diff --git a/tools/testing/selftests/drivers/net/hw/devlink_rate_tc_bw.py b= /tools/testing/selftests/drivers/net/hw/devlink_rate_tc_bw.py index db24bfc51da4..4e4faa9275bb 100755 --- a/tools/testing/selftests/drivers/net/hw/devlink_rate_tc_bw.py +++ b/tools/testing/selftests/drivers/net/hw/devlink_rate_tc_bw.py @@ -69,39 +69,35 @@ from lib.py import Iperf3Runner =20 class BandwidthValidator: """ - Validates bandwidth totals and per-TC shares against expected values - with a tolerance. + Validates total bandwidth and individual shares with tolerance + relative to the overall total. """ =20 - def __init__(self): + def __init__(self, shares): self.tolerance_percent =3D 12 - self.expected_total_gbps =3D 1.0 - self.total_min_expected =3D self.min_expected(self.expected_total_= gbps) - self.total_max_expected =3D self.max_expected(self.expected_total_= gbps) - self.tc_expected_percent =3D { - 3: 20.0, - 4: 80.0, - } + self.expected_total =3D sum(shares.values()) + self.bounds =3D {} + + for name, exp in shares.items(): + self.bounds[name] =3D (self.min_expected(exp), self.max_expect= ed(exp)) =20 def min_expected(self, value): """Calculates the minimum acceptable value based on tolerance.""" - return value - (value * self.tolerance_percent / 100) + return value - (self.expected_total * self.tolerance_percent / 100) =20 def max_expected(self, value): """Calculates the maximum acceptable value based on tolerance.""" - return value + (value * self.tolerance_percent / 100) - - def bound(self, expected, value): - """Returns True if value is within expected tolerance.""" - return self.min_expected(expected) <=3D value <=3D self.max_expect= ed(expected) + return value + (self.expected_total * self.tolerance_percent / 100) =20 - def tc_bandwidth_bound(self, value, tc_ix): + def bound(self, values): """ - Returns True if the given bandwidth value is within tolerance - for the TC's expected bandwidth. + Return True if all given values fall within tolerance. """ - expected =3D self.tc_expected_percent[tc_ix] - return self.bound(expected, value) + for name, value in values.items(): + low, high =3D self.bounds[name] + if not low <=3D value <=3D high: + return False + return True =20 =20 def setup_vf(cfg, set_tc_mapping=3DTrue): @@ -353,38 +349,26 @@ def verify_total_bandwidth(bw_data, validator): """ total =3D bw_data['total_bw'] =20 - if validator.bound(validator.expected_total_gbps, total): + if validator.bound({"total": total}): return =20 - if total < validator.total_min_expected: + low, high =3D validator.bounds["total"] + + if total < low: raise KsftSkipEx( f"Total bandwidth {total:.2f} Gbps < minimum " - f"{validator.total_min_expected:.2f} Gbps; " - f"parent tx_max ({validator.expected_total_gbps:.1f} G) " + f"{low:.2f} Gbps; " + f"parent tx_max ({validator.expected_total:.1f} G) " f"not reached, cannot validate share" ) =20 raise KsftFailEx( f"Total bandwidth {total:.2f} Gbps exceeds allowed ceiling " - f"{validator.total_max_expected:.2f} Gbps " - f"(VF tx_max set to {validator.expected_total_gbps:.1f} G)" + f"{high:.2f} Gbps " + f"(VF tx_max set to {validator.expected_total:.1f} G)" ) =20 =20 -def check_bandwidth_distribution(bw_data, validator): - """ - Checks whether the measured TC3 and TC4 bandwidth percentages - fall within their expected tolerance ranges. - - Returns: - bool: True if both TC3 and TC4 percentages are within bounds. - """ - tc3_valid =3D validator.tc_bandwidth_bound(bw_data['tc3_percentage'], = 3) - tc4_valid =3D validator.tc_bandwidth_bound(bw_data['tc4_percentage'], = 4) - - return tc3_valid and tc4_valid - - def run_bandwidth_distribution_test(cfg, set_tc_mapping): """ Runs parallel bandwidth measurements for both TCs and collects results. @@ -395,9 +379,10 @@ def run_bandwidth_distribution_test(cfg, set_tc_mappin= g): test_name =3D "with TC mapping" if set_tc_mapping else "without TC map= ping" print_bandwidth_results(bw_data, test_name) =20 - verify_total_bandwidth(bw_data, cfg.bw_validator) + verify_total_bandwidth(bw_data, cfg.traffic_bw_validator) =20 - return check_bandwidth_distribution(bw_data, cfg.bw_validator) + return cfg.tc_bw_validator.bound({"tc3": bw_data['tc3_percentage'], + "tc4": bw_data['tc4_percentage']}) =20 =20 def test_no_tc_mapping_bandwidth(cfg): @@ -441,7 +426,8 @@ def main() -> None: if not cfg.pci: raise KsftSkipEx("Could not get PCI address of the interface") =20 - cfg.bw_validator =3D BandwidthValidator() + cfg.traffic_bw_validator =3D BandwidthValidator({"total": 1}) + cfg.tc_bw_validator =3D BandwidthValidator({"tc3": 20, "tc4": 80}) =20 cases =3D [test_no_tc_mapping_bandwidth, test_tc_mapping_bandwidth] =20 --=20 2.38.1