From patchwork Tue Apr 22 20:15:59 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Chia-Yu Chang \(Nokia\)" X-Patchwork-Id: 883328 Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2081.outbound.protection.outlook.com [40.107.20.81]) (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 1D02829A3CE; Tue, 22 Apr 2025 20:16:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.20.81 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745352981; cv=fail; b=fSED+qjbbw5PpRnrnfYVJS1b0Jxq9tJfKmEoksIAsTfPlHE0YSALIZJ2TEnMDoZBtYzhQ8MGUS56WWmnEjuFseq2D+5jgNL5DUYrYMIw5qQWZKj+qqrpIyf3WPRIsA0cPj+jXKxpLeCotWwuIX/EJsKA4OoqpRUNTcxvR35vm2c= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745352981; c=relaxed/simple; bh=VZgMI1y10ZVzF/3MeUylAlSR4ZOEC0ddARrj39wpx/0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=AWMQ7dk5k+k59lzVmUqJeVRObnEwLwboM17O01jpHvPkcRkJocZvUWsbghul05Z9XFTTpat7v30CfbAnFZUe0N2XAMq/rUqwzKUqYYPGFkpnXzeqaBOfPwskX4NkZx/H45YEgpO3d7iDcFPYVcBCKAkIUopS6eKdf0jWuASVAn4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nokia-bell-labs.com; spf=fail smtp.mailfrom=nokia-bell-labs.com; dkim=pass (2048-bit key) header.d=nokia-bell-labs.com header.i=@nokia-bell-labs.com header.b=BDH28TTJ; arc=fail smtp.client-ip=40.107.20.81 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nokia-bell-labs.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nokia-bell-labs.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nokia-bell-labs.com header.i=@nokia-bell-labs.com header.b="BDH28TTJ" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=hCuN70dc4I5+3KwbIWzoGV0M5off81Z8XBzAv9RiJn4XiiqoQlZ08Sq5ZVW49CU/PawWd/NPX/XbG58lS18KRwxCotaCkKKSNITAQNB7qRUeK6/PntivqfgWTxVE41ChKcH6QHwDCdLMs8ezbA533/WBJstWeOp/MScZ0FxVyxoaxM7z0CONnIeLmM0yPDvImn+H5IXCIn+r38UapwsbXlr9Pjh1gpBkZe0dG0VHCNs4jZmFOHLo5B6/jDsPov0Ni+JrkiCb+Ov+4naaHhxQDDVbhuaYXYlbNcmnB4jk1sCteriHnOZEomUmpmFw1g1q1MVO+0it8WiIZj7yU6r4fA== 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=2D5UsmPw9psFHaj2XdKAgmCDcGYqhOrougPnEqggbxo=; b=arBrmQnUJ9+eApd7WWWRyFIvnteucezdsLzU5ifN18hfhKpOGcVlnO5ftreVn8UJv0SE6WIsGd9lNnt8qgmNVirWucPVptvg2B03c0jJ3i7pix59370n8xdHHMSuMJtt8/NZXQyUDgHGTSXtri5jCQkJqAux6jgs2BwnJ28G3+d7g0NSBbWctPI9vSMdVRFzIGHyCzrFLW3bLm+VC50Webpo5llzXaftgZm//vWvDXkgIAwpzIcGNheSB67jJNnCcLvL92Jo8rtzs6eFldSQy/07O4MtdRr3TNPWJlvQqnNT/l2K9Z8lcueuyDtTkvMEwTyI6Y4f62gqpRZcNAIikg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=temperror (sender ip is 131.228.2.20) smtp.rcpttodomain=apple.com smtp.mailfrom=nokia-bell-labs.com; dmarc=temperror action=none header.from=nokia-bell-labs.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nokia-bell-labs.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2D5UsmPw9psFHaj2XdKAgmCDcGYqhOrougPnEqggbxo=; b=BDH28TTJfz8+r6+X3dyplEWkmt8V+Z5BSOdJSSIL/6rSfkQhEcSsmtlKRaLhgG/VFIUTBg4bXhU9O3+WXX2mHcTNVjHHakCvmNuBO0NOhN6xz2Losxq/DcvWcYQ9md9cvIOaU/sYKKdzrYk3pD1sQEnEM1GCG/B07ww7Zi5UbxjZDgtZNwlJ4yIFfZwHYoMbcKwBhpek3m9S1ZObdy24bBaZYfo+AEGs64D6edQwb/DCxPzi7fmgK4gZW2qhS85i4u1o+HEtdo8hc058y96wv7ftwdAH7yN4y8GCNI3Ity8zHH+kqC5t3+4HBndgD1TepVBwkov7A2Ks/urHYx7TOg== Received: from DUZPR01CA0194.eurprd01.prod.exchangelabs.com (2603:10a6:10:4b6::19) by PA4PR07MB7341.eurprd07.prod.outlook.com (2603:10a6:102:fd::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8655.35; Tue, 22 Apr 2025 20:16:14 +0000 Received: from DB1PEPF000509F4.eurprd02.prod.outlook.com (2603:10a6:10:4b6:cafe::bf) by DUZPR01CA0194.outlook.office365.com (2603:10a6:10:4b6::19) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8655.35 via Frontend Transport; Tue, 22 Apr 2025 20:16:11 +0000 X-MS-Exchange-Authentication-Results: spf=temperror (sender IP is 131.228.2.20) smtp.mailfrom=nokia-bell-labs.com; dkim=none (message not signed) header.d=none;dmarc=temperror action=none header.from=nokia-bell-labs.com; Received-SPF: TempError (protection.outlook.com: error in processing during lookup of nokia-bell-labs.com: DNS Timeout) Received: from fihe3nok0734.emea.nsn-net.net (131.228.2.20) by DB1PEPF000509F4.mail.protection.outlook.com (10.167.242.150) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8655.12 via Frontend Transport; Tue, 22 Apr 2025 20:16:13 +0000 Received: from sarah.nbl.nsn-rdnet.net (sarah.nbl.nsn-rdnet.net [10.0.73.150]) by fihe3nok0734.emea.nsn-net.net (Postfix) with ESMTP id A0C102004B; Tue, 22 Apr 2025 23:16:11 +0300 (EEST) From: chia-yu.chang@nokia-bell-labs.com To: xandfury@gmail.com, netdev@vger.kernel.org, dave.taht@gmail.com, pabeni@redhat.com, jhs@mojatatu.com, kuba@kernel.org, stephen@networkplumber.org, xiyou.wangcong@gmail.com, jiri@resnulli.us, davem@davemloft.net, edumazet@google.com, horms@kernel.org, andrew+netdev@lunn.ch, donald.hunter@gmail.com, ast@fiberby.net, liuhangbin@gmail.com, shuah@kernel.org, linux-kselftest@vger.kernel.org, ij@kernel.org, ncardwell@google.com, koen.de_schepper@nokia-bell-labs.com, g.white@cablelabs.com, ingemar.s.johansson@ericsson.com, mirja.kuehlewind@ericsson.com, cheshire@apple.com, rs.ietf@gmx.at, Jason_Livingood@comcast.com, vidhi_goel@apple.com Cc: Chia-Yu Chang , Victor Nogueira Subject: [PATCH v12 net-next 2/5] selftests/tc-testing: Add selftests for qdisc DualPI2 Date: Tue, 22 Apr 2025 22:15:59 +0200 Message-Id: <20250422201602.56368-3-chia-yu.chang@nokia-bell-labs.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250422201602.56368-1-chia-yu.chang@nokia-bell-labs.com> References: <20250422201602.56368-1-chia-yu.chang@nokia-bell-labs.com> Precedence: bulk X-Mailing-List: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DB1PEPF000509F4:EE_|PA4PR07MB7341:EE_ X-MS-Office365-Filtering-Correlation-Id: 0f52ebdb-8242-4e26-5200-08dd81da876f X-LD-Processed: 5d471751-9675-428d-917b-70f44f9630b0,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|7416014|376014|1800799024|36860700013|82310400026|921020; X-Microsoft-Antispam-Message-Info: omHTZDU5Gk0KMl8Ddyp6bdtieg4jChJKLREmgMqGBhDJW5V9pmPZJbUZtMjfkR08ITeJFfFKjmO8zpxMVLVFX/q1VFq+IaMKeA+GyObXNVIqKln6XmcRmg+Xxmg2ZDEHqW8lPcPqzfNlkiYHIlHPvIAr8jFCBIWS3gO+S3VcUrz39Lmk29O6Kqgf2y8pKwAg6Dos/njSZA3C1nQm6VqWji1ZiDxxRzgV1nhcAhyu7s0IF1xXbP5kCx9BvfUG+29NoIdkQYMCaDv+PHdkuBiSWejGwlPBDbJpxTOYBEG4mjkTBCAI11G3wk4Vp5Ty5HTPkq9aS/ElOSG3yi74QaA67IP/4R4NlYIOhQSyNEOSyNav1AdhxhUAqLmawPqnXTiDpTkNpB5nPkB5Afd+0RU5k/wROlGLcUFjpyJxEkGyEGBSMa5+c5ofW/FIqfhZyf+rwnhSoJL7WS4AxRVppNwmOKqkkgHBBDZVj3fZ9wUl+3MSTWeYlwiLKWAqc4awobzYHJzArap/TavanUv3og7WjX4DBx2TWxiczf9hdCz+ff2bk9dqg6mXLn1aQFApLdtN4Jj+qP+0G8h+hoM/ny5JfqwtzSYQMVbCMphQey9pL6NhzlCGZogM9GoaNf8cwgdEyxkMgLrNxtWXHZ5TF6puqFARvMOrQbJMYyIQvHVWEIiBhToq6E4qY8hfgmEhZEaWT9dYe5vxreYVBFf40aYHVCRsJCzyTTT5WHuqAmRULLf7puZgW3DLG+D6AKXDmo1FBUbO/vDjtqmZ2iWYS8SfY7/YxW0/oEG5MlcMaAM8YLAVe0xVk/D4aBvPMp3Tep7YDYPEmmaxfpCEvDQErKBCwcIxydz02f6r/J/vccSYQ3a5W76ikPSWA2/nG62+Uh+143UYd3TS3GYtS4ScF9VkXYMtd5aE35G5npvRSpO6B/seqA2Oc2WHnFksWsGttjGjEzHq7fX4bvU01Ow5LK2ZWgoHTuTc4aZgOn0cx4YsZCUJ1sYuHeKk3rhcrNqCr2DXbVppCvpWO6JzdgAU2jVgQYW9w/suOSWZaaUipYmTDmIQxliZSLJ4BrUfWnIlbJPqjYE8PIch6/97NH1+kiEFg+uBZgs5cIwuQZV16Q3PEVBjZk6mZ6RJxqjWd0CMMLQv0dFmAtjvOnj06SvzfJMknT6sDxXbNcfggLSfdWbdVcnTA5y1tBYm0CHAkZDTgJOkV61jpkZiCp1NG4/LI2AfVgJ67frCXmcaaQub2pXKihBpsGbl7AHOpC8y5zqWIYXOzLL+A8BkppRoHzkDv0TvOPb3bMxxoR46eb8k38Lmaliq0K0I5s0tmi2syrd9rvZl6mNJBXOMHjW5qmZ9vm9NfBnl84SmZjZHKcDLS70IcvVuMDKeKd36bHlK9xesCL6zpP3mIoPQ7ZprKEjAOW4s6tNtl6iWxfjhoidWn2lv5HefdZTx6PUM+zg+xy1Yec5J8OAXg4nhm1k8jUVWAXDE6uhjYoqucxuoNYhjY9QzAzmIruYRJ/P4WSxvOQx1Zqyz6jZiR2f18AuMGo1rvKEfQg== X-Forefront-Antispam-Report: CIP:131.228.2.20; CTRY:FI; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:fihe3nok0734.emea.nsn-net.net; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(7416014)(376014)(1800799024)(36860700013)(82310400026)(921020); DIR:OUT; SFP:1101; X-OriginatorOrg: nokia-bell-labs.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2025 20:16:13.0516 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0f52ebdb-8242-4e26-5200-08dd81da876f X-MS-Exchange-CrossTenant-Id: 5d471751-9675-428d-917b-70f44f9630b0 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5d471751-9675-428d-917b-70f44f9630b0; Ip=[131.228.2.20]; Helo=[fihe3nok0734.emea.nsn-net.net] X-MS-Exchange-CrossTenant-AuthSource: DB1PEPF000509F4.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR07MB7341 From: Chia-Yu Chang Update configuration of tc-tests and preload DualPI2 module for self-tests, and add folloiwng self-test cases for DualPI2: Test a4c7: Create DualPI2 with default setting Test 2130: Create DualPI2 with typical_rtt and max_rtt Test 90c1: Create DualPI2 with max_rtt Test 7b3c: Create DualPI2 with any_ect option Test 49a3: Create DualPI2 with overflow option Test d0a1: Create DualPI2 with drop_enqueue option Test f051: Create DualPI2 with no_split_gso option Signed-off-by: Chia-Yu Chang Reviewed-by: Victor Nogueira --- tools/testing/selftests/tc-testing/config | 1 + .../tc-testing/tc-tests/qdiscs/dualpi2.json | 149 ++++++++++++++++++ tools/testing/selftests/tc-testing/tdc.sh | 1 + 3 files changed, 151 insertions(+) create mode 100644 tools/testing/selftests/tc-testing/tc-tests/qdiscs/dualpi2.json diff --git a/tools/testing/selftests/tc-testing/config b/tools/testing/selftests/tc-testing/config index db176fe7d0c3..72b5f36f6731 100644 --- a/tools/testing/selftests/tc-testing/config +++ b/tools/testing/selftests/tc-testing/config @@ -30,6 +30,7 @@ CONFIG_NET_SCH_CBS=m CONFIG_NET_SCH_CHOKE=m CONFIG_NET_SCH_CODEL=m CONFIG_NET_SCH_DRR=m +CONFIG_NET_SCH_DUALPI2=m CONFIG_NET_SCH_ETF=m CONFIG_NET_SCH_FQ=m CONFIG_NET_SCH_FQ_CODEL=m diff --git a/tools/testing/selftests/tc-testing/tc-tests/qdiscs/dualpi2.json b/tools/testing/selftests/tc-testing/tc-tests/qdiscs/dualpi2.json new file mode 100644 index 000000000000..1080074f2650 --- /dev/null +++ b/tools/testing/selftests/tc-testing/tc-tests/qdiscs/dualpi2.json @@ -0,0 +1,149 @@ +[ + { + "id": "a4c7", + "name": "Create DualPI2 with default setting", + "category": [ + "qdisc", + "dualpi2" + ], + "plugins": { + "requires": "nsPlugin" + }, + "setup": [ + ], + "cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root dualpi2", + "expExitCode": "0", + "verifyCmd": "$TC qdisc show dev $DUMMY", + "matchPattern": "qdisc dualpi2 1: root refcnt [0-9]+ limit 10000p.* l4s_ect.* drop_on_overload.* drop_dequeue.* split_gso.*", + "matchCount": "1", + "teardown": [ + "$TC qdisc del dev $DUMMY handle 1: root" + ] + }, + { + "id": "2130", + "name": "Create DualPI2 with typical_rtt and max_rtt", + "category": [ + "qdisc", + "dualpi2" + ], + "plugins": { + "requires": "nsPlugin" + }, + "setup": [ + ], + "cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root dualpi2 typical_rtt 20ms max_rtt 200ms", + "expExitCode": "0", + "verifyCmd": "$TC qdisc show dev $DUMMY", + "matchPattern": "qdisc dualpi2 1: root refcnt [0-9]+ limit 10000p.* target 20ms tupdate 20ms alpha 0.042969 beta 1.496094", + "matchCount": "1", + "teardown": [ + "$TC qdisc del dev $DUMMY handle 1: root" + ] + }, + { + "id": "90c1", + "name": "Create DualPI2 with max_rtt", + "category": [ + "qdisc", + "dualpi2" + ], + "plugins": { + "requires": "nsPlugin" + }, + "setup": [ + ], + "cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root dualpi2 max_rtt 300ms", + "expExitCode": "0", + "verifyCmd": "$TC qdisc show dev $DUMMY", + "matchPattern": "qdisc dualpi2 1: root refcnt [0-9]+ limit 10000p.* target 50ms tupdate 50ms alpha 0.050781 beta 0.996094", + "matchCount": "1", + "teardown": [ + "$TC qdisc del dev $DUMMY handle 1: root" + ] + }, + { + "id": "7b3c", + "name": "Create DualPI2 with any_ect option", + "category": [ + "qdisc", + "dualpi2" + ], + "plugins": { + "requires": "nsPlugin" + }, + "setup": [ + ], + "cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root dualpi2 any_ect", + "expExitCode": "0", + "verifyCmd": "$TC qdisc show dev $DUMMY", + "matchPattern": "qdisc dualpi2 1: root refcnt [0-9]+ limit 10000p .* any_ect", + "matchCount": "1", + "teardown": [ + "$TC qdisc del dev $DUMMY handle 1: root" + ] + }, + { + "id": "49a3", + "name": "Create DualPI2 with overflow option", + "category": [ + "qdisc", + "dualpi2" + ], + "plugins": { + "requires": "nsPlugin" + }, + "setup": [ + ], + "cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root dualpi2 overflow", + "expExitCode": "0", + "verifyCmd": "$TC qdisc show dev $DUMMY", + "matchPattern": "qdisc dualpi2 1: root refcnt [0-9]+ limit 10000p.* overflow", + "matchCount": "1", + "teardown": [ + "$TC qdisc del dev $DUMMY handle 1: root" + ] + }, + { + "id": "d0a1", + "name": "Create DualPI2 with drop_enqueue option", + "category": [ + "qdisc", + "dualpi2" + ], + "plugins": { + "requires": "nsPlugin" + }, + "setup": [ + ], + "cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root dualpi2 drop_enqueue", + "expExitCode": "0", + "verifyCmd": "$TC qdisc show dev $DUMMY", + "matchPattern": "qdisc dualpi2 1: root refcnt [0-9]+ limit 10000p .* drop_enqueue", + "matchCount": "1", + "teardown": [ + "$TC qdisc del dev $DUMMY handle 1: root" + ] + }, + { + "id": "f051", + "name": "Create DualPI2 with no_split_gso option", + "category": [ + "qdisc", + "dualpi2" + ], + "plugins": { + "requires": "nsPlugin" + }, + "setup": [ + ], + "cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root dualpi2 no_split_gso", + "expExitCode": "0", + "verifyCmd": "$TC qdisc show dev $DUMMY", + "matchPattern": "qdisc dualpi2 1: root refcnt [0-9]+ limit 10000p .* no_split_gso", + "matchCount": "1", + "teardown": [ + "$TC qdisc del dev $DUMMY handle 1: root" + ] + } +] diff --git a/tools/testing/selftests/tc-testing/tdc.sh b/tools/testing/selftests/tc-testing/tdc.sh index 589b18ed758a..2316bfdd0b4e 100755 --- a/tools/testing/selftests/tc-testing/tdc.sh +++ b/tools/testing/selftests/tc-testing/tdc.sh @@ -67,4 +67,5 @@ try_modprobe sch_hfsc try_modprobe sch_hhf try_modprobe sch_htb try_modprobe sch_teql +try_modprobe sch_dualpi2 ./tdc.py -J`nproc` From patchwork Tue Apr 22 20:16:01 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Chia-Yu Chang \(Nokia\)" X-Patchwork-Id: 883327 Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazon11010062.outbound.protection.outlook.com [52.101.69.62]) (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 765B7298CD2; Tue, 22 Apr 2025 20:16:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.69.62 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745352989; cv=fail; b=lU5xMsgzO6vDAi9fGdMfkOgWrqvmuD4Q0Sm4kXVTeZ0Y1IkbJ43A1kLyQYPDB0ekj7LUWqddmtFl9jAvV3N7qkwswn6rp/pPMK76Kb6OlUSggMCQe9ylVl6DqznT/dwtk/fs23s1TWSOD4LiRfz/usw11rQpKN0SdJe6uIC+pFI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745352989; c=relaxed/simple; bh=pZw3VEU60z0NW8GpwNJv01sOcwMmnMpbO3F14K57vsY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=Hr1OeyIfceeGqTQ7Bc3kkUh5c+UBOXBCM0iqlt5xj+FCdH/o73/AyKqW6VoQYa+c6l1TtlBOQ8fwSaZBBjAdeIDBOtI6hnwrVtPn+2uIBVE68q80JjTIhyMxHCCj/eWfypFX5djTzm0ixBriOQl7JURZV15gedZj2RhrldDB3sE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nokia-bell-labs.com; spf=fail smtp.mailfrom=nokia-bell-labs.com; dkim=pass (2048-bit key) header.d=nokia-bell-labs.com header.i=@nokia-bell-labs.com header.b=O+/Joa1P; arc=fail smtp.client-ip=52.101.69.62 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nokia-bell-labs.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nokia-bell-labs.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nokia-bell-labs.com header.i=@nokia-bell-labs.com header.b="O+/Joa1P" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ggSLnAYIMJ5NyvLTB0E4qFs9nzDMPUtSJn/QkvhJO6zL3a6J3qPw3DSC5rbPPXqurghhMtgWnm+ylDTw8xaIuwZMVupwGtyiTkFS+9fghdGa3Ktz4IYrtQBYlEFKwOsCSXjYTlzPWA8Mxc6NlwA2QQdLHjqCHZMRjtKnGZNlFhEfQ10KhA4CuyaA65DpzuTjRDAI0iHzxt2l4/jdtg+Z0aqUeQXRKUQW4miiav3umHAc9NCPErynM3kIvlmbH/NZIFlWBotrWSShRrw9usxe2IundTq1B4FpZyqFN50J9cxqWD6MzSG1ALJai5nGtFf/neG4ocG+bn8h6xw/5+2q+w== 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=TOmbsgXuO167t+Qgob+vanVapI6mnf3Wk5QGNeJwHo0=; b=lmzZUpnDhoA5lkYEMh1LgjTBcDVDfGLNbID15bEj/7CGPZnwxMGqAWTagjjMDe1IQ+N2dzQo94izK/bvfFKOswAXQ4DrKHezOkh7j2aAxeyG/Zc1jvDEP+bTYkLL6W8+xIrLQc/BxIyPDN6vLTruwR07Xg73jCpQA7aJx7ZGaEMJFEUimRstYNw6i/1vGoAEzZvbYDC9AwonjUSIqWAHOBKDtUWKHhJujo5AYowjTrDWuPWTp6vj3LuwzNErudrQY02FMbnmDEIaeufA4QgsJykHaZ3Rz+rlyePNbKAQLBnMjBB3S7JQvgkusqF3wb7gJpAfpM+ASq2feQo7gz4sew== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 131.228.2.20) smtp.rcpttodomain=apple.com smtp.mailfrom=nokia-bell-labs.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nokia-bell-labs.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nokia-bell-labs.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=TOmbsgXuO167t+Qgob+vanVapI6mnf3Wk5QGNeJwHo0=; b=O+/Joa1PiUUxF5n1drJSsdqp7TEIuUG0gDBg+OYQDdDjr/uBQ+lRXePTcsW/uEAZtWta67J1Bh5w+uNxZlEwXTauo6DR9GOm3M92Rc/Yf9D7nV264ozumjHhBjeRt/7DwcOq7HKMp95h4Yq7ObgL/qWzCAOmbMwPYaxaOwQlL50oBy87WWjapX1eBOncW6nbV/kbJvtNAA0fvfkjWnGtUa2PJnDKCI46hlo92qbwUJVqZKClbj6t6KXzF0gaLb3UVzcv7lTWd/PzNbKloZb1zxeWyFtFhXBYYUt9kdsSumpMRxPWa9MrZDumxutt99wt3IXi/pW+rIeeCvtwEpg5yA== Received: from DUZP191CA0068.EURP191.PROD.OUTLOOK.COM (2603:10a6:10:4fa::29) by AM9PR07MB7890.eurprd07.prod.outlook.com (2603:10a6:20b:303::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8655.35; Tue, 22 Apr 2025 20:16:21 +0000 Received: from DU6PEPF00009529.eurprd02.prod.outlook.com (2603:10a6:10:4fa:cafe::42) by DUZP191CA0068.outlook.office365.com (2603:10a6:10:4fa::29) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8655.36 via Frontend Transport; Tue, 22 Apr 2025 20:16:21 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 131.228.2.20) smtp.mailfrom=nokia-bell-labs.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nokia-bell-labs.com; Received-SPF: Pass (protection.outlook.com: domain of nokia-bell-labs.com designates 131.228.2.20 as permitted sender) receiver=protection.outlook.com; client-ip=131.228.2.20; helo=fihe3nok0734.emea.nsn-net.net; pr=C Received: from fihe3nok0734.emea.nsn-net.net (131.228.2.20) by DU6PEPF00009529.mail.protection.outlook.com (10.167.8.10) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8655.12 via Frontend Transport; Tue, 22 Apr 2025 20:16:21 +0000 Received: from sarah.nbl.nsn-rdnet.net (sarah.nbl.nsn-rdnet.net [10.0.73.150]) by fihe3nok0734.emea.nsn-net.net (Postfix) with ESMTP id A7AFF20094; Tue, 22 Apr 2025 23:16:19 +0300 (EEST) From: chia-yu.chang@nokia-bell-labs.com To: xandfury@gmail.com, netdev@vger.kernel.org, dave.taht@gmail.com, pabeni@redhat.com, jhs@mojatatu.com, kuba@kernel.org, stephen@networkplumber.org, xiyou.wangcong@gmail.com, jiri@resnulli.us, davem@davemloft.net, edumazet@google.com, horms@kernel.org, andrew+netdev@lunn.ch, donald.hunter@gmail.com, ast@fiberby.net, liuhangbin@gmail.com, shuah@kernel.org, linux-kselftest@vger.kernel.org, ij@kernel.org, ncardwell@google.com, koen.de_schepper@nokia-bell-labs.com, g.white@cablelabs.com, ingemar.s.johansson@ericsson.com, mirja.kuehlewind@ericsson.com, cheshire@apple.com, rs.ietf@gmx.at, Jason_Livingood@comcast.com, vidhi_goel@apple.com Cc: Chia-Yu Chang Subject: [PATCH v12 net-next 4/5] sched: Dump configuration and statistics of dualpi2 qdisc Date: Tue, 22 Apr 2025 22:16:01 +0200 Message-Id: <20250422201602.56368-5-chia-yu.chang@nokia-bell-labs.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250422201602.56368-1-chia-yu.chang@nokia-bell-labs.com> References: <20250422201602.56368-1-chia-yu.chang@nokia-bell-labs.com> Precedence: bulk X-Mailing-List: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DU6PEPF00009529:EE_|AM9PR07MB7890:EE_ X-MS-Office365-Filtering-Correlation-Id: 49ec4b32-bd38-49c4-33cf-08dd81da8c32 X-LD-Processed: 5d471751-9675-428d-917b-70f44f9630b0,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|376014|7416014|36860700013|1800799024|921020; X-Microsoft-Antispam-Message-Info: 88w9FJ7uUkROgRZuPeCtBgYpq60c81lNKrAqqmc+nj0TSPJRsI8KEjotqR9YSnu7ADe2vgKuynBIo1nRbR+LrW+YNGeu3lOphR+/kYRr4JyhGnHKuMgbM1VGJSV6H7VZFxg9OWTOEP2Nda2Bu/sdyRO1Ciud1v/SgLKrVQNS9VmYmo8AZ1Ua05MKeUBR5KGHcVB0IyETdhPyQy0EKS0u2AaZDyq+9amq/YTD/YE5SAJJlcOG5ex6g8ZiHML9xwospEqdIJSrMNnX4Y4kcI9uQDei7pnx/iOEB01rN52GQzAlqhmigbS5LGI2buEr+r59tRZ3jbxBVAiBv1LIqV9EMsZbLwY1kx5yL5uNLLTlcJA1ldCxSEzLs7MhvaAx300sodbgqd3O1sa12HxbvCSJMXA6LvzExvPnw3Il3/aUuMjNKBBFC4KjyOf/hH8A/2yRPoSeb7I7mkgWnbHpo13eioH+N9DW52xuSDof7I/q8VHLiO9POWKfLhYALrotJmDySEWt9SCI2hHCgiA2YMEJkdwN8hGwSfZPnTd3GAHfnJZE/cp8/8wfBMnGWsAnLYtkxUB/NbX+EQrNf1077hcmHs8sBToh6bbqJHoKuE0zcEmJSLIEbP2IdqzA3LKTM85HkApipFL30ShbkfMpPISBpRsVhGH0C6Dt8ytCrhGmxBMkl3KpejGHuivwQP5qF1PpguDdeI8J2T9eXrdAw9qbtFFvdJzBAOyZTIMDGK/Uwf20PA45CJRbCa96VaTXZPYSVmC0XGt2GgPhPj+txwgCutIMRuABc+0ptgchYicxm09ySDOc6jOuEQeKFJnAzBrU9KeCkMFWaigmiPMk3sWkaAW1x4i/NQT+6qlkljkm54WEda7Wl+L/G8GcYfN/fJzu/n4suaXFDQm8+W0XkoWg2487gaNxHPtyww+fmDGY0wnLwgYi4oFhBtfIF4PVk9/3aKpRe6sWsXVQgCyrIOl+NiRiHRYVa7oTKvkmNJcjhD3qr+bEmyNw4AD03POkVFs6sNFbez4ooNap73dQ5V39//6Ywyar8ORKwV2ugU+fo5hwpAz6iaP29qMEgP1GwJss+9ASkADLA8yalhkQOEsbCrHsy7597our7RtO6s6cn03lNxr25VARReoPF41rlP0sIacVSzaqzvIZKwnLKwPYZ7Rj0+RfkZAhrXJy+xMphglOHpWW2CZ4cVCWQdXuHv84v31fNkOwPJYnS9XquMsVf4q+jLnLgEvBObGOen+JM1iNnlz4rIVG3wrozdALvzsOIWFW5hD93fN9JVxkWILEkmgzQ6VM0cHhLNWRbltxLrWsox3mOCdZhC0Cp4oL9261SPQ++pa0DiXNb+HSGxcj2bsBLgGAXvWsoCllLHrhgk3wpVoZ+/ENaO6oSd42IIIP6XAZ7L63kDi3YTWZXuunkpkbt/ncMhF+U68or06M8On66vPv3l1qPAZqihyojCC/BiuXXvJWMyWj/JEMi9LpDG+Hh/GHbI2T+H8X2BA7shjl/6c+LhgIidSlGeKJ3HNITqXB8QfHmq36x7SUV+zhjg== X-Forefront-Antispam-Report: CIP:131.228.2.20; CTRY:FI; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:fihe3nok0734.emea.nsn-net.net; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(82310400026)(376014)(7416014)(36860700013)(1800799024)(921020); DIR:OUT; SFP:1101; X-OriginatorOrg: nokia-bell-labs.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2025 20:16:21.0386 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 49ec4b32-bd38-49c4-33cf-08dd81da8c32 X-MS-Exchange-CrossTenant-Id: 5d471751-9675-428d-917b-70f44f9630b0 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5d471751-9675-428d-917b-70f44f9630b0; Ip=[131.228.2.20]; Helo=[fihe3nok0734.emea.nsn-net.net] X-MS-Exchange-CrossTenant-AuthSource: DU6PEPF00009529.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR07MB7890 From: Chia-Yu Chang The configuration and statistics dump of the DualPI2 Qdisc provides information related to both queues, such as packet numbers and queuing delays in the L-queue and C-queue, as well as general information such as probability value, WRR credits, memory usage, packet marking counters, max queue size, etc. The following patch includes enqueue/dequeue for DualPI2. Signed-off-by: Chia-Yu Chang --- include/uapi/linux/pkt_sched.h | 15 ++++++ net/sched/sch_dualpi2.c | 86 ++++++++++++++++++++++++++++++++++ 2 files changed, 101 insertions(+) diff --git a/include/uapi/linux/pkt_sched.h b/include/uapi/linux/pkt_sched.h index b4caeccbea72..284e3e8bc43b 100644 --- a/include/uapi/linux/pkt_sched.h +++ b/include/uapi/linux/pkt_sched.h @@ -1234,4 +1234,19 @@ enum { #define TCA_DUALPI2_MAX (__TCA_DUALPI2_MAX - 1) +struct tc_dualpi2_xstats { + __u32 prob; /* current probability */ + __u32 delay_c; /* current delay in C queue */ + __u32 delay_l; /* current delay in L queue */ + __s32 credit; /* current c_protection credit */ + __u32 packets_in_c; /* number of packets enqueued in C queue */ + __u32 packets_in_l; /* number of packets enqueued in L queue */ + __u32 maxq; /* maximum queue size */ + __u32 ecn_mark; /* packets marked with ecn*/ + __u32 step_marks; /* ECN marks due to the step AQM */ + __u32 memory_used; /* Meory used of both queues */ + __u32 max_memory_used; /* Maximum used memory */ + __u32 memory_limit; /* Memory limit of both queues */ +}; + #endif diff --git a/net/sched/sch_dualpi2.c b/net/sched/sch_dualpi2.c index 573c7e5ba746..58be54315393 100644 --- a/net/sched/sch_dualpi2.c +++ b/net/sched/sch_dualpi2.c @@ -123,6 +123,14 @@ static u32 dualpi2_scale_alpha_beta(u32 param) return tmp; } +static u32 dualpi2_unscale_alpha_beta(u32 param) +{ + u64 tmp = ((u64)param * NSEC_PER_SEC << ALPHA_BETA_SCALING); + + do_div(tmp, MAX_PROB); + return tmp; +} + static ktime_t next_pi2_timeout(struct dualpi2_sched_data *q) { return ktime_add_ns(ktime_get_ns(), q->pi2_tupdate); @@ -430,6 +438,82 @@ static int dualpi2_init(struct Qdisc *sch, struct nlattr *opt, return 0; } +static u32 convert_ns_to_usec(u64 ns) +{ + do_div(ns, NSEC_PER_USEC); + return ns; +} + +static int dualpi2_dump(struct Qdisc *sch, struct sk_buff *skb) +{ + struct dualpi2_sched_data *q = qdisc_priv(sch); + struct nlattr *opts; + + opts = nla_nest_start_noflag(skb, TCA_OPTIONS); + if (!opts) + goto nla_put_failure; + + if (nla_put_u32(skb, TCA_DUALPI2_LIMIT, READ_ONCE(sch->limit)) || + nla_put_u32(skb, TCA_DUALPI2_MEMORY_LIMIT, + READ_ONCE(q->memory_limit)) || + nla_put_u32(skb, TCA_DUALPI2_TARGET, + convert_ns_to_usec(READ_ONCE(q->pi2_target))) || + nla_put_u32(skb, TCA_DUALPI2_TUPDATE, + convert_ns_to_usec(READ_ONCE(q->pi2_tupdate))) || + nla_put_u32(skb, TCA_DUALPI2_ALPHA, + dualpi2_unscale_alpha_beta(READ_ONCE(q->pi2_alpha))) || + nla_put_u32(skb, TCA_DUALPI2_BETA, + dualpi2_unscale_alpha_beta(READ_ONCE(q->pi2_beta))) || + nla_put_u32(skb, TCA_DUALPI2_STEP_THRESH, + READ_ONCE(q->step_in_packets) ? + READ_ONCE(q->step_thresh) : + convert_ns_to_usec(READ_ONCE(q->step_thresh))) || + nla_put_u32(skb, TCA_DUALPI2_MIN_QLEN_STEP, + READ_ONCE(q->min_qlen_step)) || + nla_put_u8(skb, TCA_DUALPI2_COUPLING, + READ_ONCE(q->coupling_factor)) || + nla_put_u8(skb, TCA_DUALPI2_DROP_OVERLOAD, + READ_ONCE(q->drop_overload)) || + nla_put_u8(skb, TCA_DUALPI2_STEP_PACKETS, + READ_ONCE(q->step_in_packets)) || + nla_put_u8(skb, TCA_DUALPI2_DROP_EARLY, + READ_ONCE(q->drop_early)) || + nla_put_u8(skb, TCA_DUALPI2_C_PROTECTION, + READ_ONCE(q->c_protection_wc)) || + nla_put_u8(skb, TCA_DUALPI2_ECN_MASK, READ_ONCE(q->ecn_mask)) || + nla_put_u8(skb, TCA_DUALPI2_SPLIT_GSO, READ_ONCE(q->split_gso))) + goto nla_put_failure; + + return nla_nest_end(skb, opts); + +nla_put_failure: + nla_nest_cancel(skb, opts); + return -1; +} + +static int dualpi2_dump_stats(struct Qdisc *sch, struct gnet_dump *d) +{ + struct dualpi2_sched_data *q = qdisc_priv(sch); + struct tc_dualpi2_xstats st = { + .prob = READ_ONCE(q->pi2_prob), + .packets_in_c = q->packets_in_c, + .packets_in_l = q->packets_in_l, + .maxq = q->maxq, + .ecn_mark = q->ecn_mark, + .credit = q->c_protection_credit, + .step_marks = q->step_marks, + .memory_used = q->memory_used, + .max_memory_used = q->max_memory_used, + .memory_limit = q->memory_limit, + }; + u64 qc, ql; + + get_queue_delays(q, &qc, &ql); + st.delay_l = convert_ns_to_usec(ql); + st.delay_c = convert_ns_to_usec(qc); + return gnet_stats_copy_app(d, &st, sizeof(st)); +} + /* Reset both L-queue and C-queue, internal packet counters, PI probability, * C-queue protection credit, and timestamps, while preserving current * configuration of DUALPI2. @@ -534,6 +618,8 @@ static struct Qdisc_ops dualpi2_qdisc_ops __read_mostly = { .destroy = dualpi2_destroy, .reset = dualpi2_reset, .change = dualpi2_change, + .dump = dualpi2_dump, + .dump_stats = dualpi2_dump_stats, .owner = THIS_MODULE, };