From patchwork Wed Mar 11 17:33:51 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Petr Machata X-Patchwork-Id: 1253099 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=mellanox.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=Mellanox.com header.i=@Mellanox.com header.a=rsa-sha256 header.s=selector1 header.b=U1yJdgzu; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 48czbt2nP7z9sRY for ; Thu, 12 Mar 2020 04:34:34 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730502AbgCKRed (ORCPT ); Wed, 11 Mar 2020 13:34:33 -0400 Received: from mail-eopbgr60070.outbound.protection.outlook.com ([40.107.6.70]:25761 "EHLO EUR04-DB3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1730458AbgCKRec (ORCPT ); Wed, 11 Mar 2020 13:34:32 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AJb0KrlsbsP9rjH4OJJJ7WRxBIhcXRVzQBzp6zMe3zPkw6a1IJNmjPwYb4YkU4u7e8kBkQIar5SDZ7f3++KM5vzJDcUkLstsyo5ogLSy0IeLgceSl3o/MtH3OU/IcgEJc1LymXERvMYjhgytYGU61xwkV4JJ+lMPZq+vbv1oTjEVy87iTrF3ArxS51XApsVMHi59wARiZX0lX5C2cMXz9htJFr1wXuC0ejgoR0p4Z/uJldA6Byv19SyuYD9PmbeiZSSObEhO9HjL9/8MT65lhlUhPbHarcmt7xVwxWHgE2GPFXMCswBwJ1cOqrx64cwwYW0RzCkR8AxsuVwYV/n+Tw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vOykC8nD/iaUzxsdZ35xdEzrhggWwtcc6h1Fs1Jl/UI=; b=WpRvucQLm8HlbIQsU1Ger5b1f9ER9ZmoM2qFRKowzmL2D/VVoidO7cCfal17T57jAxGGCWyU/tsa/1FaVYUERvlv92Vr2J8ggpeQkwbMAtF4v/3CrxIivgnpz8jjhhkpfHT0Az56lTnkuowSsEPdJycVj7lnHQfKejbxdxL1VkVhDg3/L9fH+0GG23Bpd4d0w0m748MWTMtGBehtkqmTbH9EImNV/paVVHUDaQkaMa2TVuaoM0o/gKEzt8O9dAC/cx+K1YaKDQ184diEl7F0qNNHsShmEaEJZbbvciGsHbPqTmjafGeWwIWF0j9twONbhkqg31xjZXRprUKsaIXQag== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vOykC8nD/iaUzxsdZ35xdEzrhggWwtcc6h1Fs1Jl/UI=; b=U1yJdgzu4RG/HwnkFAwxINdDx0WiCsjMBTgmuAHw3O3nNEvXVH41qqBzzMXh6+OSZCCvetHS70W7J0VQR1izkLppovdK/D2CioIzCJBlSvb5tZ+6I66P3J2h+k+9bxvU5jF/+ARmarDpT9xCXR2xMfqHOdoalirIs85yNoiJwRM= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=petrm@mellanox.com; Received: from HE1PR05MB4746.eurprd05.prod.outlook.com (20.176.168.150) by HE1PR05MB3449.eurprd05.prod.outlook.com (10.170.248.28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2793.17; Wed, 11 Mar 2020 17:34:28 +0000 Received: from HE1PR05MB4746.eurprd05.prod.outlook.com ([fe80::c146:9acd:f4dc:4e32]) by HE1PR05MB4746.eurprd05.prod.outlook.com ([fe80::c146:9acd:f4dc:4e32%7]) with mapi id 15.20.2793.018; Wed, 11 Mar 2020 17:34:28 +0000 From: Petr Machata To: netdev@vger.kernel.org Cc: Petr Machata , Jakub Kicinski , Roman Mashak , jhs@mojatatu.com, xiyou.wangcong@gmail.com, davem@davemloft.net, jiri@mellanox.com, mlxsw@mellanox.com Subject: [PATCH net-next v2 1/6] selftests: qdiscs: Add TDC test for RED Date: Wed, 11 Mar 2020 19:33:51 +0200 Message-Id: <20200311173356.38181-2-petrm@mellanox.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200311173356.38181-1-petrm@mellanox.com> References: <20200311173356.38181-1-petrm@mellanox.com> X-ClientProxiedBy: PR0P264CA0197.FRAP264.PROD.OUTLOOK.COM (2603:10a6:100:1f::17) To HE1PR05MB4746.eurprd05.prod.outlook.com (2603:10a6:7:a3::22) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from dev-r-vrt-156.mtr.labs.mlnx (37.142.13.130) by PR0P264CA0197.FRAP264.PROD.OUTLOOK.COM (2603:10a6:100:1f::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2793.15 via Frontend Transport; Wed, 11 Mar 2020 17:34:27 +0000 X-Mailer: git-send-email 2.20.1 X-Originating-IP: [37.142.13.130] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 82e471b4-a33e-46d4-72a5-08d7c5e27347 X-MS-TrafficTypeDiagnostic: HE1PR05MB3449:|HE1PR05MB3449: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1751; X-Forefront-PRVS: 0339F89554 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4636009)(39860400002)(396003)(346002)(366004)(136003)(376002)(199004)(6506007)(186003)(107886003)(6666004)(81156014)(4326008)(81166006)(26005)(16526019)(8936002)(8676002)(2616005)(2906002)(86362001)(956004)(36756003)(6512007)(66476007)(66556008)(6486002)(6916009)(316002)(478600001)(1076003)(54906003)(52116002)(5660300002)(66946007); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR05MB3449; H:HE1PR05MB4746.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: SYRcVIaGkKz765HPqUkiL6ttZ7o6ZtRGFdLHGCIAAHUL62djy3afsnSCPoxsDrSaaXMBGax9oypRMfJTHXF2D+ft4eXL9fU4RyORLKeP2Y9PPbzTM7uT1JXV7c+Oo4Yd1pTKtcS0ZlQFM1E+MISFFU9Gl0ZOY4DAgmOT/g10VD93Glsd2fxp575v0wSxmRoEmqIu0Dybr9QKWjnKsQTdk6loYYJmgL39JWF4wMrqxMBecTDLeATxbMXZ3rUTPa3R4YLI3A4Okwq33JFZ1n9v/6OgtTL0TBIeJ/YQRd6U0ik3CUz4GJbrwC+F2L8buJprqx0DDnQhSWwOjqm9YncvWZiVTSFDqZ8cbIPKDcM5PNLXUy+tX3SEtrXy0wZ6znc8CPlrSJnyz8TLK2Fe66bX9Xx7uhspCBCLOKczLijJQf0wZNN4Wx30mcrEFObaqOTH X-MS-Exchange-AntiSpam-MessageData: B5Jlf5pu8lHfuUqgsOI2ZBIubQqot0mCb4UIFp9I4jObl1GNYMSEacjjTC5Wn5QUGhYgSlOy/HQcXLHiO9VBS5QfDUqNDCe0mOGBXrPz82psqeYCwTaV7lhYW6tKiejvKwbsPIjQacWfworsNbLKTg== X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 82e471b4-a33e-46d4-72a5-08d7c5e27347 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Mar 2020 17:34:28.5846 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: V3cgYPNv8y1RbQbr8kfUsW/Zi91s5nJmeNrg4x957bTWUZ60DG+7wD7JWW+QB+QKlxOmLOpU6/u4L+58uqqWIw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR05MB3449 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Add a handful of tests for creating RED with different flags. Signed-off-by: Petr Machata Reviewed-by: Roman Mashak --- Notes: v2: - Require nsPlugin in each RED test - Match end-of-line to catch cases of more flags reported than requested .../tc-testing/tc-tests/qdiscs/red.json | 117 ++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 tools/testing/selftests/tc-testing/tc-tests/qdiscs/red.json diff --git a/tools/testing/selftests/tc-testing/tc-tests/qdiscs/red.json b/tools/testing/selftests/tc-testing/tc-tests/qdiscs/red.json new file mode 100644 index 000000000000..b70a54464897 --- /dev/null +++ b/tools/testing/selftests/tc-testing/tc-tests/qdiscs/red.json @@ -0,0 +1,117 @@ +[ + { + "id": "8b6e", + "name": "Create RED with no flags", + "category": [ + "qdisc", + "red" + ], + "plugins": { + "requires": "nsPlugin" + }, + "setup": [ + "$IP link add dev $DUMMY type dummy || /bin/true" + ], + "cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root red limit 1M avpkt 1500 min 100K max 300K", + "expExitCode": "0", + "verifyCmd": "$TC qdisc show dev $DUMMY", + "matchPattern": "qdisc red 1: root .* limit 1Mb min 100Kb max 300Kb $", + "matchCount": "1", + "teardown": [ + "$TC qdisc del dev $DUMMY handle 1: root", + "$IP link del dev $DUMMY type dummy" + ] + }, + { + "id": "342e", + "name": "Create RED with adaptive flag", + "category": [ + "qdisc", + "red" + ], + "plugins": { + "requires": "nsPlugin" + }, + "setup": [ + "$IP link add dev $DUMMY type dummy || /bin/true" + ], + "cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root red adaptive limit 1M avpkt 1500 min 100K max 300K", + "expExitCode": "0", + "verifyCmd": "$TC qdisc show dev $DUMMY", + "matchPattern": "qdisc red 1: root .* limit 1Mb min 100Kb max 300Kb adaptive $", + "matchCount": "1", + "teardown": [ + "$TC qdisc del dev $DUMMY handle 1: root", + "$IP link del dev $DUMMY type dummy" + ] + }, + { + "id": "2d4b", + "name": "Create RED with ECN flag", + "category": [ + "qdisc", + "red" + ], + "plugins": { + "requires": "nsPlugin" + }, + "setup": [ + "$IP link add dev $DUMMY type dummy || /bin/true" + ], + "cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root red ecn limit 1M avpkt 1500 min 100K max 300K", + "expExitCode": "0", + "verifyCmd": "$TC qdisc show dev $DUMMY", + "matchPattern": "qdisc red 1: root .* limit 1Mb min 100Kb max 300Kb ecn $", + "matchCount": "1", + "teardown": [ + "$TC qdisc del dev $DUMMY handle 1: root", + "$IP link del dev $DUMMY type dummy" + ] + }, + { + "id": "650f", + "name": "Create RED with flags ECN, adaptive", + "category": [ + "qdisc", + "red" + ], + "plugins": { + "requires": "nsPlugin" + }, + "setup": [ + "$IP link add dev $DUMMY type dummy || /bin/true" + ], + "cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root red ecn adaptive limit 1M avpkt 1500 min 100K max 300K", + "expExitCode": "0", + "verifyCmd": "$TC qdisc show dev $DUMMY", + "matchPattern": "qdisc red 1: root .* limit 1Mb min 100Kb max 300Kb ecn adaptive $", + "matchCount": "1", + "teardown": [ + "$TC qdisc del dev $DUMMY handle 1: root", + "$IP link del dev $DUMMY type dummy" + ] + }, + { + "id": "5f15", + "name": "Create RED with flags ECN, harddrop", + "category": [ + "qdisc", + "red" + ], + "plugins": { + "requires": "nsPlugin" + }, + "setup": [ + "$IP link add dev $DUMMY type dummy || /bin/true" + ], + "cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root red ecn harddrop limit 1M avpkt 1500 min 100K max 300K", + "expExitCode": "0", + "verifyCmd": "$TC qdisc show dev $DUMMY", + "matchPattern": "qdisc red 1: root .* limit 1Mb min 100Kb max 300Kb ecn harddrop $", + "matchCount": "1", + "teardown": [ + "$TC qdisc del dev $DUMMY handle 1: root", + "$IP link del dev $DUMMY type dummy" + ] + } +] From patchwork Wed Mar 11 17:33:52 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Petr Machata X-Patchwork-Id: 1253100 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=mellanox.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=Mellanox.com header.i=@Mellanox.com header.a=rsa-sha256 header.s=selector1 header.b=gNorI+8q; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 48czbw3Lq0z9sRR for ; Thu, 12 Mar 2020 04:34:36 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730518AbgCKRef (ORCPT ); Wed, 11 Mar 2020 13:34:35 -0400 Received: from mail-eopbgr60070.outbound.protection.outlook.com ([40.107.6.70]:25761 "EHLO EUR04-DB3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1730375AbgCKRee (ORCPT ); Wed, 11 Mar 2020 13:34:34 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cPiZUCn+yiHgICUsG8ItXz9WqqEbQ0OkUrPXX/s3hQhRETU7qtsCJsm9EayjHo56ar4MBr2yR0OP3hBO2vVEjYoae8wks9FKj27TVSqoMgpuSN2b70zSleiVxebjEjYB8yIRSZK76xievrxx5TjqSgN/Nvd0cixqOPQrUSEOkTDxnZHy1mpyjkHJOsbKlOSIDkNtbw7EdyzC1XhZ8Cf/BklaIDz5539UriKry7mNN/Q9blAZdDWQ+9F7YvY53AZCFXQYbBrv4HtK3R1Ho9Tl29+wiGidaOBtCKdrI95wpD5P1K9DAGFxnMeg6edlTzDV1NQ6sfEQX1Sm5gsfldK3Qg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=bAEr2vtim63JHx1KFGVbpFqG8qCXsAc/+DgnJ7pdCyw=; b=OCWDtqHMSYqm6pqF5DilCEQN7W67h7ZY9PMbezC+vUsjOu1zGcE2sdapWFCXTgERr6Rm1rimaZoaz2xuMypjwhHbhlTj0pHwvCjsyxWOaFg+P9LMXk6ttpSnq2dDjUlvauXgQPGSKuB98AYTpffNugUZuk4TJw/h6ruQ7jUv2fR50UDn+zJRnbLeZ6IsR1jbTTM+xwlQQ3Eh4h5Pl6UOwALhZmcfS/rV6KPCUaK6rNtzxH14E2bcudIHMmauCO181Z6MMosClDtA9xMdEk4FuuKwNWuUwDDuCfndGxaA+1bUi8pFUSlUBPGOZerGuWj8YxMIBf9RW6KKy682VvGIBA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=bAEr2vtim63JHx1KFGVbpFqG8qCXsAc/+DgnJ7pdCyw=; b=gNorI+8qmz6uCpXlyT//t+YRaLge6h93zm6OhBlbReXuYBo/m7tvqgSEEhfKq0ASPcOQexLMXlNALywk6FZUiEDlkJbE4xWfqPOCi79vAEaVd+pKOTceVVBMnnc8yccfUYCh89iukGo8MmGlgkOem5++K8YRCYCSemuJL7KirEc= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=petrm@mellanox.com; Received: from HE1PR05MB4746.eurprd05.prod.outlook.com (20.176.168.150) by HE1PR05MB3449.eurprd05.prod.outlook.com (10.170.248.28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2793.17; Wed, 11 Mar 2020 17:34:30 +0000 Received: from HE1PR05MB4746.eurprd05.prod.outlook.com ([fe80::c146:9acd:f4dc:4e32]) by HE1PR05MB4746.eurprd05.prod.outlook.com ([fe80::c146:9acd:f4dc:4e32%7]) with mapi id 15.20.2793.018; Wed, 11 Mar 2020 17:34:30 +0000 From: Petr Machata To: netdev@vger.kernel.org Cc: Petr Machata , Jakub Kicinski , Roman Mashak , jhs@mojatatu.com, xiyou.wangcong@gmail.com, davem@davemloft.net, jiri@mellanox.com, mlxsw@mellanox.com Subject: [PATCH net-next v2 2/6] net: sched: Allow extending set of supported RED flags Date: Wed, 11 Mar 2020 19:33:52 +0200 Message-Id: <20200311173356.38181-3-petrm@mellanox.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200311173356.38181-1-petrm@mellanox.com> References: <20200311173356.38181-1-petrm@mellanox.com> X-ClientProxiedBy: PR0P264CA0197.FRAP264.PROD.OUTLOOK.COM (2603:10a6:100:1f::17) To HE1PR05MB4746.eurprd05.prod.outlook.com (2603:10a6:7:a3::22) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from dev-r-vrt-156.mtr.labs.mlnx (37.142.13.130) by PR0P264CA0197.FRAP264.PROD.OUTLOOK.COM (2603:10a6:100:1f::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2793.15 via Frontend Transport; Wed, 11 Mar 2020 17:34:28 +0000 X-Mailer: git-send-email 2.20.1 X-Originating-IP: [37.142.13.130] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: ec93eb9a-f304-49e7-69a2-08d7c5e2743f X-MS-TrafficTypeDiagnostic: HE1PR05MB3449:|HE1PR05MB3449: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:9508; X-Forefront-PRVS: 0339F89554 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4636009)(39860400002)(396003)(346002)(366004)(136003)(376002)(199004)(6506007)(186003)(107886003)(6666004)(81156014)(4326008)(81166006)(26005)(16526019)(8936002)(8676002)(2616005)(2906002)(86362001)(956004)(36756003)(6512007)(66476007)(66556008)(6486002)(6916009)(316002)(478600001)(1076003)(54906003)(52116002)(5660300002)(66946007); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR05MB3449; H:HE1PR05MB4746.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: MIAxdBulW/XxPIaMhCVz9E8bU8z7EJSP3WPE+htJzuGhdIR4kH6n6YOrFwLoipoS80ZUcR+pGrQi13BP8OUOy/DbB912/a5onH51rMSb2niabghKskCstLS4JNb7a46zKe0Xx7hOUlMWsaSFrocAFadtt9ItrKv60m26pjpwS1O7nfAkyr7FH+Co7BoI3gIwA3JmwBh1TTso2HLrrPNdJnVzTFJLBq9M8mCMN9KzHJmK1twBFh791I0S8fNXDhrY5wQCIne/rVqrGp/PW4o5jT9sL15hOATdjK2mPHLDVzv1z7BGfLqCurPJ/da+30W+ySkbCPI6EyLgFQvUMK6osoHBPXQRItWIIU3tz/Ss5FhYWyi1FGI41fIHDc+nzD417IQydXpdusFEOFsIeB5ZCBvt80JoKYVD8s+14So/4lUgVPck2DPLEh8lxoDaqpuE X-MS-Exchange-AntiSpam-MessageData: Ess6EEtgyJkMCy49YnV9IJRgDQXDYkOzp6O7aDYNi26Gm4jr7WgRoM69/aGEU9/RNXDtiO4m1eNtWi7bGbb4b1oAyIqCwGRdeA4KSEWROU3LUNnlChz73l7KV5950w4cOdqgN1ChzLS1BEPaaY8RTA== X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: ec93eb9a-f304-49e7-69a2-08d7c5e2743f X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Mar 2020 17:34:30.1787 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: fPo5R6ncUjIfMTVG5/gVoKY2//BTL0d5qLIx2228AXglRu9CUim0XI++1Ekz2LxK2VHCXXdS4VN/aMLWiSA3Dw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR05MB3449 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The qdiscs RED, GRED, SFQ and CHOKE use different subsets of the same pool of global RED flags. These are passed in tc_red_qopt.flags. However none of these qdiscs validate the flag field, and just copy it over wholesale to internal structures, and later dump it back. (An exception is GRED, which does validate for VQs -- however not for the main setup.) A broken userspace can therefore configure a qdisc with arbitrary unsupported flags, and later expect to see the flags on qdisc dump. The current ABI therefore allows storage of several bits of custom data to qdisc instances of the types mentioned above. How many bits, depends on which flags are meaningful for the qdisc in question. E.g. SFQ recognizes flags ECN and HARDDROP, and the rest is not interpreted. If SFQ ever needs to support ADAPTATIVE, it needs another way of doing it, and at the same time it needs to retain the possibility to store 6 bits of uninterpreted data. Likewise RED, which adds a new flag later in this patchset. To that end, this patch adds a new function, red_get_flags(), to split the passed flags of RED-like qdiscs to flags and user bits, and to validate the flags that are passed in. It further adds a new attribute, TCA_RED_FLAGS, to pass arbitrary flags. Signed-off-by: Petr Machata --- Notes: v2: - This patch is new. include/net/red.h | 25 +++++++++++++++++++++++++ include/uapi/linux/pkt_sched.h | 16 ++++++++++++++++ net/sched/sch_red.c | 24 +++++++++++++++++++++--- 3 files changed, 62 insertions(+), 3 deletions(-) diff --git a/include/net/red.h b/include/net/red.h index 9665582c4687..5718d2b25637 100644 --- a/include/net/red.h +++ b/include/net/red.h @@ -179,6 +179,31 @@ static inline bool red_check_params(u32 qth_min, u32 qth_max, u8 Wlog) return true; } +static inline bool red_get_flags(unsigned char flags, + unsigned char historic_mask, + struct nlattr *flags_attr, + unsigned int supported_mask, + unsigned int *p_flags, unsigned char *p_userbits, + struct netlink_ext_ack *extack) +{ + if (flags && flags_attr) { + NL_SET_ERR_MSG_MOD(extack, "flags should be passed either through qopt, or through a dedicated attribute"); + return false; + } + + *p_flags = flags & historic_mask; + if (flags_attr) + *p_flags |= nla_get_u32(flags_attr); + + if (*p_flags & ~supported_mask) { + NL_SET_ERR_MSG_MOD(extack, "unsupported RED flags specified"); + return false; + } + + *p_userbits = flags & ~historic_mask; + return true; +} + static inline void red_set_parms(struct red_parms *p, u32 qth_min, u32 qth_max, u8 Wlog, u8 Plog, u8 Scell_log, u8 *stab, u32 max_P) diff --git a/include/uapi/linux/pkt_sched.h b/include/uapi/linux/pkt_sched.h index bbe791b24168..277df546e1a9 100644 --- a/include/uapi/linux/pkt_sched.h +++ b/include/uapi/linux/pkt_sched.h @@ -256,6 +256,7 @@ enum { TCA_RED_PARMS, TCA_RED_STAB, TCA_RED_MAX_P, + TCA_RED_FLAGS, /* u32 */ __TCA_RED_MAX, }; @@ -268,12 +269,27 @@ struct tc_red_qopt { unsigned char Wlog; /* log(W) */ unsigned char Plog; /* log(P_max/(qth_max-qth_min)) */ unsigned char Scell_log; /* cell size for idle damping */ + + /* This field can be used for flags that a RED-like qdisc has + * historically supported. E.g. when configuring RED, it can be used for + * ECN, HARDDROP and ADAPTATIVE. For SFQ it can be used for ECN, + * HARDDROP. Etc. Because this field has not been validated, and is + * copied back on dump, any bits besides those to which a given qdisc + * has assigned a historical meaning need to be considered for free use + * by userspace tools. + * + * Any further flags need to be passed differently, e.g. through an + * attribute (such as TCA_RED_FLAGS above). Such attribute should allow + * passing both recent and historic flags in one value. + */ unsigned char flags; #define TC_RED_ECN 1 #define TC_RED_HARDDROP 2 #define TC_RED_ADAPTATIVE 4 }; +#define TC_RED_HISTORIC_FLAGS (TC_RED_ECN | TC_RED_HARDDROP | TC_RED_ADAPTATIVE) + struct tc_red_xstats { __u32 early; /* Early drops */ __u32 pdrop; /* Drops due to queue limits */ diff --git a/net/sched/sch_red.c b/net/sched/sch_red.c index 1695421333e3..61d7c5a61279 100644 --- a/net/sched/sch_red.c +++ b/net/sched/sch_red.c @@ -35,7 +35,11 @@ struct red_sched_data { u32 limit; /* HARD maximal queue length */ - unsigned char flags; + + u32 flags; + /* Non-flags in tc_red_qopt.flags. */ + unsigned char userbits; + struct timer_list adapt_timer; struct Qdisc *sch; struct red_parms parms; @@ -44,6 +48,8 @@ struct red_sched_data { struct Qdisc *qdisc; }; +#define RED_SUPPORTED_FLAGS TC_RED_HISTORIC_FLAGS + static inline int red_use_ecn(struct red_sched_data *q) { return q->flags & TC_RED_ECN; @@ -186,6 +192,7 @@ static const struct nla_policy red_policy[TCA_RED_MAX + 1] = { [TCA_RED_PARMS] = { .len = sizeof(struct tc_red_qopt) }, [TCA_RED_STAB] = { .len = RED_STAB_SIZE }, [TCA_RED_MAX_P] = { .type = NLA_U32 }, + [TCA_RED_FLAGS] = { .type = NLA_U32 }, }; static int red_change(struct Qdisc *sch, struct nlattr *opt, @@ -195,6 +202,8 @@ static int red_change(struct Qdisc *sch, struct nlattr *opt, struct red_sched_data *q = qdisc_priv(sch); struct nlattr *tb[TCA_RED_MAX + 1]; struct tc_red_qopt *ctl; + unsigned char userbits; + u32 flags; int err; u32 max_P; @@ -216,6 +225,11 @@ static int red_change(struct Qdisc *sch, struct nlattr *opt, if (!red_check_params(ctl->qth_min, ctl->qth_max, ctl->Wlog)) return -EINVAL; + if (!red_get_flags(ctl->flags, TC_RED_HISTORIC_FLAGS, + tb[TCA_RED_FLAGS], RED_SUPPORTED_FLAGS, + &flags, &userbits, extack)) + return -EINVAL; + if (ctl->limit > 0) { child = fifo_create_dflt(sch, &bfifo_qdisc_ops, ctl->limit, extack); @@ -227,7 +241,8 @@ static int red_change(struct Qdisc *sch, struct nlattr *opt, } sch_tree_lock(sch); - q->flags = ctl->flags; + q->flags = flags; + q->userbits = userbits; q->limit = ctl->limit; if (child) { qdisc_tree_flush_backlog(q->qdisc); @@ -302,7 +317,8 @@ static int red_dump(struct Qdisc *sch, struct sk_buff *skb) struct nlattr *opts = NULL; struct tc_red_qopt opt = { .limit = q->limit, - .flags = q->flags, + .flags = ((q->flags & TC_RED_HISTORIC_FLAGS) | + q->userbits), .qth_min = q->parms.qth_min >> q->parms.Wlog, .qth_max = q->parms.qth_max >> q->parms.Wlog, .Wlog = q->parms.Wlog, @@ -321,6 +337,8 @@ static int red_dump(struct Qdisc *sch, struct sk_buff *skb) if (nla_put(skb, TCA_RED_PARMS, sizeof(opt), &opt) || nla_put_u32(skb, TCA_RED_MAX_P, q->parms.max_P)) goto nla_put_failure; + if (q->flags & ~TC_RED_HISTORIC_FLAGS) + nla_put_u32(skb, TCA_RED_FLAGS, q->flags); return nla_nest_end(skb, opts); nla_put_failure: From patchwork Wed Mar 11 17:33:53 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Petr Machata X-Patchwork-Id: 1253101 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=mellanox.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=Mellanox.com header.i=@Mellanox.com header.a=rsa-sha256 header.s=selector1 header.b=JaNz1VU9; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 48czby4gGBz9sRR for ; Thu, 12 Mar 2020 04:34:38 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730551AbgCKReh (ORCPT ); Wed, 11 Mar 2020 13:34:37 -0400 Received: from mail-eopbgr60070.outbound.protection.outlook.com ([40.107.6.70]:25761 "EHLO EUR04-DB3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1730458AbgCKReh (ORCPT ); Wed, 11 Mar 2020 13:34:37 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JkKHh7PgVmZie4tH5JfxhlHbCF47sgtNg7I1zD8Y+xcoT0sgAd5e9PNGXpKrCKkAbo9FczUdO6kFB8KzHwnlRrhpCQEFp2wh3CziqeAvoo99jFCxM0U2pC0BTG/XFBHt7jlTgx6Rse7JVd0ICZ8uKdYye2w/OrhjYDxOLO8l+Y3bro8RWOTEp65eZM03AR9Y2TEojurU4hPpatRxo7yBgz6bVpFHEy1o1uNJ2cpoUOaGliwJfUAHTJH/27rtc43/zS2jpWeUBspWIUXI9iZh0dqMnpdngxwZOFf7qjQkOZue4DSQ88uF/eEOiDAM/y6YRHD4QLNGTB1YDdYODsVfeQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=L3aRxSj5xnzuACnbu7S28eI+8+NVVARzZnoqlR4OfkQ=; b=ZOqqKvYtrgVa16VlkcCKOqLh2G7mTX7+Zt+cEDY5t1BS+q1hSJZSH1pLsVrURAEs9dHLI7aB/47UC5hIqu5CHRZpxEurVNrIaHgVgQYC8nEqWbrvpxPdkKUQnOL7IfEKagbH7ngDTjgCqIJRg/uHja2/2nJvdlih8kZWQuIWtoMmfDK7xbJo+28s8X9MDcm+hRxwAiwb99EvX36EqC51PRlh9xfOEQW2zESz2ZR/4cNpQlJZbQHbQ/SqKnR1j1z2nvfyECMhbyAQESAcOWX5BF0f2qX/vKWDcWI3jxGPeTBS0E4drj85N6iD24PvAJ4Mvr4Q7wbfSicemPQdBHUVfg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=L3aRxSj5xnzuACnbu7S28eI+8+NVVARzZnoqlR4OfkQ=; b=JaNz1VU98lUEszAmdYI2x+boJlLDIhEaT51Umqpd+ZV92gHt7C9pznOooiJNWCo22bHMjx0HOcOBvc2jYTtNlxwkoaP6+4H6FIo9efgSStf35nTnL4eAY745briSi0/3QA6Dz825I2hfAsjdluBmMp8XRs4ZLzs0RHOGPxuzMos= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=petrm@mellanox.com; Received: from HE1PR05MB4746.eurprd05.prod.outlook.com (20.176.168.150) by HE1PR05MB3449.eurprd05.prod.outlook.com (10.170.248.28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2793.17; Wed, 11 Mar 2020 17:34:31 +0000 Received: from HE1PR05MB4746.eurprd05.prod.outlook.com ([fe80::c146:9acd:f4dc:4e32]) by HE1PR05MB4746.eurprd05.prod.outlook.com ([fe80::c146:9acd:f4dc:4e32%7]) with mapi id 15.20.2793.018; Wed, 11 Mar 2020 17:34:31 +0000 From: Petr Machata To: netdev@vger.kernel.org Cc: Petr Machata , Jakub Kicinski , Roman Mashak , jhs@mojatatu.com, xiyou.wangcong@gmail.com, davem@davemloft.net, jiri@mellanox.com, mlxsw@mellanox.com Subject: [PATCH net-next v2 3/6] net: sched: RED: Introduce an ECN tail-dropping mode Date: Wed, 11 Mar 2020 19:33:53 +0200 Message-Id: <20200311173356.38181-4-petrm@mellanox.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200311173356.38181-1-petrm@mellanox.com> References: <20200311173356.38181-1-petrm@mellanox.com> X-ClientProxiedBy: PR0P264CA0197.FRAP264.PROD.OUTLOOK.COM (2603:10a6:100:1f::17) To HE1PR05MB4746.eurprd05.prod.outlook.com (2603:10a6:7:a3::22) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from dev-r-vrt-156.mtr.labs.mlnx (37.142.13.130) by PR0P264CA0197.FRAP264.PROD.OUTLOOK.COM (2603:10a6:100:1f::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2793.15 via Frontend Transport; Wed, 11 Mar 2020 17:34:30 +0000 X-Mailer: git-send-email 2.20.1 X-Originating-IP: [37.142.13.130] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 5c10636b-914e-4571-31e8-08d7c5e27529 X-MS-TrafficTypeDiagnostic: HE1PR05MB3449:|HE1PR05MB3449: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:8273; X-Forefront-PRVS: 0339F89554 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4636009)(39860400002)(396003)(346002)(366004)(136003)(376002)(199004)(6506007)(186003)(107886003)(6666004)(81156014)(4326008)(81166006)(26005)(16526019)(8936002)(8676002)(2616005)(2906002)(86362001)(956004)(36756003)(6512007)(66476007)(66556008)(6486002)(6916009)(316002)(478600001)(1076003)(54906003)(52116002)(5660300002)(66946007); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR05MB3449; H:HE1PR05MB4746.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: QuevtkeJcSv528MHeV5zhn6ZfwG4y1uxXN2XfVbl6JA9dLkw3GkCaBs+f3Az548mvfn3BXRAZMPPzX4fsMAQ9ot9Oi3bbh4xErNZbGPqmXn/nuSnnYsHxoNfAN6XddfDN1scqofcUL88DUeZ0ZJH/wTAoyWUiBWuPRTPe5761YLYR/UMFCYt6rIR8gaxeD0Vu8XPywxwSF33ySnAly/uzRrhhTV7ENlBhKfVjSUMwR73+jFNpkYFdwCUEJn36BN/o8FDSG3MtKJUlZd/ATgF4EtkD9ndrg8w9ao/875rcqU1/uoACcI0kzRLEiVDRmIRSjsRGkXHmC/EJ1I1FnwVeJwqInCH6q6hL5XTpkRhYoGUmAfVthOGb9es6jcM+QU5Zo5PGAwjqnlpyU1It5r39ABnwRx5PjM3T93c1D1WK27H9B6axW09/c6LaowiyzG8 X-MS-Exchange-AntiSpam-MessageData: dQE2uBrymwVQztKlr3/x9G0GA6hoOLo/CAqVl/Q0D4J9M58rlK/uuQH/KOf1SnsZoUCrbtEw+lxj1C7ydrcecE4suFF4Sm31T1vUYF9Fb+4jAN26TBzBewzMsVVkjL+VWDrhCzeQnvbEnruIabUl2g== X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5c10636b-914e-4571-31e8-08d7c5e27529 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Mar 2020 17:34:31.7328 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: ZeNPFU/ckpISc2/oRd9Zbns6NbjO7vDaWW7g5gytM/eeRQVA5bmUhhko0lIqDsFe4s1Vp0K5ot3zR8uZmeC2ww== X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR05MB3449 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org When the RED Qdisc is currently configured to enable ECN, the RED algorithm is used to decide whether a certain SKB should be marked. If that SKB is not ECN-capable, it is early-dropped. It is also possible to keep all traffic in the queue, and just mark the ECN-capable subset of it, as appropriate under the RED algorithm. Some switches support this mode, and some installations make use of it. To that end, add a new RED flag, TC_RED_TAILDROP. When the Qdisc is configured with this flag, non-ECT traffic is enqueued (and tail-dropped when the queue size is exhausted) instead of being early-dropped. Signed-off-by: Petr Machata --- Notes: v2: - Fix red_use_taildrop() condition in red_enqueue switch for probabilistic case. include/net/pkt_cls.h | 1 + include/net/red.h | 5 +++++ include/uapi/linux/pkt_sched.h | 1 + net/sched/sch_red.c | 31 +++++++++++++++++++++++++------ 4 files changed, 32 insertions(+), 6 deletions(-) diff --git a/include/net/pkt_cls.h b/include/net/pkt_cls.h index 341a66af8d59..9ad369aba678 100644 --- a/include/net/pkt_cls.h +++ b/include/net/pkt_cls.h @@ -727,6 +727,7 @@ struct tc_red_qopt_offload_params { u32 limit; bool is_ecn; bool is_harddrop; + bool is_taildrop; struct gnet_stats_queue *qstats; }; diff --git a/include/net/red.h b/include/net/red.h index 5718d2b25637..372b4988118c 100644 --- a/include/net/red.h +++ b/include/net/red.h @@ -200,6 +200,11 @@ static inline bool red_get_flags(unsigned char flags, return false; } + if ((*p_flags & TC_RED_TAILDROP) && !(*p_flags & TC_RED_ECN)) { + NL_SET_ERR_MSG_MOD(extack, "taildrop mode is only meaningful with ECN"); + return false; + } + *p_userbits = flags & ~historic_mask; return true; } diff --git a/include/uapi/linux/pkt_sched.h b/include/uapi/linux/pkt_sched.h index 277df546e1a9..45d1c0e6444e 100644 --- a/include/uapi/linux/pkt_sched.h +++ b/include/uapi/linux/pkt_sched.h @@ -286,6 +286,7 @@ struct tc_red_qopt { #define TC_RED_ECN 1 #define TC_RED_HARDDROP 2 #define TC_RED_ADAPTATIVE 4 +#define TC_RED_TAILDROP 8 }; #define TC_RED_HISTORIC_FLAGS (TC_RED_ECN | TC_RED_HARDDROP | TC_RED_ADAPTATIVE) diff --git a/net/sched/sch_red.c b/net/sched/sch_red.c index 61d7c5a61279..1474f973ec6d 100644 --- a/net/sched/sch_red.c +++ b/net/sched/sch_red.c @@ -48,7 +48,7 @@ struct red_sched_data { struct Qdisc *qdisc; }; -#define RED_SUPPORTED_FLAGS TC_RED_HISTORIC_FLAGS +#define RED_SUPPORTED_FLAGS (TC_RED_HISTORIC_FLAGS | TC_RED_TAILDROP) static inline int red_use_ecn(struct red_sched_data *q) { @@ -60,6 +60,11 @@ static inline int red_use_harddrop(struct red_sched_data *q) return q->flags & TC_RED_HARDDROP; } +static inline int red_use_taildrop(struct red_sched_data *q) +{ + return q->flags & TC_RED_TAILDROP; +} + static int red_enqueue(struct sk_buff *skb, struct Qdisc *sch, struct sk_buff **to_free) { @@ -80,23 +85,36 @@ static int red_enqueue(struct sk_buff *skb, struct Qdisc *sch, case RED_PROB_MARK: qdisc_qstats_overlimit(sch); - if (!red_use_ecn(q) || !INET_ECN_set_ce(skb)) { + if (!red_use_ecn(q)) { q->stats.prob_drop++; goto congestion_drop; } - q->stats.prob_mark++; + if (INET_ECN_set_ce(skb)) { + q->stats.prob_mark++; + } else if (!red_use_taildrop(q)) { + q->stats.prob_drop++; + goto congestion_drop; + } + + /* Non-ECT packet in ECN taildrop mode: queue it. */ break; case RED_HARD_MARK: qdisc_qstats_overlimit(sch); - if (red_use_harddrop(q) || !red_use_ecn(q) || - !INET_ECN_set_ce(skb)) { + if (red_use_harddrop(q) || !red_use_ecn(q)) { q->stats.forced_drop++; goto congestion_drop; } - q->stats.forced_mark++; + if (INET_ECN_set_ce(skb)) { + q->stats.forced_mark++; + } else if (!red_use_taildrop(q)) { + q->stats.forced_drop++; + goto congestion_drop; + } + + /* Non-ECT packet in ECN taildrop mode: queue it. */ break; } @@ -171,6 +189,7 @@ static int red_offload(struct Qdisc *sch, bool enable) opt.set.limit = q->limit; opt.set.is_ecn = red_use_ecn(q); opt.set.is_harddrop = red_use_harddrop(q); + opt.set.is_taildrop = red_use_taildrop(q); opt.set.qstats = &sch->qstats; } else { opt.command = TC_RED_DESTROY; From patchwork Wed Mar 11 17:33:54 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Petr Machata X-Patchwork-Id: 1253102 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=mellanox.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=Mellanox.com header.i=@Mellanox.com header.a=rsa-sha256 header.s=selector1 header.b=Sa/jYhHQ; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 48czc03r9Mz9sPF for ; Thu, 12 Mar 2020 04:34:40 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730565AbgCKRej (ORCPT ); Wed, 11 Mar 2020 13:34:39 -0400 Received: from mail-eopbgr60070.outbound.protection.outlook.com ([40.107.6.70]:25761 "EHLO EUR04-DB3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1730522AbgCKRei (ORCPT ); Wed, 11 Mar 2020 13:34:38 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DOcqc31AQN982LqzYnVryUhBReTiKSZ3c5IsaGNACgxbIZKEqTrNeYG6ulIHxmnZ8N+yKn1GIYSXPgGyNEw5iyzJEWUcTwrCVsStSc9Hm1Uhd2GI2nRFo2ZMQcgSEHdllcycXGCrM3eKMIo/PL9ngxYyFFYjuvqNzs9lgei7M5kedpRdkLH1gNHC75jyvU9UfBIjRF3snyKzTYtNeSN7Zul1voMkQGeV/Fhgc37d7YrzGkGXuGCFOsfAu4avyuwU4PA47unIP2fUXdsFACVN5t8niNO7jqIgreKna8oDuNleeIeEComW5iBB0rLlXNrmVhyC1CfEwIpEdI9Q368nLw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=H1Twu12jX7M/3foLcHNy8fMr8ryswpCVUrLsCpG6M8s=; b=NRw0WaBiGi7yuc5HHTPNnAfo6mCAaF5KLCm64XlW2tKVkvs6dN9MQD2Bv9Zcsr24Fb7RfV9P2Cv4EQ5PSxQ68il8oRhS5nGN87jkUHDdiFmMoiQcoYhMGVyW80gM4o+iWVOZw7U23HtZiMBCjuA/RAjg7SkD3twVNvPh1snYjWg467NJ8PCebgoP6kvrLZSidrbIU2qVjCcHVULTYm0draYi5l54m7OWqrNk+wA3e4UaZPy4wra6EdnuvvbJv3Ts2ClSkpZ/cHwCA1xvNEBUj4zAggdYyVhPjtqp3ziiDyoCrILR+0VzfdwjufldipMAbgrgWmxyo23e2ILWsGQRow== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=H1Twu12jX7M/3foLcHNy8fMr8ryswpCVUrLsCpG6M8s=; b=Sa/jYhHQASqZt55NQWeQzTtS6BaLGtvcQGkKZOCFI43NcbZ0tQnPhZWApOjmL2wf4IiO1DkWbmN4qZcsLeUcwkKVynJLO+Pp93Wj1P3Dd8i+XCRzhDsLz1XtCHUT4eR6c47SeolXEHTrivcM8vqIb2iPQs///VH4Ohgyr04QGh8= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=petrm@mellanox.com; Received: from HE1PR05MB4746.eurprd05.prod.outlook.com (20.176.168.150) by HE1PR05MB3449.eurprd05.prod.outlook.com (10.170.248.28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2793.17; Wed, 11 Mar 2020 17:34:33 +0000 Received: from HE1PR05MB4746.eurprd05.prod.outlook.com ([fe80::c146:9acd:f4dc:4e32]) by HE1PR05MB4746.eurprd05.prod.outlook.com ([fe80::c146:9acd:f4dc:4e32%7]) with mapi id 15.20.2793.018; Wed, 11 Mar 2020 17:34:33 +0000 From: Petr Machata To: netdev@vger.kernel.org Cc: Petr Machata , Jakub Kicinski , Roman Mashak , jhs@mojatatu.com, xiyou.wangcong@gmail.com, davem@davemloft.net, jiri@mellanox.com, mlxsw@mellanox.com, Ido Schimmel Subject: [PATCH net-next v2 4/6] mlxsw: spectrum_qdisc: Offload RED ECN tail-dropping mode Date: Wed, 11 Mar 2020 19:33:54 +0200 Message-Id: <20200311173356.38181-5-petrm@mellanox.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200311173356.38181-1-petrm@mellanox.com> References: <20200311173356.38181-1-petrm@mellanox.com> X-ClientProxiedBy: PR0P264CA0197.FRAP264.PROD.OUTLOOK.COM (2603:10a6:100:1f::17) To HE1PR05MB4746.eurprd05.prod.outlook.com (2603:10a6:7:a3::22) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from dev-r-vrt-156.mtr.labs.mlnx (37.142.13.130) by PR0P264CA0197.FRAP264.PROD.OUTLOOK.COM (2603:10a6:100:1f::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2793.15 via Frontend Transport; Wed, 11 Mar 2020 17:34:31 +0000 X-Mailer: git-send-email 2.20.1 X-Originating-IP: [37.142.13.130] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: f8ca3502-562c-4741-8c12-08d7c5e27629 X-MS-TrafficTypeDiagnostic: HE1PR05MB3449:|HE1PR05MB3449: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:3276; X-Forefront-PRVS: 0339F89554 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4636009)(39860400002)(396003)(346002)(366004)(136003)(376002)(199004)(6506007)(186003)(107886003)(6666004)(81156014)(4326008)(81166006)(26005)(16526019)(8936002)(8676002)(2616005)(2906002)(86362001)(956004)(36756003)(6512007)(66476007)(66556008)(6486002)(6916009)(316002)(478600001)(1076003)(54906003)(52116002)(5660300002)(66946007); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR05MB3449; H:HE1PR05MB4746.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: V8Q4ORCvYwU4asmvIiy+0wpGVKoAW5Tw/nibBK0QY1+nuQkXj0FexSPJpZ3xvTg5bcJ5rLj380VUsD4hRQroSUEzDe4eeSjq/GUwubwmK1VoVmMrjYm9WVsXDzujSd4MvcjaPrSH65ddSRKq5hZIfXqOR2zQDQmortFMxKG1prLKgm7Z6KEJGesFwxSMCVY3kKkGDp6IbTYWepXGcQE9jVI+jSUBuudwL/JT6Oov79td0DfFkte6R/5TXQbK5xltwNMtaUgivJQcHAtxRyZ7V4UGEAGmp1tCyV6hxjl3DG3EmTB0gC21+x7m9GnBL6lKst1MKZmrzBnekIGRXnMQqFeX51NI+C0xaJf4/e6CE4PP8ws5N3YxeI+7sl7s7GwOGLmEXkJ/OECJJn6ym1I0yTcqC0J96OJl1HZZCR1oRY0CBu/RBPTSwwaz57Mtw3rQ X-MS-Exchange-AntiSpam-MessageData: 0Z+6AuGLIqYFKXRYnAbT7o+RKx1CsnnRhl5YgpbOtn/DiD8AlZQib/qbmEjscR2VVCsDz2foP0NkrD6Hz0LRQWLtMm+lznmHKJ2M4U5RSCDA8qsA2xaHYk73SaodT7GC6zhCZboPIpaRlcbOnC1Srw== X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: f8ca3502-562c-4741-8c12-08d7c5e27629 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Mar 2020 17:34:33.3678 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: f4hIeQLdvk/twQ2jI90IbobALyCE/cJHEUOhZAE1t25Vul7OxGYKUXYVfYFznfdJVM0cYgdfo6sjLpZld5pyXA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR05MB3449 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org RED ECN tail-dropping mode means that non-ECT traffic should not be early-dropped, but enqueued normally instead. In Spectrum systems, this is achieved by disabling CWTPM.ew (enable WRED) for a given traffic class. So far CWTPM.ew was unconditionally enabled. Instead disable it when the RED qdisc is in taildrop mode. Signed-off-by: Petr Machata Reviewed-by: Ido Schimmel --- drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c index b9f429ec0db4..dee89298122c 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c @@ -323,7 +323,7 @@ mlxsw_sp_qdisc_get_tc_stats(struct mlxsw_sp_port *mlxsw_sp_port, static int mlxsw_sp_tclass_congestion_enable(struct mlxsw_sp_port *mlxsw_sp_port, int tclass_num, u32 min, u32 max, - u32 probability, bool is_ecn) + u32 probability, bool is_wred, bool is_ecn) { char cwtpm_cmd[MLXSW_REG_CWTPM_LEN]; char cwtp_cmd[MLXSW_REG_CWTP_LEN]; @@ -341,7 +341,7 @@ mlxsw_sp_tclass_congestion_enable(struct mlxsw_sp_port *mlxsw_sp_port, return err; mlxsw_reg_cwtpm_pack(cwtpm_cmd, mlxsw_sp_port->local_port, tclass_num, - MLXSW_REG_CWTP_DEFAULT_PROFILE, true, is_ecn); + MLXSW_REG_CWTP_DEFAULT_PROFILE, is_wred, is_ecn); return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(cwtpm), cwtpm_cmd); } @@ -445,8 +445,9 @@ mlxsw_sp_qdisc_red_replace(struct mlxsw_sp_port *mlxsw_sp_port, u32 handle, prob = DIV_ROUND_UP(prob, 1 << 16); min = mlxsw_sp_bytes_cells(mlxsw_sp, p->min); max = mlxsw_sp_bytes_cells(mlxsw_sp, p->max); - return mlxsw_sp_tclass_congestion_enable(mlxsw_sp_port, tclass_num, min, - max, prob, p->is_ecn); + return mlxsw_sp_tclass_congestion_enable(mlxsw_sp_port, tclass_num, + min, max, prob, + !p->is_taildrop, p->is_ecn); } static void From patchwork Wed Mar 11 17:33:55 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Petr Machata X-Patchwork-Id: 1253103 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=mellanox.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=Mellanox.com header.i=@Mellanox.com header.a=rsa-sha256 header.s=selector1 header.b=nfnS3Ku5; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 48czc26rFxz9sPF for ; Thu, 12 Mar 2020 04:34:42 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730572AbgCKRem (ORCPT ); Wed, 11 Mar 2020 13:34:42 -0400 Received: from mail-eopbgr60070.outbound.protection.outlook.com ([40.107.6.70]:25761 "EHLO EUR04-DB3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1730458AbgCKRel (ORCPT ); Wed, 11 Mar 2020 13:34:41 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Wlo+coCMr5MM8CWdp8PGMLe2NkExtYCgcXR5sPTRmQdxHAAAqv3gmXTbHyLU7fC6OV1DSG0tjYIxADN4FMzp1hfBTDsyBeKR25xAO352NTXwT902XhLzCKBConDX14wcrneLdcb/ao6hJg2XujfmDHBapahdfxrcPMCu/0/HrsvD9ElhP4jyeFMV/OwsdkOs1RFSSUu6Fcipy0zU9Qq0GBC+yoYu4GUWqkVgftpO1YOfkUviZSF8+lhUQqTgEfQDSSqid3cIqWKgPU4WoWJS/DwrdbCcL4TL9gxkl0RF1cPpcMEvdG/zm0ar5gEfQizHAsxaz8oP0gTxkJZnVtrolQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=LuRbrLMcwTXikwwar9Aj0ZNqddEMtushUkRbx13mPLY=; b=GGMiVg59mKkvwhLflwWrSnFnncHWW6Q8Ygrlm0GDDirSPeDOWK5lzVlDDPeYx9Z0quzwG7Pjq054gsWjxLfdrHYBR4GtjOjafZIbqRphMIs0xJ7AjQYqgGYeT/A9yI9Bv1CfmcOskXTBCQfqRLOUEHXRPnaG4bneKOARJJwegfUrpN2RbbiQXr8u+HeTvKdTrNnlij/HuJzOvv4AmzKgjSpQTH81HXxEd42X45nVYoG+V7SqIh0IGKvCwhes/IZyZcnJDZQecAPNs5OHEAMz9gPaLeA+fLx8MCQzWRY/h7EJbiH+QjE+7Bs8Uotqz1qgNfnI3NaBjsI6pGXLgm2bcg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=LuRbrLMcwTXikwwar9Aj0ZNqddEMtushUkRbx13mPLY=; b=nfnS3Ku5q4ehMSVusoiHIfx96SmwoYMm3LeKQzE+ADo789TqMCxqJmJFMZk7b4Rq4hOVN5qjXoX858nRlsizliXy29vfE6T7kKKxNrLekJ9RcPhDtKKc1h5EcROaYWkamKF5sRxth0UN/oYHEpPxMly4tN2HSTcb129D/+uCqGY= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=petrm@mellanox.com; Received: from HE1PR05MB4746.eurprd05.prod.outlook.com (20.176.168.150) by HE1PR05MB3449.eurprd05.prod.outlook.com (10.170.248.28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2793.17; Wed, 11 Mar 2020 17:34:35 +0000 Received: from HE1PR05MB4746.eurprd05.prod.outlook.com ([fe80::c146:9acd:f4dc:4e32]) by HE1PR05MB4746.eurprd05.prod.outlook.com ([fe80::c146:9acd:f4dc:4e32%7]) with mapi id 15.20.2793.018; Wed, 11 Mar 2020 17:34:35 +0000 From: Petr Machata To: netdev@vger.kernel.org Cc: Petr Machata , Jakub Kicinski , Roman Mashak , jhs@mojatatu.com, xiyou.wangcong@gmail.com, davem@davemloft.net, jiri@mellanox.com, mlxsw@mellanox.com Subject: [PATCH net-next v2 5/6] selftests: qdiscs: RED: Add taildrop tests Date: Wed, 11 Mar 2020 19:33:55 +0200 Message-Id: <20200311173356.38181-6-petrm@mellanox.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200311173356.38181-1-petrm@mellanox.com> References: <20200311173356.38181-1-petrm@mellanox.com> X-ClientProxiedBy: PR0P264CA0197.FRAP264.PROD.OUTLOOK.COM (2603:10a6:100:1f::17) To HE1PR05MB4746.eurprd05.prod.outlook.com (2603:10a6:7:a3::22) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from dev-r-vrt-156.mtr.labs.mlnx (37.142.13.130) by PR0P264CA0197.FRAP264.PROD.OUTLOOK.COM (2603:10a6:100:1f::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2793.15 via Frontend Transport; Wed, 11 Mar 2020 17:34:33 +0000 X-Mailer: git-send-email 2.20.1 X-Originating-IP: [37.142.13.130] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: d6431c80-b14e-4ee8-98d7-08d7c5e27720 X-MS-TrafficTypeDiagnostic: HE1PR05MB3449:|HE1PR05MB3449: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:79; X-Forefront-PRVS: 0339F89554 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4636009)(39860400002)(396003)(346002)(366004)(136003)(376002)(199004)(6506007)(186003)(107886003)(6666004)(81156014)(4326008)(81166006)(26005)(16526019)(8936002)(8676002)(2616005)(2906002)(86362001)(956004)(36756003)(6512007)(66476007)(66556008)(6486002)(6916009)(316002)(478600001)(1076003)(54906003)(52116002)(5660300002)(66946007); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR05MB3449; H:HE1PR05MB4746.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: PAHAA+c1sCfBcQLl0XbTqPLwWFyCiI4g++22nC4qBgFJtk73WLvPJDFR4oSxl9b7RVAmTlxYF3nan4An6WgZSwcHuX8rq86sazxAFTWS9EJjTusGaDcVa4UtWlxH/zFkwE4NUrYpryiRCkXAu9dQTZTZV/aW7zVq+10OdPWmeu44LGTDdd4+gKwcyILDTx0EICpz8ydsy0FhFLUEN/NPPLw2BKPAamV3feQDeMVQkIRJLEpcY4c0OwpxnfluXGgBAsPu/9fXdk+R8hkO0CIhpJGUirGmMrJN+Wko6JXTHMndSfMfQ6cW3MQnNrJePM2N2U5Zyq531IkZZexV58MQ/lMWuSAf3NJ5lXiDtPu2oIl5kPtr1kiA0ZrQRZBUlgaBDDPJr5vISfyBHJv00a7DBzqwVfYNaJyH3hSVwGl+JelrlG8WidihF43C6Km/tnS2 X-MS-Exchange-AntiSpam-MessageData: RFcNFF7dsFePDmxAbmDVPzzMZMMXypbFavlExG3Vq1vzSo3IEBvaxd+W9dxSOfyktnSfJbfXsSmd6G8S5CkRCwPQG8VPllU2+xQ01Rer6X02DcK+f9koCN3vmGNQHTdxtU/7NraLCQKDFOXAeOeV9g== X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: d6431c80-b14e-4ee8-98d7-08d7c5e27720 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Mar 2020 17:34:34.9919 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: IsamWxYw3xdp4fNAKlZ4Jf8GECoceQ216843Z+r9Iy8s/vV/KqFDnMuJFhzUqppGYmKdN4WttuHlHORp+CgJgw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR05MB3449 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Add tests for the new "taildrop" flag. Signed-off-by: Petr Machata Reviewed-by: Roman Mashak --- Notes: v2: - Require nsPlugin in each RED test - Match end-of-line to catch cases of more flags reported than requested - Add a test for creation of non-ECN taildrop, which should fail .../tc-testing/tc-tests/qdiscs/red.json | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/tools/testing/selftests/tc-testing/tc-tests/qdiscs/red.json b/tools/testing/selftests/tc-testing/tc-tests/qdiscs/red.json index b70a54464897..72676073c658 100644 --- a/tools/testing/selftests/tc-testing/tc-tests/qdiscs/red.json +++ b/tools/testing/selftests/tc-testing/tc-tests/qdiscs/red.json @@ -113,5 +113,73 @@ "$TC qdisc del dev $DUMMY handle 1: root", "$IP link del dev $DUMMY type dummy" ] + }, + { + "id": "53e8", + "name": "Create RED with flags ECN, taildrop", + "category": [ + "qdisc", + "red" + ], + "plugins": { + "requires": "nsPlugin" + }, + "setup": [ + "$IP link add dev $DUMMY type dummy || /bin/true" + ], + "cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root red ecn taildrop limit 1M avpkt 1500 min 100K max 300K", + "expExitCode": "0", + "verifyCmd": "$TC qdisc show dev $DUMMY", + "matchPattern": "qdisc red 1: root .* limit 1Mb min 100Kb max 300Kb ecn taildrop $", + "matchCount": "1", + "teardown": [ + "$TC qdisc del dev $DUMMY handle 1: root", + "$IP link del dev $DUMMY type dummy" + ] + }, + { + "id": "d091", + "name": "Fail to create RED with only taildrop flag", + "category": [ + "qdisc", + "red" + ], + "plugins": { + "requires": "nsPlugin" + }, + "setup": [ + "$IP link add dev $DUMMY type dummy || /bin/true" + ], + "cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root red taildrop limit 1M avpkt 1500 min 100K max 300K", + "expExitCode": "2", + "verifyCmd": "$TC qdisc show dev $DUMMY", + "matchPattern": "qdisc red", + "matchCount": "0", + "teardown": [ + "$IP link del dev $DUMMY type dummy" + ] + }, + { + "id": "af8e", + "name": "Create RED with flags ECN, taildrop, harddrop", + "category": [ + "qdisc", + "red" + ], + "plugins": { + "requires": "nsPlugin" + }, + "setup": [ + "$IP link add dev $DUMMY type dummy || /bin/true" + ], + "cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root red ecn harddrop taildrop limit 1M avpkt 1500 min 100K max 300K", + "expExitCode": "0", + "verifyCmd": "$TC qdisc show dev $DUMMY", + "matchPattern": "qdisc red 1: root .* limit 1Mb min 100Kb max 300Kb ecn harddrop taildrop $", + "matchCount": "1", + "teardown": [ + "$TC qdisc del dev $DUMMY handle 1: root", + "$IP link del dev $DUMMY type dummy" + ] } ] From patchwork Wed Mar 11 17:33:56 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Petr Machata X-Patchwork-Id: 1253104 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=mellanox.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=Mellanox.com header.i=@Mellanox.com header.a=rsa-sha256 header.s=selector1 header.b=iKzxmCsx; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 48czc53SVzz9sPF for ; Thu, 12 Mar 2020 04:34:45 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730577AbgCKReo (ORCPT ); Wed, 11 Mar 2020 13:34:44 -0400 Received: from mail-eopbgr60070.outbound.protection.outlook.com ([40.107.6.70]:25761 "EHLO EUR04-DB3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1730522AbgCKReo (ORCPT ); Wed, 11 Mar 2020 13:34:44 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kz4rtRUZcX+vRWCOD+E8/+79leCkyahIy3oUr+x83TjaTNFQNi7lP+Cm6d48LOFrm2owvxNQ7Rwe9AZ/RvZ/phH9xU1wFTw6M64RliLhNX68tTfI36jGYedpKcc5z4svne+5IUjZr9zduVReajhialWLIn1ZHmoe/2sUnnf624H3SvN8kI/yJuYH7UYgo5KfvPwe3jr5TB/64wG565tW8FbiFeED3t1lkXoTN+As99y5V9Do6UG8lziQbS+Z34iEEcWn/eKlYnc4NantfXJ588hCbMoEd3F3FvyW586OPo5jH9lRh1RgSd78zUNosCpdIjvW1BSLVgJXSxkPV8bGxQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Jgn+DdE8uGiPdRK5CydHxH89NE5L0FKGBWRNdjFDouA=; b=j06wO7j53jCb0KSpy1RdN4+Qm3jULTBD8f9N7FR/+IbcjN9B389vR9k48aXadsM4i3Fz5hlZg7bAponU3pMLSrLYzeM8ckWRMBT/j3Yg2KU+AWCsWOfwMFlMl925Q43qoVLT9klghC4eA/KYnTs3usU4jo888vwpNAKIGUkzuYY949NT/o6q08z1MCSwQgJy2upR/Hcs8iHDV8ZzLZb7XUIYo7SXoT0wbzV5DP01sGus0Wc+pbikiGes81TtXbU22P0q0MeHuhFbHzOLzOGUrPtmw0bYHtRiN36wLILTFHlU69ajpZOSuMK6TYApUXbolfuiM+f3vKtg20VEjwpNGg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Jgn+DdE8uGiPdRK5CydHxH89NE5L0FKGBWRNdjFDouA=; b=iKzxmCsxlQQMzUp8UULQWW1rKivVwD/VRkHK9JCwZFxouQSiqkAwtBbb/0YlEt1/z7LkXUqAUsjzatGTnDdfgNAhpMV+Apsr95jM9MZfW8V+zFyXYXI19Fw0fDChBVVZjI9iJzRtnPWva7Vu0DYJuzamgFN3WxPh6zjpC5K/ggg= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=petrm@mellanox.com; Received: from HE1PR05MB4746.eurprd05.prod.outlook.com (20.176.168.150) by HE1PR05MB3449.eurprd05.prod.outlook.com (10.170.248.28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2793.17; Wed, 11 Mar 2020 17:34:36 +0000 Received: from HE1PR05MB4746.eurprd05.prod.outlook.com ([fe80::c146:9acd:f4dc:4e32]) by HE1PR05MB4746.eurprd05.prod.outlook.com ([fe80::c146:9acd:f4dc:4e32%7]) with mapi id 15.20.2793.018; Wed, 11 Mar 2020 17:34:36 +0000 From: Petr Machata To: netdev@vger.kernel.org Cc: Petr Machata , Jakub Kicinski , Roman Mashak , jhs@mojatatu.com, xiyou.wangcong@gmail.com, davem@davemloft.net, jiri@mellanox.com, mlxsw@mellanox.com, Ido Schimmel Subject: [PATCH net-next v2 6/6] selftests: mlxsw: RED: Test RED ECN taildrop offload Date: Wed, 11 Mar 2020 19:33:56 +0200 Message-Id: <20200311173356.38181-7-petrm@mellanox.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200311173356.38181-1-petrm@mellanox.com> References: <20200311173356.38181-1-petrm@mellanox.com> X-ClientProxiedBy: PR0P264CA0197.FRAP264.PROD.OUTLOOK.COM (2603:10a6:100:1f::17) To HE1PR05MB4746.eurprd05.prod.outlook.com (2603:10a6:7:a3::22) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from dev-r-vrt-156.mtr.labs.mlnx (37.142.13.130) by PR0P264CA0197.FRAP264.PROD.OUTLOOK.COM (2603:10a6:100:1f::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2793.15 via Frontend Transport; Wed, 11 Mar 2020 17:34:35 +0000 X-Mailer: git-send-email 2.20.1 X-Originating-IP: [37.142.13.130] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 0511b397-46b5-4c52-307c-08d7c5e27817 X-MS-TrafficTypeDiagnostic: HE1PR05MB3449:|HE1PR05MB3449: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:9508; X-Forefront-PRVS: 0339F89554 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4636009)(39860400002)(396003)(346002)(366004)(136003)(376002)(199004)(6506007)(186003)(107886003)(6666004)(81156014)(4326008)(81166006)(26005)(16526019)(8936002)(8676002)(2616005)(2906002)(86362001)(956004)(36756003)(6512007)(66476007)(66556008)(6486002)(6916009)(316002)(478600001)(1076003)(54906003)(52116002)(5660300002)(66946007); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR05MB3449; H:HE1PR05MB4746.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: F81V2YtHjHFCw6mXUHAWdEo5B4FYmVqgRtiv7FWi2MmoEBbLn4qKBlPmvOCzp5l7Aw3139O/gewEAEgxPwb6R4gf/WD3W3SxVDG4lZVvT07DfixG6tFkZPvTChOEap6HQdFW9rm7W/6q0W+/s7oM3EmvzM2VC+tcGrCAm+MknDGVIA82SNtfhWtOruZamzZQnK2vZOJ1k0jhonX3nhHdB3EjrfF3H2P+SWncuYC62cnF1c827exXliCXfMGS7S7LeIXbft0zbLd423CHkS04p2Xx4okWhPtn66aY2ZZckwGGXPcAZe/z85rMjj16ye6Ylni5z2H4EFFjEZKd5306zYE+kFGkZNXaIDW376nrNMykFZNfP77t0gCBw5A1lgnaq3I3pVWJ6TJBcQDNXpAkPsKhHLpkeLaD3P8W+PIN6PGbGgvFsVf/mw7zV9XCy6VU X-MS-Exchange-AntiSpam-MessageData: MX+9VPzdpPHbV5T5Rv/iTXXyzyIWchei4wrYNoiiXm1BbqH6NbVDpC4dRWxElP2PgfGl+/Ddweb0pc2GEf7qPaeCB7B3U6fWFupIopSxhHOKxGQwGHkKFcusLawD2aAcbtXxWeKwBBmTb1yMlamwOw== X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0511b397-46b5-4c52-307c-08d7c5e27817 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Mar 2020 17:34:36.6069 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: oFBPetOE0vK6t9AOnK8XX8QHTVOn/vThSibeju82fZQTEe5L8iFAakQhnxDdkeGPonLSu1k/E+2NZdquXsCOQw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR05MB3449 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Extend RED testsuite to cover the new "taildropping" mode of RED-ECN. This test is really similar to ECN test, diverging only in the last step, where UDP traffic should go to backlog instead of being dropped. Thus extract a common helper, ecn_test_common(), make do_ecn_test() into a relatively simple wrapper, and add another one, do_ecn_taildrop_test(). Signed-off-by: Petr Machata Reviewed-by: Ido Schimmel --- .../drivers/net/mlxsw/sch_red_core.sh | 50 ++++++++++++++++--- .../drivers/net/mlxsw/sch_red_ets.sh | 11 ++++ .../drivers/net/mlxsw/sch_red_root.sh | 8 +++ 3 files changed, 61 insertions(+), 8 deletions(-) diff --git a/tools/testing/selftests/drivers/net/mlxsw/sch_red_core.sh b/tools/testing/selftests/drivers/net/mlxsw/sch_red_core.sh index 8f833678ac4d..fc7986db3fe0 100644 --- a/tools/testing/selftests/drivers/net/mlxsw/sch_red_core.sh +++ b/tools/testing/selftests/drivers/net/mlxsw/sch_red_core.sh @@ -389,17 +389,14 @@ check_marking() ((pct $cond)) } -do_ecn_test() +ecn_test_common() { + local name=$1; shift local vlan=$1; shift local limit=$1; shift local backlog local pct - # Main stream. - start_tcp_traffic $h1.$vlan $(ipaddr 1 $vlan) $(ipaddr 3 $vlan) \ - $h3_mac tos=0x01 - # Build the below-the-limit backlog using UDP. We could use TCP just # fine, but this way we get a proof that UDP is accepted when queue # length is below the limit. The main stream is using TCP, and if the @@ -409,7 +406,7 @@ do_ecn_test() check_err $? "Could not build the requested backlog" pct=$(check_marking $vlan "== 0") check_err $? "backlog $backlog / $limit Got $pct% marked packets, expected == 0." - log_test "TC $((vlan - 10)): ECN backlog < limit" + log_test "TC $((vlan - 10)): $name backlog < limit" # Now push TCP, because non-TCP traffic would be early-dropped after the # backlog crosses the limit, and we want to make sure that the backlog @@ -419,7 +416,20 @@ do_ecn_test() check_err $? "Could not build the requested backlog" pct=$(check_marking $vlan ">= 95") check_err $? "backlog $backlog / $limit Got $pct% marked packets, expected >= 95." - log_test "TC $((vlan - 10)): ECN backlog > limit" + log_test "TC $((vlan - 10)): $name backlog > limit" +} + +do_ecn_test() +{ + local vlan=$1; shift + local limit=$1; shift + local name=ECN + + start_tcp_traffic $h1.$vlan $(ipaddr 1 $vlan) $(ipaddr 3 $vlan) \ + $h3_mac tos=0x01 + sleep 1 + + ecn_test_common "$name" $vlan $limit # Up there we saw that UDP gets accepted when backlog is below the # limit. Now that it is above, it should all get dropped, and backlog @@ -427,7 +437,31 @@ do_ecn_test() RET=0 build_backlog $vlan $((2 * limit)) udp >/dev/null check_fail $? "UDP traffic went into backlog instead of being early-dropped" - log_test "TC $((vlan - 10)): ECN backlog > limit: UDP early-dropped" + log_test "TC $((vlan - 10)): $name backlog > limit: UDP early-dropped" + + stop_traffic + sleep 1 +} + +do_ecn_taildrop_test() +{ + local vlan=$1; shift + local limit=$1; shift + local name="ECN taildrop" + + start_tcp_traffic $h1.$vlan $(ipaddr 1 $vlan) $(ipaddr 3 $vlan) \ + $h3_mac tos=0x01 + sleep 1 + + ecn_test_common "$name" $vlan $limit + + # Up there we saw that UDP gets accepted when backlog is below the + # limit. Now that it is above, in taildrop mode, make sure it goes to + # backlog as well. + RET=0 + build_backlog $vlan $((2 * limit)) udp >/dev/null + check_err $? "UDP traffic was early-dropped instead of getting into backlog" + log_test "TC $((vlan - 10)): $name backlog > limit: UDP tail-dropped" stop_traffic sleep 1 diff --git a/tools/testing/selftests/drivers/net/mlxsw/sch_red_ets.sh b/tools/testing/selftests/drivers/net/mlxsw/sch_red_ets.sh index af83efe9ccf1..042a33cc13f4 100755 --- a/tools/testing/selftests/drivers/net/mlxsw/sch_red_ets.sh +++ b/tools/testing/selftests/drivers/net/mlxsw/sch_red_ets.sh @@ -4,6 +4,7 @@ ALL_TESTS=" ping_ipv4 ecn_test + ecn_taildrop_test red_test mc_backlog_test " @@ -50,6 +51,16 @@ ecn_test() uninstall_qdisc } +ecn_taildrop_test() +{ + install_qdisc ecn taildrop + + do_ecn_taildrop_test 10 $BACKLOG1 + do_ecn_taildrop_test 11 $BACKLOG2 + + uninstall_qdisc +} + red_test() { install_qdisc diff --git a/tools/testing/selftests/drivers/net/mlxsw/sch_red_root.sh b/tools/testing/selftests/drivers/net/mlxsw/sch_red_root.sh index b2217493a88e..af55672dc335 100755 --- a/tools/testing/selftests/drivers/net/mlxsw/sch_red_root.sh +++ b/tools/testing/selftests/drivers/net/mlxsw/sch_red_root.sh @@ -4,6 +4,7 @@ ALL_TESTS=" ping_ipv4 ecn_test + ecn_taildrop_test red_test mc_backlog_test " @@ -33,6 +34,13 @@ ecn_test() uninstall_qdisc } +ecn_taildrop_test() +{ + install_qdisc ecn taildrop + do_ecn_taildrop_test 10 $BACKLOG + uninstall_qdisc +} + red_test() { install_qdisc