From patchwork Mon Jan 30 17:31:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Oltean X-Patchwork-Id: 13121475 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 53CD5C61D97 for ; Mon, 30 Jan 2023 17:33:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237848AbjA3Rco (ORCPT ); Mon, 30 Jan 2023 12:32:44 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48610 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237728AbjA3Rce (ORCPT ); Mon, 30 Jan 2023 12:32:34 -0500 Received: from EUR02-VI1-obe.outbound.protection.outlook.com (mail-vi1eur02on2079.outbound.protection.outlook.com [40.107.241.79]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4CB1F2BF38 for ; Mon, 30 Jan 2023 09:32:31 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LOUhpq+xnIxtcJrRzMy7PkEuQz7tAo/BBmUDqDQhj5Y3WqF/TYsHEILeqNT0mQ3rWTXQ9Fw8j0DXzJK0Y3ixlzNBHpmoC/9i8+ySphV49/SQgMDxWPOomF3lrCDpuv44I95oETKXUCXF3DLyZzZwFLgJTpHb1bHNXSr8oBM/8qMridWNNzB8P7DM0ZujYWVDyNrv328pfXWd5JpL6/+ZFKwmCemT/jgG/xtTD8frZSkzAD0hBNFCb1nRq0Xt9dX+b0BzzgJDBoLEcP/q5zbSQiOz+orqMjBcwoddUu7gv6J1JRDaXeV7B2/iIYg/YibBKUwQFHOmjsCnb1vonD25SQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=iRXHzERPOVSS+xUMtst8SiEDQILJkv69ROaXLH6nLvk=; b=jF8X/7Z8q0ZMs/tTnllRnDwp4x8NcV1hzJ6eW1t/Lvgi6fUXEqMJAbOOcuP12rpm/YNlFfKbwumLMezT8IFOnUnngjdaDrLO9QysgyQxoRLMeBLXWG6i19pJHc/Tz61EEJzheo7vr534SBJEkQTSdEf8chn8cMAdlLIT+m9/iUCkHehGUtjNZ+V2kqI/aM6zTgz8QM3wKvvgLoSkbuNBxYhTU1Q+PYS99y+al7YKrkcLDRNC+QWJzW73gBrbwoWF43imlbViIx6IWUfcY6n95ofrvGJ4J2L5IAb6zooWz9Zosk952l0jjm4M7DiBYQjorS5Ypo1PH2YnFD5ywK2TUw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=iRXHzERPOVSS+xUMtst8SiEDQILJkv69ROaXLH6nLvk=; b=dSgIBVyR6ZFStTj5I5unDVKl4Lldy9X+3Jj2jp2oFnEg3tfnwb+l+XrX7Z0cYHbKNBg7vng56HmEUZQcmRluOy8cwby2QlqxdV0oOryZqT4gDV6K43cTYLkYbUvkgOIp+HrG1z1YewUVpZWtn3JoOKZh8aeikL0zTCl9+XsmKJM= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM0PR04MB5121.eurprd04.prod.outlook.com (2603:10a6:208:c1::16) by AS8PR04MB8547.eurprd04.prod.outlook.com (2603:10a6:20b:422::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6043.36; Mon, 30 Jan 2023 17:32:07 +0000 Received: from AM0PR04MB5121.eurprd04.prod.outlook.com ([fe80::4c1:95d7:30fc:d730]) by AM0PR04MB5121.eurprd04.prod.outlook.com ([fe80::4c1:95d7:30fc:d730%4]) with mapi id 15.20.6043.036; Mon, 30 Jan 2023 17:32:06 +0000 From: Vladimir Oltean To: netdev@vger.kernel.org Cc: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Claudiu Manoil , Vinicius Costa Gomes , Kurt Kanzenbach , Jacob Keller , Jamal Hadi Salim , Cong Wang , Jiri Pirko Subject: [PATCH v4 net-next 01/15] net: enetc: simplify enetc_num_stack_tx_queues() Date: Mon, 30 Jan 2023 19:31:31 +0200 Message-Id: <20230130173145.475943-2-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230130173145.475943-1-vladimir.oltean@nxp.com> References: <20230130173145.475943-1-vladimir.oltean@nxp.com> X-ClientProxiedBy: BE1P281CA0186.DEUP281.PROD.OUTLOOK.COM (2603:10a6:b10:8d::10) To AM0PR04MB5121.eurprd04.prod.outlook.com (2603:10a6:208:c1::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM0PR04MB5121:EE_|AS8PR04MB8547:EE_ X-MS-Office365-Filtering-Correlation-Id: cdc92314-995a-46f7-926e-08db02e7e890 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: IPC3o7t5U9wb30z+UVEj9Jhuf7Q8pbLrlmr3fO7EyZcbaOTVqDTVkG2YD1tBageVTMAa8lspwQfgX6vyhaebkdSyLTY3/OO2BmIhtHrCXPEKkU6+1fTUUgzitYmRVCAsBbGO3ImFPiUmoAOxCn8+EwfjZJdef68R3q/30kCgwbr9fu/c6EUvAJTwzwjIhl8CSbXFwVGxwDejBcKu2uEAHeuP24kA4UAq4VEoyc/fTGkTtegkjkwvGRPjsj0LJjYrgXz7Ri05/EXUo2UYQfwhQCPoq3f0Me0FbQJM0UKqZa6axuIGEcj5KDM7bPSZ09qtWcqyPWu/7MANWj1HS8wTlgOdDwBJ66lg+u6UoJwpNI2r5kKEM7TjaKEdVHfXTy3lMbbW8Yt2tmJcXxSCfB/jitPzjaokNJkTX1GuoTVEQm7l9sNY15HnPimS2/d6rUjUj4Ikh8F3DHCniFi5TrrtwTeOel6AqOk12mEUY3zkG1S8c35hRLqVncSh8RkebGpUKZ1Sfx1vNUodTMKthpPyIBT0O8u/kPjnJaUyKbqTAsQw95iK8rJCLICXjhejVXFXg2sTmFISqH33nf4VBaVCy+iBKgMMaN6jwVjLZuYKhnFwxr3QaDIsUXk7Xm72+5qzAdG+qkA9cy5Bic7K+vSB/AQ4psLQeA/Sr9xSEDID59uaathFowaj0KneEH1rK+8mY0hUnMi1lIBJRYToEQYwWg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM0PR04MB5121.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(4636009)(366004)(346002)(376002)(39860400002)(136003)(396003)(451199018)(44832011)(5660300002)(7416002)(36756003)(38100700002)(38350700002)(2906002)(86362001)(478600001)(52116002)(6486002)(2616005)(6512007)(6506007)(26005)(186003)(54906003)(83380400001)(66476007)(6916009)(66946007)(6666004)(1076003)(4326008)(66556008)(316002)(8676002)(41300700001)(8936002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 7W0sRo08MOgu/bYUWHm28SMalOyWn2jaMAgUkOiQFQX2NIvZilUW/xvKcNmx0zBM6fBDudDpUhXvJaeidsdxJFDT8XMRR4gVLBF3x+gKK6was7CJqmSojAkZYcGNBZcI+VDG2Hc943JQhmmGnGH2gxQSm5aEWm7HmuP1c0bO+1odpcFTsMpMLOd7hVRQKfQZ8ExAOU6Fuoc9Fy+itdvQzusonts8zh/s6l+rJqeVgUp1WKTaZzVW8K6iVfXBPr/fPyUTUq8yz79r5KYdbnXVwCo/emUFISrHFInInIMGpD8Xz0X7AKo09UBWs8r/q4gg9JuElaZpC+meQJURftDxdoEdCDiX42Vh0h9MA6OhtiBVdZ2D2ztu9NGCLt9hRpkkpPoRHn0bTwh9q+WNXWuXszQJzhaKj4RuUSCiOaa6ndZCevmuvhRSpYzC9HrQizHQXsNNTHpY1yqx8YwMGnGXyrLG9S1zvuE9xX/ZEjQejuTFWj5fJzlWrilngpbla0rBmNCjH4habszPY4cm+R1I29ir0vyJmsTl00k8I1qaj1+CUIZaD/bo9gtW5xlsBBFogL2T5u5rNvmQRQwDQ9/6gXqExiVOA/jW0I1RlFJYX75CVsjXo1Fb0HjwTTLaTsHWUZAQjEAtT8F5d0iTSsvwwWfZuW52MCbl7aNQVecboiu7ouJ6ug50Ce0Ib7Y70+u+bW27QcEgV0XoXM86WAoTVpQ4ilA7c3akEyic+L/6p5n6YYzeXQBsF/ia+CerDn9rHgo6hU0qN20zGwlvMdQ4JG8F4/LBy+P9Uf3WXjbJiv9Y2R9Xe7iFCvhPHuEQkDZdNKo+j1/cGDahBIL6ArC/JyzPCkE1FIGmfR+HC1tDZkG2VNgLJ3NPqdrG4i4+ht3QqZ9lPinGjvBRfwFqi37HoHP0/A93LADXDh6+APjRRj0AFEGTFv821chc+P4YU01oW9K/gPooBuvyantlwuqofDK2QAZGLmr/jXBkyVTmrJCI6YnRGxwIPvryVkFAt5+LbhUCzEKhOgkc5Jy6x/KbnVeSJwMVzbAeNMayY7EhC8Pe6SfUq2uJsRmx25BTpVfNvaWIkyUFClZY4eGkReuqYjMj3BPKuNn4p5JxLrmDWrWdwoxsU6k60BBhdAVCZCvnefoOV5NEddrOtasF1n+igkQYHKP6HeG6nFkX9IF+61b79yAOcgh++CRQJdqtVRB63JtQTmmPR4g5TRgu8IiLmgGrC5hg/uU7tVkSTDFbhFKET+z090j8MYLhAyJiqm48luBD3yhFyTCWjgeJvFcEcSsr541hdooE/7g/1UzB/dr1aQ7RgzS+bzaM62a4JRIUuvKbhjulTER3bfPychn9525XZ/DLtSybBJqJUapqNZHGwMew9L6qZfVWRX1gC0CtzvsY5cavL7R/OvwGI7w29Clmfkd/gvYVq43fAgL25+5aG+1nZzMDEEaQXGVHSVJkzMFdB/fTqJ0UyKHgxuFZy0Ru6u0ugEGHw/CPjXJFZlgMQ/YzZ39md9xwox3YglZkd57443RKyG/PQ1+f3b5lgzXW9wwQO9vm3sQ/0j/hIuVmIZ18uacdSH1DflqAO/uh97/7HHhhAMC1+RzU157K2A== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: cdc92314-995a-46f7-926e-08db02e7e890 X-MS-Exchange-CrossTenant-AuthSource: AM0PR04MB5121.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jan 2023 17:32:06.9140 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 2Dixacbt24YRTshjyrDPcXQc/MZHZFW/0lFgNPpic5JvkggvY8cwbxy5jiRRPkmymHjQbNfAp/jgeikzYGZXhA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8547 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org We keep a pointer to the xdp_prog in the private netdev structure as well; what's replicated per RX ring is done so just for more convenient access from the NAPI poll procedure. Simplify enetc_num_stack_tx_queues() by looking at priv->xdp_prog rather than iterating through the information replicated per RX ring. Signed-off-by: Vladimir Oltean Reviewed-by: Simon Horman --- v2->v4: none v1->v2: patch is new drivers/net/ethernet/freescale/enetc/enetc.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/freescale/enetc/enetc.c b/drivers/net/ethernet/freescale/enetc/enetc.c index 159ae740ba3c..3a80f259b17e 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc.c +++ b/drivers/net/ethernet/freescale/enetc/enetc.c @@ -28,11 +28,9 @@ EXPORT_SYMBOL_GPL(enetc_port_mac_wr); static int enetc_num_stack_tx_queues(struct enetc_ndev_priv *priv) { int num_tx_rings = priv->num_tx_rings; - int i; - for (i = 0; i < priv->num_rx_rings; i++) - if (priv->rx_ring[i]->xdp.prog) - return num_tx_rings - num_possible_cpus(); + if (priv->xdp_prog) + return num_tx_rings - num_possible_cpus(); return num_tx_rings; } From patchwork Mon Jan 30 17:31:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Oltean X-Patchwork-Id: 13121474 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6EA7FC54EED for ; Mon, 30 Jan 2023 17:33:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235703AbjA3Rcl (ORCPT ); Mon, 30 Jan 2023 12:32:41 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48538 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235960AbjA3Rcb (ORCPT ); Mon, 30 Jan 2023 12:32:31 -0500 Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01on2078.outbound.protection.outlook.com [40.107.13.78]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 842EE360BE for ; Mon, 30 Jan 2023 09:32:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LzJbzbsSQ/VcySzrAlYUhTGtsDKtdn31ddPAqttU4VpI6habNAxdfqolXHrg2uTyFRuj51nyoCjf/ktFPK3fEjo2/ZsBnAJridpRsF4v+UYCkfKpcEnI5/01BjDN+P2rGQQaoD/RUmaEYMPns/jYmkW25jkPd6+Xu99p+p6X3MgjtArsGXAghi4dr3nnuGeMuDhCb9UmJGyT9wIgK1ZAI8LAcevvvwDJ/lGn9gAyRxNugL1PN0VdyLrF8FcAgootI4Vso1gMfJBmEiI0rBndAgyYgeFKX2q0zRqvX6o+o5DLyMPbg7p4NlRlXhKrMiIbNUwwScepciCNXltjUJr+TQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=iErz2KrN/i+FCnnm9dYaiS57lG0jlqdGKlvRX2/9Egc=; b=kGYmTjwZKFzmo3qmmQPQWRQyCabCDExXBILbt1xMlR6kvBxFfjchGO94w6yL2wUhOv3RGgP16MvjOcS8mvyN3MjVjMp9wWhKVL02PCwipVjEDx+zHTNKunciVNYP90fAecKf8SxYMo4WLSSzsj2vGOWess60fqgV1EpXEgJ272dHxEjBXyhIdZH1eHE6CS8wjcNt/nZPgTs9VPRQAJe5p5UZ8UmReXdAUEWwgvKrJLJNFO67Mxj7jEONrjENYejDIIb4oRE/NInDaEkUgMhEccwDtqW/RCqd7HN9X6asEbLb9gyfq61oNIBKEU98MEhSBrTmooIIgojl7BhSn6briA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=iErz2KrN/i+FCnnm9dYaiS57lG0jlqdGKlvRX2/9Egc=; b=okYE4aEW6D+OutuUcShAL6NcDKDGLOzDcX3dRRnEeXDnGmwyB8zKiA+xezej2xGlcLS/QRbFq6g3IIU/pqJkBoqyCWiMhg+1CvS3IQdLvAsIgP1fEC5//z9jCRihe2FP17VXAJPoygBrBzB764KgiwBOaEN+bBMAOOJso5pFVno= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM0PR04MB5121.eurprd04.prod.outlook.com (2603:10a6:208:c1::16) by PA4PR04MB7677.eurprd04.prod.outlook.com (2603:10a6:102:eb::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6043.36; Mon, 30 Jan 2023 17:32:09 +0000 Received: from AM0PR04MB5121.eurprd04.prod.outlook.com ([fe80::4c1:95d7:30fc:d730]) by AM0PR04MB5121.eurprd04.prod.outlook.com ([fe80::4c1:95d7:30fc:d730%4]) with mapi id 15.20.6043.036; Mon, 30 Jan 2023 17:32:09 +0000 From: Vladimir Oltean To: netdev@vger.kernel.org Cc: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Claudiu Manoil , Vinicius Costa Gomes , Kurt Kanzenbach , Jacob Keller , Jamal Hadi Salim , Cong Wang , Jiri Pirko Subject: [PATCH v4 net-next 02/15] net: enetc: allow the enetc_reconfigure() callback to fail Date: Mon, 30 Jan 2023 19:31:32 +0200 Message-Id: <20230130173145.475943-3-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230130173145.475943-1-vladimir.oltean@nxp.com> References: <20230130173145.475943-1-vladimir.oltean@nxp.com> X-ClientProxiedBy: BE1P281CA0186.DEUP281.PROD.OUTLOOK.COM (2603:10a6:b10:8d::10) To AM0PR04MB5121.eurprd04.prod.outlook.com (2603:10a6:208:c1::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM0PR04MB5121:EE_|PA4PR04MB7677:EE_ X-MS-Office365-Filtering-Correlation-Id: 52f975e1-3fa2-494d-4afc-08db02e7e94f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: em6qA8UywVs6kTKxIBXLfg9FVbb6xUjusvU2ZjjP2PWkF0sl0oDIw9FKXtbENHORvWJE7lPywq5obSknWWA+7ScWRvkgRdlHRF2hxzlxjf3w+Rc7bY2GFTPUMIzCCJtbXUGS6OtXnfDom4FAQzqubhsHAFOEKxXkf7NbAfV34Iaw4XcaJH4seu0toJUv0Nzi6sRSMu92C3k6uzsfO3GsOHJ6pMRLWVA3109KfByjmEWtG9E1X7oaYhFssMkDk46xJgHXYVUcLORgWUr5d7IHyr5aS12oDdKYOemnPektYu4qwkmJ9qGtM+rA3/Xq5dLMVLnIsRn/gV5loKb1KBbQlPtu2aZ70azcK/9jv7ntTWGbsqFDXubJAFgrE9P4AaU+5MikcNr5aoADU6vVREQl5rnBY1YMP0X6b+ekGP6Rmigu4KPX49UmzCnq5nDtAOpyUHXPUKzVUhDixAjzYaDUfLmd5O9JIc5snLBuLw+1TAxUvsLXvVu887CAl40U14QIzk7DWBK6MOwZqvoRkQxeHoQDgtPBgsckH26CeFCKNA0O0mbdVgi5b7Xb/zC7qmpW04godH5RBFLbsd3Mxo45VKgR51sSq9m51H88eQygZURk1Q/pjaiYeoHqwWIn8B0g5S4dMc54OeW7aagNObdrNJir2ii7vtOXRh2xG50rEmUG7+hfpxO0nvqBphFqieSeFSRY1p9H1PBjYBNj54W6tQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM0PR04MB5121.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(4636009)(366004)(136003)(39860400002)(376002)(346002)(396003)(451199018)(2906002)(5660300002)(86362001)(44832011)(7416002)(83380400001)(8936002)(41300700001)(36756003)(478600001)(6486002)(1076003)(26005)(6512007)(6666004)(186003)(52116002)(6506007)(2616005)(54906003)(4326008)(66476007)(38100700002)(66946007)(8676002)(66556008)(6916009)(316002)(38350700002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: rGKUAqKQsdFD5xGiYkLhmRWrKCo5dFyjo9B9/fxAlH7VY2E3BMGBnPhdRtEXTcegnYMfhTBsreGZ7QBzw+Gghq5+LNZpBPcYckyl645KYo/YSHIzqNn4blpdATDlRHbgrTt8p1poZ5O15adJOJ9+iWt7kjOZ3sa9i0POe96ioGoI+qGmnZIun1Jh57e61jVow0sBLEtzkwIJ5nKeJeF/9/9DyKPWTay3F7IDDPyTPHXNQ5HXjcUW0XY39VeS/eYg6zN9rt5uxT//Qd3EwIoiGIiSmvSjPtNopQpaMA8WXzvXKCLThhyaY/bnQbdDYSSLREECSbncVidas1lx25Z2C1cP77dF5X8HQrCklMaOtma64wafPPswJk/3z1m+JfhG5PFqY+bGJv+Id4niylA6KdeVJsE62EoscQFJOUgD0AlEqE/Iw7soRCBDnYf0OmBArp+nx2p9jhxXaZUu/fCILKqiWYrbUYBuLtD85rMyIe1JY9vZYN1Gjdym86JnAVyt51sbqpvr4EtxguAVhzD8jwibLXTZGiHrJUNW69pSDcJ1xYOWP5d2PBqQoxoIaA2dPtCoZU0BWlY4mKzujKLfY9wvOWYelYwFq4d2hsfY9UlJI3HEgUycNZZADIJhzLnOKoVk6FipjXlX1AjiHncRV0JEp27fFfwidxHDBe07xbd0Nj2piVaapxq/0nKmbUIMam68+Zw+R30Lj3PwS6ROFMu7eqemQ1bAt4esm+HjiMPxSoRFP+5p5LiErqjVvffFJPxmjC88trokIC2O2GlG9fpBebgMnmA/9s/ycnwV5BblJbTztjGeBGLpyKvQXgeHnVxtFIBC2rc2aXlLIxRDu0o94XnbInNSe8jVlC2zKRDrfsG9193G2ufJyG5vUYxTOVf+xW181y6WCtFYMqElJItSmeCv66eVAGRxg7wx8S7dOVVmJQd1JJyuzeQyl03PWld80iopbbKsmEJ3p22HImCu/jF5/PKLOW1ltc7AdgFYQMbptbsb/c0xNVQClSQK6O/VgUQwGLincgQYScuDqzSiDPZiOoi/4ouup7XaMkNkphGrgmMJ2Ur7Oi+ixSxN6BLIcgxedwBQOIsjWkmWtsq+gFnXPgYAir8Qnuj70+B5TmYZJFW6tenerdh4AQn68JjPe4lCcjJDQ+LZ4S9IcBbRO+6rBGNEzfz7TzH7/ycekUCKmiSgyVC18Xwc02KSL4b4yNPg0JkhlytTFODMWssvBAVAJhYpvv1YTSIkOlOqlRZ2BOh509DiYKJHQMXRRYFz8KCKsdFhMpwGf8la8PMirc0AuO5BcXc31s0nMgxCIwEtaSTWGnVHvr5J2lIAygnQMWEAXgBB/u0T4kzZXMJ2Jy3X5BJmxhZm1VZmFSIcZCZ6OiomsiduBQI0UdbwMUEolmnGOtpR5Hb0HxvOfh5xutoIhC4wc9aRsiZHuoYKu+xUgleeZ0J/q+3azGML3hHSHxMnJqKHL6GMNvcCSozx0hibw+v3lAaHSLwMxxe2eaiHlQKbtUiDrPNbUlTDsGaX9fjEIq6kF/1A+WTEj+9Crxytle4uxiCYVhJ2V0rwc3ug+abbVDaFIV63kD/szJFvpmkBDx+II3FjFxeaPQ== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 52f975e1-3fa2-494d-4afc-08db02e7e94f X-MS-Exchange-CrossTenant-AuthSource: AM0PR04MB5121.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jan 2023 17:32:09.0857 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 7/CfUihnyC0hFoDRKUKYck2gBrw9bpTpqUyhbNqvFZaPWlp03f9vdwklfGpbx80wB0KMCPwLLZ5UO5rM6ZJBhw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR04MB7677 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org enetc_reconfigure() was modified in commit c33bfaf91c4c ("net: enetc: set up XDP program under enetc_reconfigure()") to take an optional callback that runs while the netdev is down, but this callback currently cannot fail. Code up the error handling so that the interface is restarted with the old resources if the callback fails. Signed-off-by: Vladimir Oltean Reviewed-by: Simon Horman --- v2->v4: none v1->v2: patch is new drivers/net/ethernet/freescale/enetc/enetc.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/freescale/enetc/enetc.c b/drivers/net/ethernet/freescale/enetc/enetc.c index 3a80f259b17e..5d7eeb1b5a23 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc.c +++ b/drivers/net/ethernet/freescale/enetc/enetc.c @@ -2574,8 +2574,11 @@ static int enetc_reconfigure(struct enetc_ndev_priv *priv, bool extended, * without reconfiguration. */ if (!netif_running(priv->ndev)) { - if (cb) - cb(priv, ctx); + if (cb) { + err = cb(priv, ctx); + if (err) + return err; + } return 0; } @@ -2596,8 +2599,11 @@ static int enetc_reconfigure(struct enetc_ndev_priv *priv, bool extended, enetc_free_rxtx_rings(priv); /* Interface is down, run optional callback now */ - if (cb) - cb(priv, ctx); + if (cb) { + err = cb(priv, ctx); + if (err) + goto out_restart; + } enetc_assign_tx_resources(priv, tx_res); enetc_assign_rx_resources(priv, rx_res); @@ -2606,6 +2612,10 @@ static int enetc_reconfigure(struct enetc_ndev_priv *priv, bool extended, return 0; +out_restart: + enetc_setup_bdrs(priv, extended); + enetc_start(priv->ndev); + enetc_free_rx_resources(rx_res, priv->num_rx_rings); out_free_tx_res: enetc_free_tx_resources(tx_res, priv->num_tx_rings); out: From patchwork Mon Jan 30 17:31:33 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Oltean X-Patchwork-Id: 13121476 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 42DB0C636CB for ; Mon, 30 Jan 2023 17:33:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237651AbjA3Rcn (ORCPT ); Mon, 30 Jan 2023 12:32:43 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48582 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237494AbjA3Rcc (ORCPT ); Mon, 30 Jan 2023 12:32:32 -0500 Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2084.outbound.protection.outlook.com [40.107.21.84]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4B8D53BD9C for ; Mon, 30 Jan 2023 09:32:21 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NwYbwkMtK64JWyHWlgg+tv+VDMEbWoqAH7ZaHT4MszwvUiO0k6YMBKkMYjwDdFGGUJums/eCxqnodxLXrSPjqJxCz3i3u9Umb5/wGRtNEGx9kWLfMkBx63gzKQupVnCO7n0B4O/tkc0J+hil7v1ev4ae2rchvLkNcYKc1RoVdHipGUs9O8YHh5RAw7hUpoWzM7jMw6n6j3i8D5mh4x6fgo7o2JmQ/c80/y27c8kzHp2dZx5xS3Ob4Rc/D5Sr21dvPQrpEYnYtA63WuutpM9qxhjjnel5lnNZKLraxuOaAYJBbWKLpmVwXwDX/l5dA3U+xGk6bVMpTJvGdby77oBRCg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=FZGnuiFstEBfHjUUtIamArn5rwyBGPrhGVSpwy9kCEs=; b=STOR0q1KYgowexuJa3Z///PMFivPJu9gW0fbsS0OkX3XIW3wbuFNaSAT8n3ztC54O5upHCqhGNHjPQUZ4xEacg7ZJFuEL5BtlSyRKEZBUdRWUDykJP4pU8rMffuhExNDeFFeUoJtTVqA97ZIFP9ykSGlL9MWxGDlVC7nCwB+KBWePoLxH9+mdRPr0hVgRkRhtqMJw3xsYs0veLcqp/+HTGwsDoVcXWkXp/geomelCD4eFiXNk7BhzsB3uHL4mUVkhj848qLStEN0xoTxv3GFXE+S8kqEk5eL9JxPyuMh0wcTgoTQ3NtloSbVMswuGbOKGCtK7gfuZhnjWI4axc4z0A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=FZGnuiFstEBfHjUUtIamArn5rwyBGPrhGVSpwy9kCEs=; b=nla29b76BY3I8X/z4qlDRHeYHu+qXy7knrazN10JFJxWbeOBG/MjjLcCUFQCUxdfIIrSM3cPJ4v8+9CgQI9O4p1y2urrCSwtxR5b+2fjMhisO3GdnUwA/gXhoJ1jTJoyxKG+/lr4DWOpdkv/DcLIYCnFHokNnlMrc+M5pgxISjs= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM0PR04MB5121.eurprd04.prod.outlook.com (2603:10a6:208:c1::16) by PA4PR04MB7677.eurprd04.prod.outlook.com (2603:10a6:102:eb::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6043.36; Mon, 30 Jan 2023 17:32:10 +0000 Received: from AM0PR04MB5121.eurprd04.prod.outlook.com ([fe80::4c1:95d7:30fc:d730]) by AM0PR04MB5121.eurprd04.prod.outlook.com ([fe80::4c1:95d7:30fc:d730%4]) with mapi id 15.20.6043.036; Mon, 30 Jan 2023 17:32:10 +0000 From: Vladimir Oltean To: netdev@vger.kernel.org Cc: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Claudiu Manoil , Vinicius Costa Gomes , Kurt Kanzenbach , Jacob Keller , Jamal Hadi Salim , Cong Wang , Jiri Pirko Subject: [PATCH v4 net-next 03/15] net: enetc: recalculate num_real_tx_queues when XDP program attaches Date: Mon, 30 Jan 2023 19:31:33 +0200 Message-Id: <20230130173145.475943-4-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230130173145.475943-1-vladimir.oltean@nxp.com> References: <20230130173145.475943-1-vladimir.oltean@nxp.com> X-ClientProxiedBy: BE1P281CA0186.DEUP281.PROD.OUTLOOK.COM (2603:10a6:b10:8d::10) To AM0PR04MB5121.eurprd04.prod.outlook.com (2603:10a6:208:c1::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM0PR04MB5121:EE_|PA4PR04MB7677:EE_ X-MS-Office365-Filtering-Correlation-Id: 1d8306bf-603c-4df9-5bbc-08db02e7eaab X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: W03hCspqwibAWw0mRHe5kyhiFYCbGzIwe7rRTyRdz3mtjVhe0xADhC1/V9lmt4vM5vZefhV3eWN0BorimdU4DWJwiNzlM+pmzDdlYspI0K34MGdlP8b+wL2Z752ht4J9mWZtxoLc6GRreRj9BsYIAyDus9CtfkSaYoYzMod5/NFCfo/F6XgOZb6XNraHtSuFSaRRybzRu5fcItc5Dk9LupgMh4r5YFm5ysqX3BGI8cTMsOzYtdTcKLjkHJVRYyx9GvBICkDIJP3HC60rrgjfA391DNAzPB7CzNfC5+sy9jqtp220Z/XSfEHz7fw5J99mTBnRzKe6h6ixqPJjtOt055IdC3UtHwzKw8AEnwYw0uWLM2tbkoDKsD2tPcdGgmN06gV7SPNt95hLaI/nNlD4eSIgwkAQoSZiY2RyAw5ivQ0hKWkKfBO+HC+oEOvmdk0MI5CZQNeGejhzlCmCz+Qk1NnLDgUv6WeejLRAtyo29Q8eSzrPj/WMId1Z2nSEnGwdCptczhnKtRapXGyUVMqqIEcadZSzx9B5MvOqKPGPK4O61Q1H0qofXTA48MoGky/wOFv+Odttqv/2k/dhIyQnO4aWLZ9P5/XNvtWboey8kTdME4Ik8204nInAaqcnUz/7UD1ieBbooi61ZJ0PU1jJWH0zYCCW/Cmv8zF5xG1kksDsCM4QmXvUzJzMnx/4gl3iQLRapW6p3gjy2opsdrHlFw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM0PR04MB5121.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(4636009)(366004)(136003)(39860400002)(376002)(346002)(396003)(451199018)(2906002)(5660300002)(86362001)(44832011)(7416002)(83380400001)(8936002)(41300700001)(36756003)(478600001)(6486002)(1076003)(26005)(6512007)(6666004)(186003)(52116002)(6506007)(2616005)(54906003)(4326008)(66476007)(38100700002)(66946007)(8676002)(66556008)(6916009)(316002)(38350700002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: TI1P7T6i0nuhn2CFtsAJzd+An1Rl01vswZ1quHpMFwcwU4vaZ3ycutO5Cq55nXoXrHfuNnWl+w/+acxgi1zueDIGQYnURBJCPNGUarp/AtqgDT+ugeUFU5sqzB0QC2wyRv2d1yrvkizkRFlMQm+YrqouHzWgDKVdTZVI+CFHZc8ilAgVjve+C54xUQoOAuNlu1PBt662OUTNVXhYtGJrKLvX1CzY9nHHtD7/aqjxX6FaKZR/1HT7fxElFFxxxKSuMe2dvhPDekAdj2SUIjWBvLZ2K7ss8nRwDEeA7u4Dsa93hFWoU632yWRtMz7QO2xgUT/PCJvqb9a7ZkfYdoUEL6qMuRwiT/RrAinNuaX29dBFfXCWAwvQk1AhL3ijfK7KC7/eMNJ2h1OPUVcwJh6qlDexGTHF67wmNOTB7HxPVVgQ+FKTivOHTuJ2ROYEMwCrqCkSK0i0kyzPv051hpHR7Km1vyTryp5yYP2KSrCTAoOmwokrdU0pz1VD3cx1hV8jBS869azZd98yT4gwyO0fc11hVvc5zmI2OV3tsta8Qw9IPnNrtxgHebjQxfMtfAL2S5p9zNnTEhY+7XG1Y8sdzHueiYqJWgFrGMCRq9hMpdP3EgCxhct6QgbmVu86HEOeilZ+vNBeMEieBn+Tjpj0RnjkjGgSo/0Mj8p1lX8fPrbEwEi6tw3KvUG58yGHOeL+JMG+jblyNNqCjfXIKbTFO7T2NIxMf2crsyJA5npQm4s+XBc5WTD/nXjPGFxY3crPxaBvNJbdbj2+a5/0nb2EFsJ93GgFjQDwP6lmIizizB5juVkbp++tYgglmfNlMPjDi9qlOumBpFslB+yMVewp6Pi+O6nd4Ux6yGs5fG0ZY3dKYx7YEs3RjGnNcHK3YVtdb41tOBYBmZ1JiyMXhpyPgBExMDU5ALyVBK8dfN8Ubc5Hpt2pzIGKD8L7pRWPtFDzMGKyckXKrIgwjlJRrSXli1lbE0O0nnPD7IAGCq9boNnIRisShzRJqdgFeLkgbLjsZSTPStJkzsQaswMqEhB7LDRsHPfRNgQi7U6WUv2Yy+K1SOuSe0jxBiHx4M/aHITjQj1KDjxwiXlhmC4/QBiKbqjS4x2yiZtd9TewML9KtTjKDaGhYserkwW7QODAAelR0I3f7Hw0N7V9upwq18K4v/YagdCl4deZ9FsR7xGoij7rCqR2VAdg7xJGbU2vc81eYO4SxHPFjwNAETPW8EJXQKz4hTFuz7WkZsyfwHnl66Xb6FI5fJetyeGq1oVmRgVMvbnCtBVAqScAooPuSDdAh1tgyUFsbbQn+1675gC+4qubGnBjtHzRKXobhLJOJEGg26J339ENGaJepn9l8FENybmqIA8132mEUCTH9GScRi45vRZyl7A2F9r6I5qJNdZKnzK+a59e3FlszKaYl2KfiYBsdTGiJ66uyusaoGQlzRsSsVP5moO5RPqBe4geBOTeTkxp3cvNTX/Nqjibkgsze5QQqqGK1vHFByGANWYugsprAP9K0ZKtiGp1qFzceYu2ymSXUwuc/un4WtKQkeM/4/b38rEDMFy5qpHwKYOI++eV0pBSJ2BKptHd60Js7cQJ+jrEQHgC5xejATwao4Q3sg== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1d8306bf-603c-4df9-5bbc-08db02e7eaab X-MS-Exchange-CrossTenant-AuthSource: AM0PR04MB5121.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jan 2023 17:32:10.3512 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: SffehchClwhuJ1yyxyqgHZAZ51hwotDK5swQ7CQ7GzVDjIAl8ooEuT5mYm96FQ3HDRACCWqLp9eowA7hu/VPXA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR04MB7677 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org Since the blamed net-next commit, enetc_setup_xdp_prog() no longer goes through enetc_open(), and therefore, the function which was supposed to detect whether a BPF program exists (in order to crop some TX queues from network stack usage), enetc_num_stack_tx_queues(), no longer gets called. We can move the netif_set_real_num_rx_queues() call to enetc_alloc_msix() (probe time), since it is a runtime invariant. We can do the same thing with netif_set_real_num_tx_queues(), and let enetc_reconfigure_xdp_cb() explicitly recalculate and change the number of stack TX queues. Fixes: c33bfaf91c4c ("net: enetc: set up XDP program under enetc_reconfigure()") Signed-off-by: Vladimir Oltean Reviewed-by: Simon Horman --- v2->v4: none v1->v2: patch is new drivers/net/ethernet/freescale/enetc/enetc.c | 35 ++++++++++++-------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/drivers/net/ethernet/freescale/enetc/enetc.c b/drivers/net/ethernet/freescale/enetc/enetc.c index 5d7eeb1b5a23..e18a6c834eb4 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc.c +++ b/drivers/net/ethernet/freescale/enetc/enetc.c @@ -2454,7 +2454,6 @@ int enetc_open(struct net_device *ndev) { struct enetc_ndev_priv *priv = netdev_priv(ndev); struct enetc_bdr_resource *tx_res, *rx_res; - int num_stack_tx_queues; bool extended; int err; @@ -2480,16 +2479,6 @@ int enetc_open(struct net_device *ndev) goto err_alloc_rx; } - num_stack_tx_queues = enetc_num_stack_tx_queues(priv); - - err = netif_set_real_num_tx_queues(ndev, num_stack_tx_queues); - if (err) - goto err_set_queues; - - err = netif_set_real_num_rx_queues(ndev, priv->num_rx_rings); - if (err) - goto err_set_queues; - enetc_tx_onestep_tstamp_init(priv); enetc_assign_tx_resources(priv, tx_res); enetc_assign_rx_resources(priv, rx_res); @@ -2498,8 +2487,6 @@ int enetc_open(struct net_device *ndev) return 0; -err_set_queues: - enetc_free_rx_resources(rx_res, priv->num_rx_rings); err_alloc_rx: enetc_free_tx_resources(tx_res, priv->num_tx_rings); err_alloc_tx: @@ -2683,9 +2670,18 @@ EXPORT_SYMBOL_GPL(enetc_setup_tc_mqprio); static int enetc_reconfigure_xdp_cb(struct enetc_ndev_priv *priv, void *ctx) { struct bpf_prog *old_prog, *prog = ctx; - int i; + int num_stack_tx_queues; + int err, i; old_prog = xchg(&priv->xdp_prog, prog); + + num_stack_tx_queues = enetc_num_stack_tx_queues(priv); + err = netif_set_real_num_tx_queues(priv->ndev, num_stack_tx_queues); + if (err) { + xchg(&priv->xdp_prog, old_prog); + return err; + } + if (old_prog) bpf_prog_put(old_prog); @@ -2906,6 +2902,7 @@ EXPORT_SYMBOL_GPL(enetc_ioctl); int enetc_alloc_msix(struct enetc_ndev_priv *priv) { struct pci_dev *pdev = priv->si->pdev; + int num_stack_tx_queues; int first_xdp_tx_ring; int i, n, err, nvec; int v_tx_rings; @@ -2982,6 +2979,16 @@ int enetc_alloc_msix(struct enetc_ndev_priv *priv) } } + num_stack_tx_queues = enetc_num_stack_tx_queues(priv); + + err = netif_set_real_num_tx_queues(priv->ndev, num_stack_tx_queues); + if (err) + goto fail; + + err = netif_set_real_num_rx_queues(priv->ndev, priv->num_rx_rings); + if (err) + goto fail; + first_xdp_tx_ring = priv->num_tx_rings - num_possible_cpus(); priv->xdp_tx_ring = &priv->tx_ring[first_xdp_tx_ring]; From patchwork Mon Jan 30 17:31:34 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Oltean X-Patchwork-Id: 13121477 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 655CCC636D3 for ; Mon, 30 Jan 2023 17:33:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237862AbjA3Rcp (ORCPT ); Mon, 30 Jan 2023 12:32:45 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48618 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237802AbjA3Rcf (ORCPT ); Mon, 30 Jan 2023 12:32:35 -0500 Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2066.outbound.protection.outlook.com [40.107.21.66]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6E7F344BC9 for ; Mon, 30 Jan 2023 09:32:31 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KiqGKLhtjAmM9ewvca7C9o9MqHbgbgSksplmS73d5+nUmQdj8Cv5L3kRGru0LyzXj2GNU0ie0T1RzbxE+W+Duy/OxQ0FD5ABD1q2kSbACDWPwY+FxNjLdbtvPRIGJTSH5A9VivVc1wq2WrJuL5cpAEYuwLNu/dSC2b2HikM+Yr72AXqJ2Lo4xsmKNSxJzaPCKPDphkBNXyZH0vTKdariTeo1LQV1EnG8NIOE1aU86WSjnOC4wP1L3IIbB6quqmxWvyZrR3bMaDpBmZyj5ZMB6s9IcmQppCVNf1ifXinKTKVNwBlVOQE+IpC4hqKvuRH7NyDMf7pGTcjJ+1rMdd9ZTw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=xvl6BY60vanE5T1YCmT0ozsmm6s80ixjIQphDZLf9OQ=; b=Si5n/2xZGJCb6O/SlUuiRV3kBwc9+85zaLdkIJtjGfkvnxNFi4OtvnrC4VMOSHAH/pQY7+qaGm3uVfJQOHSX9ZJtFbrKtmjssA+UVGtY6hksIhY2Yu+AH7jomxu/XDOT+MXp6Z4ty/zhg+66objfDzwXjhMaLcEjRgXYw/BFcpUcAtyMphmXQg05WPFzDIPez06nmMbxBu/jas9q3OXX77g/YT2gbhy1uohAXpsSXEQyYpQDCqeLlZnCwOHDp/vfZu8BsJkgmYuAyLHSPovr03r/DTsZ8oRyRZShtrtetLJDQBRslDx1XTcj3zWSfonzDMIv9Rv9M/Acx2KYzFP//g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xvl6BY60vanE5T1YCmT0ozsmm6s80ixjIQphDZLf9OQ=; b=J7B74bd2n+vY+bgyO751Jkqn4b0nT3qlAzUi78w2nsgA2u6SwMwbYP8psjPLdfjFRO3/4uIuHAdXkJ90j9wLw1SHzcEEWd3TKwBPjGI7FEwm7QCPtKmKIMQiiCDdFxKtcInGldB0mOTxiHFoDO+DmL1GHPJ53PCrhhMO/6VAh5U= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM0PR04MB5121.eurprd04.prod.outlook.com (2603:10a6:208:c1::16) by PA4PR04MB7677.eurprd04.prod.outlook.com (2603:10a6:102:eb::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6043.36; Mon, 30 Jan 2023 17:32:11 +0000 Received: from AM0PR04MB5121.eurprd04.prod.outlook.com ([fe80::4c1:95d7:30fc:d730]) by AM0PR04MB5121.eurprd04.prod.outlook.com ([fe80::4c1:95d7:30fc:d730%4]) with mapi id 15.20.6043.036; Mon, 30 Jan 2023 17:32:11 +0000 From: Vladimir Oltean To: netdev@vger.kernel.org Cc: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Claudiu Manoil , Vinicius Costa Gomes , Kurt Kanzenbach , Jacob Keller , Jamal Hadi Salim , Cong Wang , Jiri Pirko Subject: [PATCH v4 net-next 04/15] net: enetc: ensure we always have a minimum number of TXQs for stack Date: Mon, 30 Jan 2023 19:31:34 +0200 Message-Id: <20230130173145.475943-5-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230130173145.475943-1-vladimir.oltean@nxp.com> References: <20230130173145.475943-1-vladimir.oltean@nxp.com> X-ClientProxiedBy: BE1P281CA0186.DEUP281.PROD.OUTLOOK.COM (2603:10a6:b10:8d::10) To AM0PR04MB5121.eurprd04.prod.outlook.com (2603:10a6:208:c1::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM0PR04MB5121:EE_|PA4PR04MB7677:EE_ X-MS-Office365-Filtering-Correlation-Id: ff448e0c-a7de-4fbb-9b87-08db02e7eb92 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: TQfeICkx7t2DrFTclElHft5GlMTS/m4o3kZEtMvBFlvFQTD+Dz+FXS/qL+gqwxFkvTQEGSuciC73TCnmuCSyxGrbb9lyd0rflbHo/RXnEoKUV+AM+Pz4mRgCHdeXB+ly+0NhV4vAu6AMOFIqzbD64jxercvWC/dkB5Du6/rJddYCQ+HNl33YuoAYdPWQUtHZ1cFq/7QcE+lgU+bCzvsUsxB8oIE477ujCt5s5jdst+yf1YyAKkINjNJlemDQQOlVkHFnnWw0U1RFZDxySY1hzDBToa+fTBPom43Lb8EwRbytwusF9sQvRb3XUsJz2GJCVqDVjSrcTXPIC7eGlRJ18F6WWSTytfWtAAJ0vbh4zfLxVjYVvQuBJQZfxLdmIHgMvxLzN63VySejmB0/UOsvYwizqLi02d3s/k8VsV+Hd1fEgjr5GqzlvzEoZR/q3nhyZl5PZ5VoL+8Qof9PxOmkJeyyMq4UTUljJV6mU7sSDW8M49gKeLstoXWXcyheym+n7nICNe0j6bh1fairyNf/jh4Jq+uWV3aLiO/6TgWqW237oFw9W71cECVeQKBe5tg9rffhn+9Y8juy8pV3XxEJLyDxqIacr5c/mi0+J1mzjh8Vwc3RpbcfAdED0EbUG0Ee/SKA+7efbIH0Hb/YMpwI8LqZ1Gtm7RI0vN0xwVq7FioQQDfET3yeQQDVLeTAb1kCofkmHN1EWXD6G2O02EPhaQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM0PR04MB5121.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(4636009)(366004)(136003)(39860400002)(376002)(346002)(396003)(451199018)(2906002)(5660300002)(86362001)(44832011)(7416002)(83380400001)(8936002)(41300700001)(36756003)(478600001)(6486002)(1076003)(26005)(6512007)(6666004)(186003)(52116002)(6506007)(2616005)(54906003)(4326008)(66476007)(38100700002)(66946007)(8676002)(66556008)(6916009)(316002)(38350700002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: PXNUHpc+4NP/f+/pyI+Lef+OTAeo0UEhg5d0kYSYcUWb4bjKPY2vvvY6YkNVZUw/GpUmFyurVBXXXIJF5vCxXF0zCF2yqrM9oeo0gaGcWdaAeCLYZ5AKBjljAV5A5mPOmuSDl27WlYUdP/V3wL2ZbwGGSNochU0s0xO+1Y+Z1fbtqu3v9Gia43jGb48XmcXlchoUxy1JrvHiHNgPYDXsppxUFmjPDayZosfP1Vpm7EB3XEo7AWcZn/+ykrlQbWMkdTulB+bkNnWRBStBw1qOwoxmb7FHTwTtumcGezxXI2VIOfnHEneVxmDLohVu2O/pFPfYGJvvI+jrCf6FCLQwYvwVX5HhL3nnuVqoIspZIk6IP78PfUWB5EPS8IOk06lU8gRi+B1l8CljDZwsHGkDqd7rf+XPDjuPWWzWlV86pmlMbPyiZge4q+uDzvMbxeJvRLCYtx14odK3LaBBmV8pa4cx93LoMyUCvoxXhdU0znRFRKcXRXWGJd9ag52s4lfrIFbYd15ABEVRzYP1FNKQU7zRi9xejdwD6huHpOBsoqPdDfGkuUSypB4canb50Aus2V7Hly0DP7gIkPmLCQ87sVa9FKihbhfqQ8Nkgxxi1lBVOiGKISK1sdohA0LS9hL40wnoO/24pdZ3/ITDt0qY4Kqc7r2Bu43iOGys6WQ6MKhHaWmv/iyuFfYzUMfZftw8UB4wvvrb6SwoteF6dKoFR2+eFgaLu8cG12RbMOjF7mx0i5rTO4PiThzZCNb1oO4o6tIIRTLbKca2Gyn3XVR7UCROTEzGTutBMnQOOz2NB12QoV1hg9pCTaaP4IN+GZW9Oq7/uCZI3h3JxVDysv9Q2S7BnBghlGwJlUnsk34/J5TLANhbxkFVAfyzw27uf+Se1a6ivf7umkUnhKVso8XSZmqkeQbjx6TKuIH22ggDEtpuJnPFvqmGvwRCIU5O9yMfbcz8xUaBVkkv3fWf25AsD9wV/5pV7+vJ2y2Zm/7vCod/EDI2CUbUqOKGBtsc+Sw0kuC86TcmbKiWnuWpgQuF4eOU07Abmx9XX/ok+q5tMQpK4E28N90M6S8MecRQx11SZaPeXfNNOy3QzvcvTayBi69cGDZJt51Lk/Vkz1dxn++a6c0e/EbQ4sbiqTvjsAIXAUfMZZML9yEz0LcESV5S0IrJRP8+G/u+WkGM8hDSVuMPelKlfCod4E5yulQ3GePSd2NFnBZz6lSCMPrpLZNEYim789w69EW8CS/gxHb4GpaYaa7Ov2h15Ay8KnlP2yOZ7mayzwRBN22pP3/k7k4HKFWq1mHX+FWXyOo0lEw3Ylnfiba993Ucpq/eny3TXcAl2CVibYtNIjCIPBfT7Fu+qvCT3MQ41wWKTpsqWfso3iBC7VOijA7uEVSwhQAKGok2A9bJCvNNo9UnCoMrQcmK3CfmP0h9Xrvzr89LgbGn6bQftdU+FqIzHDulXvd3MxWscnhe6i9hKxBxs23O6r1s2kU4hdr+KjMjsQ2j/z4352IxrTo9emb23LityV7HHxxvaKqHwvjCXbEo2JiTHBuDV7BYqfkDjNF+P9LV+Z60I0x9lHPc7EAG3Ik7HqMQ0x0Yjw8JJu+wXOhE81d/z+IcWQ== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: ff448e0c-a7de-4fbb-9b87-08db02e7eb92 X-MS-Exchange-CrossTenant-AuthSource: AM0PR04MB5121.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jan 2023 17:32:11.8667 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: EAh2Dv4r3oUwLNw1IQa4RfW96mxASSEN1OUB0I04eaf6YcrHjVcyreG7Z2+jzgfP9RUElGr8we8se0FM9dQ3lg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR04MB7677 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org Currently it can happen that an mqprio qdisc is installed with num_tc 8, and this will reserve 8 (out of 8) TXQs for the network stack. Then we can attach an XDP program, and this will crop 2 TXQs, leaving just 6 for mqprio. That's not what the user requested, and we should fail it. On the other hand, if mqprio isn't requested, we still give the 8 TXQs to the network stack (with hashing among a single traffic class), but then, cropping 2 TXQs for XDP is fine, because the user didn't explicitly ask for any number of TXQs, so no expectations are violated. Simply put, the logic that mqprio should impose a minimum number of TXQs for the network never existed. Let's say (more or less arbitrarily) that without mqprio, the driver expects a minimum number of TXQs equal to the number of CPUs (on NXP LS1028A, that is either 1, or 2). And with mqprio, mqprio gives the minimum required number of TXQs. Signed-off-by: Vladimir Oltean Reviewed-by: Simon Horman --- v3->v4: none v2->v3: move min_num_stack_tx_queues definition so it doesn't conflict with the ethtool mm patches I haven't submitted yet for enetc (and also to make use of a 4 byte hole) v1->v2: patch is new drivers/net/ethernet/freescale/enetc/enetc.c | 14 ++++++++++++++ drivers/net/ethernet/freescale/enetc/enetc.h | 3 +++ 2 files changed, 17 insertions(+) diff --git a/drivers/net/ethernet/freescale/enetc/enetc.c b/drivers/net/ethernet/freescale/enetc/enetc.c index e18a6c834eb4..1c0aeaa13cde 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc.c +++ b/drivers/net/ethernet/freescale/enetc/enetc.c @@ -2626,6 +2626,7 @@ int enetc_setup_tc_mqprio(struct net_device *ndev, void *type_data) if (!num_tc) { netdev_reset_tc(ndev); netif_set_real_num_tx_queues(ndev, num_stack_tx_queues); + priv->min_num_stack_tx_queues = num_possible_cpus(); /* Reset all ring priorities to 0 */ for (i = 0; i < priv->num_tx_rings; i++) { @@ -2656,6 +2657,7 @@ int enetc_setup_tc_mqprio(struct net_device *ndev, void *type_data) /* Reset the number of netdev queues based on the TC count */ netif_set_real_num_tx_queues(ndev, num_tc); + priv->min_num_stack_tx_queues = num_tc; netdev_set_num_tc(ndev, num_tc); @@ -2702,9 +2704,20 @@ static int enetc_reconfigure_xdp_cb(struct enetc_ndev_priv *priv, void *ctx) static int enetc_setup_xdp_prog(struct net_device *ndev, struct bpf_prog *prog, struct netlink_ext_ack *extack) { + int num_xdp_tx_queues = prog ? num_possible_cpus() : 0; struct enetc_ndev_priv *priv = netdev_priv(ndev); bool extended; + if (priv->min_num_stack_tx_queues + num_xdp_tx_queues > + priv->num_tx_rings) { + NL_SET_ERR_MSG_FMT_MOD(extack, + "Reserving %d XDP TXQs does not leave a minimum of %d TXQs for network stack (total %d available)", + num_xdp_tx_queues, + priv->min_num_stack_tx_queues, + priv->num_tx_rings); + return -EBUSY; + } + extended = !!(priv->active_offloads & ENETC_F_RX_TSTAMP); /* The buffer layout is changing, so we need to drain the old @@ -2989,6 +3002,7 @@ int enetc_alloc_msix(struct enetc_ndev_priv *priv) if (err) goto fail; + priv->min_num_stack_tx_queues = num_possible_cpus(); first_xdp_tx_ring = priv->num_tx_rings - num_possible_cpus(); priv->xdp_tx_ring = &priv->tx_ring[first_xdp_tx_ring]; diff --git a/drivers/net/ethernet/freescale/enetc/enetc.h b/drivers/net/ethernet/freescale/enetc/enetc.h index 1fe8dfd6b6d4..e21d096c5a90 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc.h +++ b/drivers/net/ethernet/freescale/enetc/enetc.h @@ -369,6 +369,9 @@ struct enetc_ndev_priv { struct psfp_cap psfp_cap; + /* Minimum number of TX queues required by the network stack */ + unsigned int min_num_stack_tx_queues; + struct phylink *phylink; int ic_mode; u32 tx_ictt; From patchwork Mon Jan 30 17:31:35 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Oltean X-Patchwork-Id: 13121479 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 76F0EC636D0 for ; Mon, 30 Jan 2023 17:33:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237874AbjA3Rcq (ORCPT ); Mon, 30 Jan 2023 12:32:46 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48616 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237818AbjA3Rcf (ORCPT ); Mon, 30 Jan 2023 12:32:35 -0500 Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01on2078.outbound.protection.outlook.com [40.107.13.78]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6E61A442FD for ; Mon, 30 Jan 2023 09:32:31 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jXX74222agktdjsOzTFf+obR5hIw1k+MSZocTZA9eThIC5iHDJdAsdv1xjC11TT7eoy2oUXHN02CwU5zVBlDY7CN0rbg1EbgiLO6SMgcZiqIKPf6L93NYOUgHZXw9D5M2fA4WPE4z12O14X2M4qLjZ0qu+V+XIRbezBdZO7MDgUlCQsW1T+8q7zut9XooblP81P+Up5llmU8duP526x6Dly1QSZZB+nodBQaLE01vVyG7e9Cu5s9mAqaQMbrtToTY86jleleMmewSy9Qy0ka2lck6Gfqg/3Cf3R+X3vNMXcmddM8Z379fpPc+nlujsZEXo/rlwX5IcJXS/Xa40RsjA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=iYkHvxq6IORixcz5knxOQlMC21se9PS6o5hIGW2J6oI=; b=oBYA78Eoe2HTyMCsaR0o/HZqlTGEFqz/89rwomrLUDOWNgfRxa8+aVrAgU3OdnN9809EINDnqxo6Vq09tfUXCAzK9UaGfPjdEcUKrYn7R3MLR0qgGEmZDhUfWz2Ju3O26SXRjLogffbf0YusKhql+7thRj2efwiejyWuJs+2PQ1yfN9bDr0AhysO+EVWmnx/oz6Ele94R794x/1emsT/5pQBzc71m5/I7hQxKRsmZvAtor620ohodfpb3vZMOEi83aRPyxRM5mumZdaAeMPN4HHBQSyCQRE0EO0D+HFEj4KAGJ2WdcO9fjaRcf31WWzRUoXfB1US03/V8OpHCdCk2A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=iYkHvxq6IORixcz5knxOQlMC21se9PS6o5hIGW2J6oI=; b=LlwzQBnonXodtsNq4hHIQ8xC/64qGZqMhJSqSRvBg+e85WVIyo88WZT4ylXRqTWMqYtCMtRRY+xouJjHqy1gKqNIG5tZbMUwcri5FTCRfFa9YhqK2pM6kijGR5x6AI9wAdoE5skgX5802kiFAUyUJ+BaOCNujCI3Xz+ZZw5u6Ew= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM0PR04MB5121.eurprd04.prod.outlook.com (2603:10a6:208:c1::16) by PA4PR04MB7677.eurprd04.prod.outlook.com (2603:10a6:102:eb::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6043.36; Mon, 30 Jan 2023 17:32:13 +0000 Received: from AM0PR04MB5121.eurprd04.prod.outlook.com ([fe80::4c1:95d7:30fc:d730]) by AM0PR04MB5121.eurprd04.prod.outlook.com ([fe80::4c1:95d7:30fc:d730%4]) with mapi id 15.20.6043.036; Mon, 30 Jan 2023 17:32:13 +0000 From: Vladimir Oltean To: netdev@vger.kernel.org Cc: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Claudiu Manoil , Vinicius Costa Gomes , Kurt Kanzenbach , Jacob Keller , Jamal Hadi Salim , Cong Wang , Jiri Pirko Subject: [PATCH v4 net-next 05/15] net/sched: mqprio: refactor nlattr parsing to a separate function Date: Mon, 30 Jan 2023 19:31:35 +0200 Message-Id: <20230130173145.475943-6-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230130173145.475943-1-vladimir.oltean@nxp.com> References: <20230130173145.475943-1-vladimir.oltean@nxp.com> X-ClientProxiedBy: BE1P281CA0186.DEUP281.PROD.OUTLOOK.COM (2603:10a6:b10:8d::10) To AM0PR04MB5121.eurprd04.prod.outlook.com (2603:10a6:208:c1::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM0PR04MB5121:EE_|PA4PR04MB7677:EE_ X-MS-Office365-Filtering-Correlation-Id: a251e46c-222a-40d9-418b-08db02e7ec3e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: XB8PpBF5FdBHJ+aJjW8MIoW562N1S9Q1CVWCQQjvy5gdq9hDKAlBIQ4lHX9d6xi/V+++4iMQbFCIf/XrlsQWIUXUqLDgRfY+HuN+QIzsjeaPPGrQR2TZzdKXStflWZj5DNI399pkwq8V7g2PjADC5qIYR6fnVDfpaJtORg11C4TS+nwqLTFkHX+KQ2NvQVu/iOZ4nm2a8nn4Hy04FsZSc0U1K11oSfR+nJt9ksU1SNN8WavDmBlkx7zPj8fsf42KEc3fY+E6VJgyCkQLfjSAu06zD1NsxX5MmkFm6tjr33YMD1o6rITk3/O5R52D2cKh6/ucj30ynRsieLkwMZ6zhwev8voc1WDja3SUwqNfnvmoei80TMYTVv46Tarb/C6nllf/c4jy6n38aE57V0LJz3+4VdZGp6H/vTKZpz7VGDBkr7QMcJlBC7v0rgAXNz+ARbKsDTf5X3azq01Tj7cD3WNJDNvHl81EVZJJUXugP2yQ/Y7TTp4ALyiPvyMob6ga6zFlU/CWseqFWJRFWd2csqLZ/JcSonLUpo8h5ilp122ROulQZnsKBa/OpN9GjEQokFaX/WyPqnrLH/1T+1GEDV951LzKzDVxLjkSa0bP0hoXwoLliJQEAPL50c4QuJFiTtT5uJU/EOBBiXYr+qs2ZVpFhDVOfA6QEo+3UXPegKsmGw/JD5vmIuaVkrRgATpMnKp5ajhrRy06pHFIp5Ycuw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM0PR04MB5121.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(4636009)(366004)(136003)(39860400002)(376002)(346002)(396003)(451199018)(2906002)(5660300002)(86362001)(44832011)(7416002)(83380400001)(8936002)(41300700001)(36756003)(478600001)(6486002)(1076003)(26005)(6512007)(6666004)(186003)(52116002)(6506007)(2616005)(54906003)(4326008)(66476007)(38100700002)(66946007)(8676002)(66556008)(6916009)(316002)(38350700002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 63l0dar7h71Af2s5OKdyGEUMSSmjRlKCeCS1K6vF7GwSQmcYY06WMf1S4x51trGggkLycWm9ZuIgrjoUrHNdvDh3Eqt6GZi3qxiPLGP5oWTFbsDW9Rl+gz3B5Hp9QzN+swdUXBM6X+1UAzvp1FVPTu5nZoITIRabK9gB4URLucuUZcCnVDqk6PINwmmcI5ivZGb0IkAS0U7tW8YpBYA6rsGDksyv/FyIln30vt2HCu0c6CbzcsEf1UgHp0GZAoLf3ExWEZmBL3BbIfFPwAv/LMNC1k0uyGenCdPcLff2HOpSpdO7AgTe9wAYcQu08L46Nz6+M+fW6pFG6Zw3G7E5xdGQ5JfQzgYhbYB+Oj5UlJ/kbys/ZbiPEEP8ue8A7zK7WJICJZ0asEKcHluAJSkRWDX1nxLmqD/XjDkavq31s81dFADVRKEdtsCakFalBNDGApaNVu1J7QpACUmGMOV9t3bs0GwFTBMs8OHqGiDDzM+nwWHhc7awYcGj77siQUBWv+BXhZh5EsTzQIzlsIdd2E5+41FU7O7ZpIn+6c0fTf7GNF3lqJZJ1zIXFQn/0vBA7hQDfsHiFqtDFVL2xtV40drzYNGjbzzFGIq8LumcoUoGf9pBafiu3YseBTm21+qrgBg9PotkzP2sTSbfLVqrr9JWPgFjB3duhbk2NFsQazeq/EbkT68HoIfH9rs51EVxjLq/fKHqCG3jz4FJJldRQYKCfptZOO2Ofen0tXt70J8VfkgFvLQKcjtysdawYxKEI8trLf4bY2Kyitm4BeVcb7ps7bJZOuRnqk6mwCjMCLvzT5XPrvaOd0ZVrXBhuB4IqlcJejk8wKjbbbNeq6BLL4vvsnekc4yfZlkSaJT9sb/47TTTYEjlCHVjTfXZHj8PU1Ngw2rllrMZyANsmUZIimn2iB1zqq/FH2w49/eryAkNOAcAE/k3/1wKdaxYfNy3t1QTyjZ7Kh3ij2/dkT83ivdem4lGk6kN9OGl91KDm7Ep5cCjG1hlkWB5Cenq6ka64lLajWwRI1+Mnci/ZyIjaORnpTgFZ3fUj1s6ktoB6gmsR1SZxe7DhlUGC1cEOVVIcDCTAn9UZo49JZnjbKXlvJhP3MDraVDB8/cgNq5FOYVWbg9E2qgqKbNJB/2svIR7U/7cOYovYnV1gcFmH1l9IhlDKCrfh3WOimPcthVbUcQoY9EJCtLU3AIreQljlE6iQSlVodBNCnetXJ8wBdDxoII4wzYXiENEtfMaZx9QTAikv8bVu9u9lDz7F4EMt9Tx/7ZtzTEGCCD5hDb48Y18eqAa58WaDSPhw/5OiYOM9YtQ44b88KInO0rqfXKOT/e8i+3WdXD3u2ERSeiMoLX2wSNDXe61vQweaffM9cBaqXSt3Qe4IP488XuA0u393CKQMeH1ReqD0bOiPdBp3FzDoxS3YwDRm2U4R7ONlHQHK++S2h8VGKBX4fXPIw/IVA8XqAw4aiXGieEKwN9i0YHya1Z+zjJsFvfx/sT5ZiYfIx4pCfnmWNDe2a9hd06NQ0m1PNV76QalUQ3PS28CC9rJ/xO0KIZbwG80yZH0qd+GMjmczTjMHL/VMKLG1x2G8yhvbMJHlW0jQ4GIr2G489ydwA== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: a251e46c-222a-40d9-418b-08db02e7ec3e X-MS-Exchange-CrossTenant-AuthSource: AM0PR04MB5121.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jan 2023 17:32:13.1323 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 9n2vUf9UXPWHqYWcymfZSm6VLo/8RFhDs+dNNu3sE+IWYDGp8UgC2stTHc5RcDDA2TplCI16/SLTXnMttOTfkA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR04MB7677 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org mqprio_init() is quite large and unwieldy to add more code to. Split the netlink attribute parsing to a dedicated function. Signed-off-by: Vladimir Oltean Reviewed-by: Jacob Keller Reviewed-by: Simon Horman --- v1->v4: none net/sched/sch_mqprio.c | 114 +++++++++++++++++++++++------------------ 1 file changed, 63 insertions(+), 51 deletions(-) diff --git a/net/sched/sch_mqprio.c b/net/sched/sch_mqprio.c index 4c68abaa289b..d2d8a02ded05 100644 --- a/net/sched/sch_mqprio.c +++ b/net/sched/sch_mqprio.c @@ -130,6 +130,67 @@ static int parse_attr(struct nlattr *tb[], int maxtype, struct nlattr *nla, return 0; } +static int mqprio_parse_nlattr(struct Qdisc *sch, struct tc_mqprio_qopt *qopt, + struct nlattr *opt) +{ + struct mqprio_sched *priv = qdisc_priv(sch); + struct nlattr *tb[TCA_MQPRIO_MAX + 1]; + struct nlattr *attr; + int i, rem, err; + + err = parse_attr(tb, TCA_MQPRIO_MAX, opt, mqprio_policy, + sizeof(*qopt)); + if (err < 0) + return err; + + if (!qopt->hw) + return -EINVAL; + + if (tb[TCA_MQPRIO_MODE]) { + priv->flags |= TC_MQPRIO_F_MODE; + priv->mode = *(u16 *)nla_data(tb[TCA_MQPRIO_MODE]); + } + + if (tb[TCA_MQPRIO_SHAPER]) { + priv->flags |= TC_MQPRIO_F_SHAPER; + priv->shaper = *(u16 *)nla_data(tb[TCA_MQPRIO_SHAPER]); + } + + if (tb[TCA_MQPRIO_MIN_RATE64]) { + if (priv->shaper != TC_MQPRIO_SHAPER_BW_RATE) + return -EINVAL; + i = 0; + nla_for_each_nested(attr, tb[TCA_MQPRIO_MIN_RATE64], + rem) { + if (nla_type(attr) != TCA_MQPRIO_MIN_RATE64) + return -EINVAL; + if (i >= qopt->num_tc) + break; + priv->min_rate[i] = *(u64 *)nla_data(attr); + i++; + } + priv->flags |= TC_MQPRIO_F_MIN_RATE; + } + + if (tb[TCA_MQPRIO_MAX_RATE64]) { + if (priv->shaper != TC_MQPRIO_SHAPER_BW_RATE) + return -EINVAL; + i = 0; + nla_for_each_nested(attr, tb[TCA_MQPRIO_MAX_RATE64], + rem) { + if (nla_type(attr) != TCA_MQPRIO_MAX_RATE64) + return -EINVAL; + if (i >= qopt->num_tc) + break; + priv->max_rate[i] = *(u64 *)nla_data(attr); + i++; + } + priv->flags |= TC_MQPRIO_F_MAX_RATE; + } + + return 0; +} + static int mqprio_init(struct Qdisc *sch, struct nlattr *opt, struct netlink_ext_ack *extack) { @@ -139,9 +200,6 @@ static int mqprio_init(struct Qdisc *sch, struct nlattr *opt, struct Qdisc *qdisc; int i, err = -EOPNOTSUPP; struct tc_mqprio_qopt *qopt = NULL; - struct nlattr *tb[TCA_MQPRIO_MAX + 1]; - struct nlattr *attr; - int rem; int len; BUILD_BUG_ON(TC_MAX_QUEUE != TC_QOPT_MAX_QUEUE); @@ -166,55 +224,9 @@ static int mqprio_init(struct Qdisc *sch, struct nlattr *opt, len = nla_len(opt) - NLA_ALIGN(sizeof(*qopt)); if (len > 0) { - err = parse_attr(tb, TCA_MQPRIO_MAX, opt, mqprio_policy, - sizeof(*qopt)); - if (err < 0) + err = mqprio_parse_nlattr(sch, qopt, opt); + if (err) return err; - - if (!qopt->hw) - return -EINVAL; - - if (tb[TCA_MQPRIO_MODE]) { - priv->flags |= TC_MQPRIO_F_MODE; - priv->mode = *(u16 *)nla_data(tb[TCA_MQPRIO_MODE]); - } - - if (tb[TCA_MQPRIO_SHAPER]) { - priv->flags |= TC_MQPRIO_F_SHAPER; - priv->shaper = *(u16 *)nla_data(tb[TCA_MQPRIO_SHAPER]); - } - - if (tb[TCA_MQPRIO_MIN_RATE64]) { - if (priv->shaper != TC_MQPRIO_SHAPER_BW_RATE) - return -EINVAL; - i = 0; - nla_for_each_nested(attr, tb[TCA_MQPRIO_MIN_RATE64], - rem) { - if (nla_type(attr) != TCA_MQPRIO_MIN_RATE64) - return -EINVAL; - if (i >= qopt->num_tc) - break; - priv->min_rate[i] = *(u64 *)nla_data(attr); - i++; - } - priv->flags |= TC_MQPRIO_F_MIN_RATE; - } - - if (tb[TCA_MQPRIO_MAX_RATE64]) { - if (priv->shaper != TC_MQPRIO_SHAPER_BW_RATE) - return -EINVAL; - i = 0; - nla_for_each_nested(attr, tb[TCA_MQPRIO_MAX_RATE64], - rem) { - if (nla_type(attr) != TCA_MQPRIO_MAX_RATE64) - return -EINVAL; - if (i >= qopt->num_tc) - break; - priv->max_rate[i] = *(u64 *)nla_data(attr); - i++; - } - priv->flags |= TC_MQPRIO_F_MAX_RATE; - } } /* pre-allocate qdisc, attachment can't fail */ From patchwork Mon Jan 30 17:31:36 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Oltean X-Patchwork-Id: 13121480 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 88B17C636D6 for ; Mon, 30 Jan 2023 17:33:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237877AbjA3Rcr (ORCPT ); Mon, 30 Jan 2023 12:32:47 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48668 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237864AbjA3Rch (ORCPT ); Mon, 30 Jan 2023 12:32:37 -0500 Received: from EUR02-VI1-obe.outbound.protection.outlook.com (mail-vi1eur02on2079.outbound.protection.outlook.com [40.107.241.79]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D7BAB29406 for ; Mon, 30 Jan 2023 09:32:34 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SOLrOEutI5JNJ22OBKsDjMLBiufrf9uuakSFsTUBxGbUyy99wzynVZOLu83gnhJ/JrXEzTaK2rVP62dKi/MtIukf+1L7PJNFaOthyrG3Ocmtwwd2xaqu+uP2oZc9x4rK4m4/wFgSzD7DLs+SnZW6MJEnR52Adbvu/chCJwDqaY/OwWDhB2XgelcvydmkvygXpvcPU1rV0A6ffopxNaqDmVh3AKHAP7EaXK7hivrKefqJ/Jz3wL8iHwGNxlYkH/Nl0eVRPwJ5a+8chLXFVzJOBMHJRfamIzp2ujqJvrjwkIRnW/zauKPDvs562r8BFjyCNbQBsBic5zSW6ksbzAnpdA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=PkwuqXekqJ2iVtdo9HSRdtY6W2nt52O8JEJzoXU4xgg=; b=D5NBCerKm+Aizsx1RUWG16pY0MJaU2Sn+tB2BbMCeetyRJmWflK6aTDbNqoM8UGPGUTpgtUxzR4ie5whIPd/S8c2A+w7CG+g257BL4qz5NXSEmh8fRk5QLrIpH1VBxSHroG8ceVYGP7cNPLM7iGo1oK/iX3UlPHHSojA+kfQypKYBcsy5u9yTBQHbKDufiL7dc1NQHo9bf5j617iZ61Cm7sBqYT4pdYOVpmtrHHAEYNhspSuNnoqYJsuocKU5opZA7QKi0vOhWHpPOI3XmhdFGxNMLy3CkIJWSqQOPyTh4bAk1ZbV8tdstMVi9v3iBVXgSb6LsBJ2A6ksgK4r8uQaw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PkwuqXekqJ2iVtdo9HSRdtY6W2nt52O8JEJzoXU4xgg=; b=cLHJAJix4e7rYe0v8uf0oz1n1MCYzOvQl71Le/s5k91vnjYoqNgvgxx72JEX6dg7dJt5k6JoO3I3PdDZGqZSusEEFBMGYm0uvTSc8Zjvheahoq806ZRMasQnebwIv5G5SuGGhiNIa9lZ+fGeFTRaiq2f7NLyQxOgXsbY4JcnZ+Y= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM0PR04MB5121.eurprd04.prod.outlook.com (2603:10a6:208:c1::16) by AS8PR04MB8547.eurprd04.prod.outlook.com (2603:10a6:20b:422::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6043.36; Mon, 30 Jan 2023 17:32:14 +0000 Received: from AM0PR04MB5121.eurprd04.prod.outlook.com ([fe80::4c1:95d7:30fc:d730]) by AM0PR04MB5121.eurprd04.prod.outlook.com ([fe80::4c1:95d7:30fc:d730%4]) with mapi id 15.20.6043.036; Mon, 30 Jan 2023 17:32:14 +0000 From: Vladimir Oltean To: netdev@vger.kernel.org Cc: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Claudiu Manoil , Vinicius Costa Gomes , Kurt Kanzenbach , Jacob Keller , Jamal Hadi Salim , Cong Wang , Jiri Pirko Subject: [PATCH v4 net-next 06/15] net/sched: mqprio: refactor offloading and unoffloading to dedicated functions Date: Mon, 30 Jan 2023 19:31:36 +0200 Message-Id: <20230130173145.475943-7-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230130173145.475943-1-vladimir.oltean@nxp.com> References: <20230130173145.475943-1-vladimir.oltean@nxp.com> X-ClientProxiedBy: BE1P281CA0186.DEUP281.PROD.OUTLOOK.COM (2603:10a6:b10:8d::10) To AM0PR04MB5121.eurprd04.prod.outlook.com (2603:10a6:208:c1::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM0PR04MB5121:EE_|AS8PR04MB8547:EE_ X-MS-Office365-Filtering-Correlation-Id: 97fb41db-70f9-4d09-5c69-08db02e7ecff X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: bB9go/Kn3CKV2XvdxMddOA0Iu/RH8elqhvUkafSGBcNpVU3O9FiwllFPU8qateHjzbure2isSfBF7t64YXB9+zozFiRroi3nAu+pCEfHCcnw2mzaC+AnzDS3GZZeXUPrediFDSMS3XFqwCHpWQXF9nBdDpYYKZOmH4C40fQpeUhQgXuWVDlupZIC6RDMMqbmnGrXiiZLAApIkUUEA4Md8qfK8bZU36d/fv3nhm6tbQQtfE84n4Fq2cacSBPgrQgKiPIYXFXaQuxRKxSOCNLY+Nqk8mg51nGs5EsoUSkvHoC8ZAqCaVrcaQMfZ+COcwIkoKZJZo5GkplGFq7Q/Ug5WcB2J3NPCWjR0q17EYmxbx0Py4+Nxb9+x8ChtiTyWOpn2VEEOSgS7rFmaUU4p2bjmtgc6RtpBCzbkLBJyuyzROPkO/AXx/4N6lk/EDvONrQgw/m7mKTwFyNc3vfc0fU7yEhZDRK2jAABTJmLON0vECeNeaRslcCMIRMpNdyOhUNANkWOWJ0AiVsIz+S8AekCPQj0KueSu4/enPwTCQQrCH6ZU1poUQ0+Ndk6tzpWc4rhYnoZgWDTqOhe2Q3YRbzCvQIIxldL79SnGZuKcZi3c3UmPy7CVplxT0q6xv70Cm/3DRuOWKQ7KmNPOnu9kmbBnbGbMxx/m3xEjTDs9TVGVRR3NOM3QVSR9ZOCa8k0hss6DS3KUvmjw38z52fiEodh7Q== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM0PR04MB5121.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(4636009)(366004)(346002)(376002)(39860400002)(136003)(396003)(451199018)(44832011)(5660300002)(7416002)(36756003)(38100700002)(38350700002)(2906002)(86362001)(478600001)(52116002)(6486002)(2616005)(6512007)(6506007)(26005)(186003)(54906003)(83380400001)(66476007)(6916009)(66946007)(6666004)(1076003)(4326008)(66556008)(316002)(8676002)(41300700001)(8936002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: fhQI+s1DkBLbLofbcUjgSxNPFJG3dvgmyCWxborYkZBGUCv0qS6tpJ0/XcxTLUgd0CgTjMjz9916/jEVuY2i4TPudTrn68s6577tpJA+NjE/6hznM9xI8m5hD5qYJuP7Zv7fQLlsQ7XqbOH3DPcVOfaWBkMgJ43PW5D6v0cmoExTOyJ61dsmiRuuHm1dwKlmV8QN7Nz6UEeERprdiW6t7k2J6ACtPi9TfbvJJWxH9e6his8ODcQgzmip74D9p3ejtZR20fRh+kGpdQpjTITsmuPv0csEfVmDxOQ0gXYtjMzw+EMAaokUr6jsXr6GlhQUJYiatUQ/Ly/V2zU+McxrMFlxmipKvOTN+0ok1Pl/plw4Ee0HmmuUKe13BgyxUXOScBfoD2PYXgjjOpHGMWbkwam782avHhI52VUqSJxEfp/uO/xOQHO/iB6nnPYS5GXrLWGl/my6UpjGoba4J8T3CRzQe49eXDWILBTkpom3pFRXH6Gm4RCUrZbpTCqKzzjV1EU+Oby9+Jr1jXsBpzVTr21VQDAYmkaFIVAO0kbORkdk4+eDyZbMmSM0INFvmirEnZrAXxN1YYeCwQndGZ5dsUPeUFymczlB+1N5Umj+mLXIc0WiSWSFfbDGVXpFtVcBvOSwVL4Nr3SfZ6prNGlv+rh07sKqfg1QMQHfpMPj6VhUF4KGZePC+8nGxNraECGCSMmMNJdqhdcSG7fcYk5wq3XhnKTwnfT6StT9Is8EzUHlM9msYOwhIJ42lYdL7/f/5N7aU7EVNI7VCBdbTWdCnVnd4ROaFXO3XubmlEk97wQFg+C0aE05ErcF385/t/RUHOHANQFnffW0WQtBUFmOBfYM9B+t/gn6mIGG9werluLowpzeA/ipxZqSX2Y+YKvD/hLiEln3/0d8/XA1gKNj6VPG35/sZnFyTiFNuBUIypsICUiwFVk06arfUNFLjtohXqYz7LRYgdrvWpIoipUEdJcSUhiCzmHD4+51FxFDg4cnRRc6Ptg0Qu3DP0hHIWdYRmpkdnsNBAiVuaxf9+gVDWe1pHOy+VsoFoM8YbYQBsXfNpfUt1zrwerxTCumdHthydBrGsMG3fA1CsFnnYMl4TtIg0DFGA0sZr9U4EhL8mbaNEd5Ra692k0GR4j8BNEM6wBVTMpDepNhB+61faT52HUV/M6+Sfme94dodYM2vaxvJ5NoonNlpdWQl58HqpRnWSrgeHEQS7tEbOxSS+5o4GIhmoJxqyOZkn/1/UxWCA7uviy6rWa/W7En4YHcrV9k9QI6q1NvmL2Q1gWd8kUcyJposrpu3ooDAjXVn9s6Mm2Zt93pprBV5HJRkaT5EVI5UZLdhjHeuLdbVzxR76hUPG4HnIxx0LhwygOkrkTmOCO3h4iGFNEVdMuDueRnTdh2BdF/GOUfzJiQrhRpHNqugjvoUa9f0I5WLDiHPO7PQR0y1BcyVZ87wbopQQKGONhUIJliiIG6YOIlsM43y9u1tREtBF7MZ6f/KU9vqamDTJT91WiPqgVV+15nqtAl+n76uaj4osSTRBpeVjxDcFlgoZdKbZizAfAx4u3EDHFbEHyHMXWiuKv7fJZwJ9lJ1KZ2neKCL+w6GI5bD7eUfPVDmQ== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 97fb41db-70f9-4d09-5c69-08db02e7ecff X-MS-Exchange-CrossTenant-AuthSource: AM0PR04MB5121.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jan 2023 17:32:14.2728 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: GBM7sxpOHQ8XjYnbPt4oMCC5B6/OOH/wIO4MXOrZGUww+CXNSIy8mW1kTtwPFBvBO1nymUaee6rXxZ3jUCJMGA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8547 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org Some more logic will be added to mqprio offloading, so split that code up from mqprio_init(), which is already large, and create a new function, mqprio_enable_offload(), similar to taprio_enable_offload(). Also create the opposite function mqprio_disable_offload(). Signed-off-by: Vladimir Oltean Reviewed-by: Jacob Keller Signed-off-by: Simon Horman Reviewed-by: Simon Horman --- v1->v4: none net/sched/sch_mqprio.c | 102 ++++++++++++++++++++++++----------------- 1 file changed, 59 insertions(+), 43 deletions(-) diff --git a/net/sched/sch_mqprio.c b/net/sched/sch_mqprio.c index d2d8a02ded05..3579a64da06e 100644 --- a/net/sched/sch_mqprio.c +++ b/net/sched/sch_mqprio.c @@ -27,6 +27,61 @@ struct mqprio_sched { u64 max_rate[TC_QOPT_MAX_QUEUE]; }; +static int mqprio_enable_offload(struct Qdisc *sch, + const struct tc_mqprio_qopt *qopt) +{ + struct tc_mqprio_qopt_offload mqprio = {.qopt = *qopt}; + struct mqprio_sched *priv = qdisc_priv(sch); + struct net_device *dev = qdisc_dev(sch); + int err, i; + + switch (priv->mode) { + case TC_MQPRIO_MODE_DCB: + if (priv->shaper != TC_MQPRIO_SHAPER_DCB) + return -EINVAL; + break; + case TC_MQPRIO_MODE_CHANNEL: + mqprio.flags = priv->flags; + if (priv->flags & TC_MQPRIO_F_MODE) + mqprio.mode = priv->mode; + if (priv->flags & TC_MQPRIO_F_SHAPER) + mqprio.shaper = priv->shaper; + if (priv->flags & TC_MQPRIO_F_MIN_RATE) + for (i = 0; i < mqprio.qopt.num_tc; i++) + mqprio.min_rate[i] = priv->min_rate[i]; + if (priv->flags & TC_MQPRIO_F_MAX_RATE) + for (i = 0; i < mqprio.qopt.num_tc; i++) + mqprio.max_rate[i] = priv->max_rate[i]; + break; + default: + return -EINVAL; + } + + err = dev->netdev_ops->ndo_setup_tc(dev, TC_SETUP_QDISC_MQPRIO, + &mqprio); + if (err) + return err; + + priv->hw_offload = mqprio.qopt.hw; + + return 0; +} + +static void mqprio_disable_offload(struct Qdisc *sch) +{ + struct tc_mqprio_qopt_offload mqprio = { { 0 } }; + struct mqprio_sched *priv = qdisc_priv(sch); + struct net_device *dev = qdisc_dev(sch); + + switch (priv->mode) { + case TC_MQPRIO_MODE_DCB: + case TC_MQPRIO_MODE_CHANNEL: + dev->netdev_ops->ndo_setup_tc(dev, TC_SETUP_QDISC_MQPRIO, + &mqprio); + break; + } +} + static void mqprio_destroy(struct Qdisc *sch) { struct net_device *dev = qdisc_dev(sch); @@ -41,22 +96,10 @@ static void mqprio_destroy(struct Qdisc *sch) kfree(priv->qdiscs); } - if (priv->hw_offload && dev->netdev_ops->ndo_setup_tc) { - struct tc_mqprio_qopt_offload mqprio = { { 0 } }; - - switch (priv->mode) { - case TC_MQPRIO_MODE_DCB: - case TC_MQPRIO_MODE_CHANNEL: - dev->netdev_ops->ndo_setup_tc(dev, - TC_SETUP_QDISC_MQPRIO, - &mqprio); - break; - default: - return; - } - } else { + if (priv->hw_offload && dev->netdev_ops->ndo_setup_tc) + mqprio_disable_offload(sch); + else netdev_set_num_tc(dev, 0); - } } static int mqprio_parse_opt(struct net_device *dev, struct tc_mqprio_qopt *qopt) @@ -253,36 +296,9 @@ static int mqprio_init(struct Qdisc *sch, struct nlattr *opt, * supplied and verified mapping */ if (qopt->hw) { - struct tc_mqprio_qopt_offload mqprio = {.qopt = *qopt}; - - switch (priv->mode) { - case TC_MQPRIO_MODE_DCB: - if (priv->shaper != TC_MQPRIO_SHAPER_DCB) - return -EINVAL; - break; - case TC_MQPRIO_MODE_CHANNEL: - mqprio.flags = priv->flags; - if (priv->flags & TC_MQPRIO_F_MODE) - mqprio.mode = priv->mode; - if (priv->flags & TC_MQPRIO_F_SHAPER) - mqprio.shaper = priv->shaper; - if (priv->flags & TC_MQPRIO_F_MIN_RATE) - for (i = 0; i < mqprio.qopt.num_tc; i++) - mqprio.min_rate[i] = priv->min_rate[i]; - if (priv->flags & TC_MQPRIO_F_MAX_RATE) - for (i = 0; i < mqprio.qopt.num_tc; i++) - mqprio.max_rate[i] = priv->max_rate[i]; - break; - default: - return -EINVAL; - } - err = dev->netdev_ops->ndo_setup_tc(dev, - TC_SETUP_QDISC_MQPRIO, - &mqprio); + err = mqprio_enable_offload(sch, qopt); if (err) return err; - - priv->hw_offload = mqprio.qopt.hw; } else { netdev_set_num_tc(dev, qopt->num_tc); for (i = 0; i < qopt->num_tc; i++) From patchwork Mon Jan 30 17:31:37 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Oltean X-Patchwork-Id: 13121483 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 987D1C636D4 for ; Mon, 30 Jan 2023 17:33:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237864AbjA3Rcs (ORCPT ); Mon, 30 Jan 2023 12:32:48 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48666 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237863AbjA3Rch (ORCPT ); Mon, 30 Jan 2023 12:32:37 -0500 Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2084.outbound.protection.outlook.com [40.107.21.84]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DAA3F35270 for ; Mon, 30 Jan 2023 09:32:33 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WD0m+SVcJRgt1sMKWBS08SWz3lBonDmTR2T5oKqH/mw92dZv0hvfPGAnYj8BwZBv/QoWHOOdlYXmOwQc04veMHRKrxrFKD+RDf3EkNPkSh3cnzjw07yz/q6nUienzcJOwNS9enKUamfS2rGw83if1SAeVCLZHIIKDXuB6dnc30aHX1qFYDIMyrrS9ih/lCbNHfmMpRqxsxXbSVSCodgGvFj9rQXNXJuXAakRBe2MkFqsYv81CSllZi3HYs1bk4SFauY13mO+aXRSneX8JepgJwYIuR0NooJU2FkzX4aqMtrE7BlhoerxwHUitEgbSyYJXlnrP85bjbOVfy1XYbVPyQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=g+5N86QH/bzogAMZ0deuCTPKUDEdSApuYZQpiFEdkGo=; b=ZGkQLlUw4GtDapIdgVvZYQFac9NdpZYcY3SVIB4NB20GCoHrSH2UGIdze7VwEkHba58hr5wN4Qw6r3QFCKFQ/3iGQU9pXjaPJfSW1LN2aiHyb8s6LOuCsI9e25mP3vAyO8uNBFzwkOStgOkmozPHgqmbMmU6Jd5IThO2bEKrpgXhR8/qLnqZc8eiSLFFLhf//Gya0/85BmArDq0iROnpS9AOsRIEhTvZu87kLQYt/lCJD7CfIT2z+2ZpdDTooK3vQDKk/Ktc9x/1Lr2G1F1FbkTgfvv3gX9TWVNHP6tLK/hd8t4oTsKmp3VRWTQupLHv+g7sWosVnqSJxK5XBHx6NQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=g+5N86QH/bzogAMZ0deuCTPKUDEdSApuYZQpiFEdkGo=; b=ckonVia2U6WHsQ9u7aEzwezOCmUZkbkRIFn64fpvN/Yzm5QMviDkv2hQoD392RXhJoPoskmQe/E2hamOmMHg4vtsSu8Er0FDqWhVCvSFNWmKcsLJUStCBbh8UBIiwjfR+Wgpk7b/nWlGmNlyIFV7dEFFyDq2boDElGnCBcG8+X0= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM0PR04MB5121.eurprd04.prod.outlook.com (2603:10a6:208:c1::16) by PA4PR04MB7677.eurprd04.prod.outlook.com (2603:10a6:102:eb::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6043.36; Mon, 30 Jan 2023 17:32:17 +0000 Received: from AM0PR04MB5121.eurprd04.prod.outlook.com ([fe80::4c1:95d7:30fc:d730]) by AM0PR04MB5121.eurprd04.prod.outlook.com ([fe80::4c1:95d7:30fc:d730%4]) with mapi id 15.20.6043.036; Mon, 30 Jan 2023 17:32:17 +0000 From: Vladimir Oltean To: netdev@vger.kernel.org Cc: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Claudiu Manoil , Vinicius Costa Gomes , Kurt Kanzenbach , Jacob Keller , Jamal Hadi Salim , Cong Wang , Jiri Pirko , Igor Russkikh , Yisen Zhuang , Salil Mehta , Jesse Brandeburg , Tony Nguyen , Thomas Petazzoni , Saeed Mahameed , Leon Romanovsky , Horatiu Vultur , Lars Povlsen , Steen Hegelund , Daniel Machon , UNGLinuxDriver@microchip.com Subject: [PATCH v4 net-next 07/15] net/sched: move struct tc_mqprio_qopt_offload from pkt_cls.h to pkt_sched.h Date: Mon, 30 Jan 2023 19:31:37 +0200 Message-Id: <20230130173145.475943-8-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230130173145.475943-1-vladimir.oltean@nxp.com> References: <20230130173145.475943-1-vladimir.oltean@nxp.com> X-ClientProxiedBy: BE1P281CA0186.DEUP281.PROD.OUTLOOK.COM (2603:10a6:b10:8d::10) To AM0PR04MB5121.eurprd04.prod.outlook.com (2603:10a6:208:c1::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM0PR04MB5121:EE_|PA4PR04MB7677:EE_ X-MS-Office365-Filtering-Correlation-Id: 1795bec6-22ff-4289-0cf7-08db02e7ee3a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: b4o0woD2QKdQEX+XBac8kSZISChNDYsQYBO0v2b6pE+tM9on3IuoGD/hsmUz4pV1EaR9rsz0o8S2HgeiCl1atd6o0bPSyrxK3T8Hp5RslldUEkIOGvkdOMKM2GSKFbTJa48RqHqxNEEqcH0SXA61pBXPVcy4FyEmbP1JoPGzfU0BClqbv55c3jjktqv2weNA4mv4+niEC1yTe4H4cMbLw5sLuU0lwaETYowjxwDAfqpqv5HKDgbCM44yWBNsFiMl8xRSe4nc8MW1J70OEhLCV1Hl69GyNqwoSigvy54jCup4WWkc6RFhL+dGgD85Dr7qbnWv9w6oDKqk8bGll1ScBflXaCJwxwkvbqJvqQOHo6cL29TB+HX28GyNWN1yBtf2QkF6ovT4VtfvIeKIdNqVBZG8jIJ1c6j5LIDZk+yDmSOlFEE2mMeiWWKokwvCIlR9JQdU423fsM449BjVz2SOvvrArhbzrUTDMWoIGpk3SflCBi4s2QICm9fMwQtavpQI/lP55YMpwbPF59g8CN6C/mgl/ap/ptW2yh/D2z9NYOtowDSxHrzFWCfW4Qb1pls11ClR2awS9OVSC2yE9N1JOHnhgKqZpZzrA48LoVqqlR2dodisRa1vFhnUK/pLPE4zE71f145+8c5yp5QrfOKRhwBHvpx67q7mo4VIWrPYm0QsZ5l2Ykd9b8l4w7tzUWV/ X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM0PR04MB5121.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(4636009)(366004)(136003)(39860400002)(376002)(346002)(396003)(451199018)(2906002)(5660300002)(86362001)(44832011)(7416002)(83380400001)(8936002)(41300700001)(36756003)(478600001)(6486002)(1076003)(26005)(6512007)(6666004)(186003)(52116002)(6506007)(2616005)(54906003)(4326008)(66476007)(38100700002)(66946007)(8676002)(66556008)(6916009)(316002)(38350700002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: XHc9N8UJ3gxAiNyQwbSCXWIJ41iF4et/es5WUSoOzfy7GJkGNMpunipbVdleIXE1bA1igT5t22oRgnj8nnYiMfV077l/t8GA0smWV8n1Ouxh33/ZSVSjNR8inDByG9hXjDD65WsEQCbfWXbLkZYvPxeI7x2oVhnpzsAvsB0aU6EBQOIVUsxCMXZSc11XSLYWtQphCICI259jWmiByN9GKPKr20hvM49/vNCYi6EPwd/W8xzswdYYDc/LdUQxx3+nLdzssS/t2HOLYsL86QBBvnHV+CCySJtivcLIYlJt1/gnA5HDHMqaDHaY8bk5lFYqMxBezuLAMWmoup1I3ePSCl1OY6B8jvmosxQmO29bupUdsbtCjn+iKIWB8iAEtLjsAZ3ummM8xfRCKNY4v5n4zh++UKr1taWc9r8FoiKexQoLc2Or/U7uPW55ZMaeR46elGu9HqeyFQFkxICBXxZmGSkSrOKKcOgpiyIlt/9vAaSYl/IaMpUiPeMkU8UzMWHfR/NPX7udeSixJAWCzdZUz/0HaCKMP0GSK+ZXyx9oH+LBcdeTIfHNBov+bqydXKUpIuqkIfzHyCgHMqeSMG9bchyal6U1sA8F9QYbJ3oXCjQT+/7Y8Sa2QwMfyjDCEddfCVLc3tc/91qriwVm3UPXCiuI8g453liqoQPZBZpTurrr1/JTq1pB2x51PRlIDPPCv8+SAvM9xl3T/PB4L+YH+85uJRRz9V6RT0bmOU0m5hs4UYZSaciNl+Es30mH9b6JZRFbOh3wphnpcp6bcibFQKogbdaSv1bvWqbxuRaCrDZMdDbYofjl1hHfBj6VjEIAbVnxjsslGZrSIzYVjOoLjdE6zjw2X54QbFw0yb3YMM7lHrsfCczoZBuCjgMYv4CHAqdHcA92qhYASUHmT5qZfGP5EFzzyR6nsnhPPskBM8ICZzAF8HBW89Xpb1ulWP4gFCRFRmD3oAMaUeoyBKd60ou8ekjLaj6y3Mx6PEzTn3Q7GzNwb21QrK+bim8szSlupz3WWJJQSHiK0pyEMm8NuKzRQnovgIngxxgLoniK9iM2N54wxD7yPo5Bct5p+1m8vF8Vcfu+MClcena15o08Gx6RSeZDU7eL3hysg02lWccE9GE22pjohlGCa62n13LzQPzOb+4xYT3GGMaR5K7z4UHIIvgvj5+L6fGY+OjiwF1LLnN9Mugfg656AlntZ6pxifKiwCNj4QHS1eBlrscTGXL9qOxziQNVbk8t79ePEmLURlEhX61ZdEHFDbOe2nsnOlFYUe58MJgaAUanZyr1zcT2WFAqRk1Gsntemc11ewS3fyXWS7EYI5U+R7pl0d283hl6kqr31e7hqFjWEMOBmMQirDaDEeQJ5zhOR6zwTfF7y0Ishuy9wAhdJU4Ev4I4BHlBcIe+lidX3W4uD+ju6aN+2O5aBLtai35efFmzoFxuN3PesDc2FEO/PAqZZykVJBJhL9Iz37lEOk3kVo4qw4jFlWAb4ThfFURaJUEgihUqoZ5TqJOLblOJr30hoSc+WLWX22tBxVMYiunCPQpOBuy4oZD99v3Bj2tUVKfPD2Nl8hn5ia0xQ5/P9JT29FRQGxTR3khIQI0l+3xMJ6Fzlw== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1795bec6-22ff-4289-0cf7-08db02e7ee3a X-MS-Exchange-CrossTenant-AuthSource: AM0PR04MB5121.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jan 2023 17:32:17.0539 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: AVZWhOL5ByrpmSyDxRNRVOaiQ7d3sinw3I0LCFB5noYpgnyxSxXzHziOhFHtuyyLBznsy2iO154DYdNDvJly2A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR04MB7677 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org Since mqprio is a scheduler and not a classifier, move its offload structure to pkt_sched.h, where struct tc_taprio_qopt_offload also lies. Also update some header inclusions in drivers that access this structure, to the best of my abilities. Cc: Igor Russkikh Cc: Yisen Zhuang Cc: Salil Mehta Cc: Jesse Brandeburg Cc: Tony Nguyen Cc: Thomas Petazzoni Cc: Saeed Mahameed Cc: Leon Romanovsky Cc: Horatiu Vultur Cc: Lars Povlsen Cc: Steen Hegelund Cc: Daniel Machon Cc: UNGLinuxDriver@microchip.com Signed-off-by: Vladimir Oltean Signed-off-by: Simon Horman Reviewed-by: Simon Horman --- v3->v4: shouldn't have removed "#include " from ti cpsw v2->v3: none v1->v2: - update some header inclusions in drivers - fix typo (said "taprio" instead of "mqprio") drivers/net/ethernet/aquantia/atlantic/aq_main.c | 1 + drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_mqprio.h | 2 +- drivers/net/ethernet/hisilicon/hns3/hnae3.h | 1 + drivers/net/ethernet/hisilicon/hns3/hns3_enet.c | 1 + drivers/net/ethernet/intel/i40e/i40e.h | 1 + drivers/net/ethernet/intel/iavf/iavf.h | 1 + drivers/net/ethernet/intel/ice/ice.h | 1 + drivers/net/ethernet/marvell/mvneta.c | 2 +- drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 1 + drivers/net/ethernet/microchip/lan966x/lan966x_tc.c | 1 + drivers/net/ethernet/microchip/sparx5/sparx5_tc.c | 1 + drivers/net/ethernet/ti/cpsw_priv.c | 1 + include/net/pkt_cls.h | 10 ---------- include/net/pkt_sched.h | 10 ++++++++++ 14 files changed, 22 insertions(+), 12 deletions(-) diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_main.c b/drivers/net/ethernet/aquantia/atlantic/aq_main.c index 77609dc0a08d..0b2a52199914 100644 --- a/drivers/net/ethernet/aquantia/atlantic/aq_main.c +++ b/drivers/net/ethernet/aquantia/atlantic/aq_main.c @@ -21,6 +21,7 @@ #include #include #include +#include #include MODULE_LICENSE("GPL v2"); diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_mqprio.h b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_mqprio.h index be96f1dc0372..d4a862a9fd7d 100644 --- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_mqprio.h +++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_mqprio.h @@ -4,7 +4,7 @@ #ifndef __CXGB4_TC_MQPRIO_H__ #define __CXGB4_TC_MQPRIO_H__ -#include +#include #define CXGB4_EOSW_TXQ_DEFAULT_DESC_NUM 128 diff --git a/drivers/net/ethernet/hisilicon/hns3/hnae3.h b/drivers/net/ethernet/hisilicon/hns3/hnae3.h index 17137de9338c..40f4306449eb 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hnae3.h +++ b/drivers/net/ethernet/hisilicon/hns3/hnae3.h @@ -32,6 +32,7 @@ #include #include #include +#include #define HNAE3_MOD_VERSION "1.0" diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c index b4c4fb873568..25be7f8ac7cd 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c +++ b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include diff --git a/drivers/net/ethernet/intel/i40e/i40e.h b/drivers/net/ethernet/intel/i40e/i40e.h index 60e351665c70..38c341b9f368 100644 --- a/drivers/net/ethernet/intel/i40e/i40e.h +++ b/drivers/net/ethernet/intel/i40e/i40e.h @@ -33,6 +33,7 @@ #include #include #include +#include #include #include #include diff --git a/drivers/net/ethernet/intel/iavf/iavf.h b/drivers/net/ethernet/intel/iavf/iavf.h index 23bc000e77b8..232bc61d9eee 100644 --- a/drivers/net/ethernet/intel/iavf/iavf.h +++ b/drivers/net/ethernet/intel/iavf/iavf.h @@ -30,6 +30,7 @@ #include #include #include +#include #include #include #include diff --git a/drivers/net/ethernet/intel/ice/ice.h b/drivers/net/ethernet/intel/ice/ice.h index ae93ae488bc2..ef6b91abce70 100644 --- a/drivers/net/ethernet/intel/ice/ice.h +++ b/drivers/net/ethernet/intel/ice/ice.h @@ -41,6 +41,7 @@ #include #include #include +#include #include #include #include diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c index f8925cac61e4..a48588c80317 100644 --- a/drivers/net/ethernet/marvell/mvneta.c +++ b/drivers/net/ethernet/marvell/mvneta.c @@ -38,7 +38,7 @@ #include #include #include -#include +#include #include /* Registers */ diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c index 0e87432ec6f1..7de21a1ef009 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c @@ -39,6 +39,7 @@ #include #include #include +#include #include #include "eswitch.h" #include "en.h" diff --git a/drivers/net/ethernet/microchip/lan966x/lan966x_tc.c b/drivers/net/ethernet/microchip/lan966x/lan966x_tc.c index 80625ba0b354..cf0cc7562d04 100644 --- a/drivers/net/ethernet/microchip/lan966x/lan966x_tc.c +++ b/drivers/net/ethernet/microchip/lan966x/lan966x_tc.c @@ -1,6 +1,7 @@ // SPDX-License-Identifier: GPL-2.0+ #include +#include #include "lan966x_main.h" diff --git a/drivers/net/ethernet/microchip/sparx5/sparx5_tc.c b/drivers/net/ethernet/microchip/sparx5/sparx5_tc.c index 205246b5af82..e80f3166db7d 100644 --- a/drivers/net/ethernet/microchip/sparx5/sparx5_tc.c +++ b/drivers/net/ethernet/microchip/sparx5/sparx5_tc.c @@ -5,6 +5,7 @@ */ #include +#include #include "sparx5_tc.h" #include "sparx5_main.h" diff --git a/drivers/net/ethernet/ti/cpsw_priv.c b/drivers/net/ethernet/ti/cpsw_priv.c index 758295c898ac..e966dd47e2db 100644 --- a/drivers/net/ethernet/ti/cpsw_priv.c +++ b/drivers/net/ethernet/ti/cpsw_priv.c @@ -20,6 +20,7 @@ #include #include #include +#include #include "cpsw.h" #include "cpts.h" diff --git a/include/net/pkt_cls.h b/include/net/pkt_cls.h index 4cabb32a2ad9..cd410a87517b 100644 --- a/include/net/pkt_cls.h +++ b/include/net/pkt_cls.h @@ -788,16 +788,6 @@ struct tc_cls_bpf_offload { bool exts_integrated; }; -struct tc_mqprio_qopt_offload { - /* struct tc_mqprio_qopt must always be the first element */ - struct tc_mqprio_qopt qopt; - u16 mode; - u16 shaper; - u32 flags; - u64 min_rate[TC_QOPT_MAX_QUEUE]; - u64 max_rate[TC_QOPT_MAX_QUEUE]; -}; - /* This structure holds cookie structure that is passed from user * to the kernel for actions and classifiers */ diff --git a/include/net/pkt_sched.h b/include/net/pkt_sched.h index 38207873eda6..6c5e64e0a0bb 100644 --- a/include/net/pkt_sched.h +++ b/include/net/pkt_sched.h @@ -160,6 +160,16 @@ struct tc_etf_qopt_offload { s32 queue; }; +struct tc_mqprio_qopt_offload { + /* struct tc_mqprio_qopt must always be the first element */ + struct tc_mqprio_qopt qopt; + u16 mode; + u16 shaper; + u32 flags; + u64 min_rate[TC_QOPT_MAX_QUEUE]; + u64 max_rate[TC_QOPT_MAX_QUEUE]; +}; + struct tc_taprio_caps { bool supports_queue_max_sdu:1; }; From patchwork Mon Jan 30 17:31:38 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Oltean X-Patchwork-Id: 13121481 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B8C08C636D7 for ; Mon, 30 Jan 2023 17:33:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237879AbjA3Rcu (ORCPT ); Mon, 30 Jan 2023 12:32:50 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48692 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237869AbjA3Rcj (ORCPT ); Mon, 30 Jan 2023 12:32:39 -0500 Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2066.outbound.protection.outlook.com [40.107.21.66]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5EAE02BF38 for ; Mon, 30 Jan 2023 09:32:35 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XhbwZETJukvOWeYflSLJ5isA3sprepUe1XFDkl6v7UGsjMlBN8QLqk5iWvSTC7fIit1OTFQkYvibkD3CDUqwsDHnyyhaxSgLnY/AGvEu88wrKDzRl/jpWG5ANs/SSODoChWH4V7mgrXg5KENBG0pqqLrY+VIrNSutnnE8cN5QCEGzVCsgMr6QGs6aZyp6XzBrB5WnBP1UKH6HjpBERdpt5fMpz+63nacx21Po9F+ovCjtEFa2fjetYR3sg9VVUrXYnC3C9sWbFb3C9lz2ClUjEMPkQPVcLTqPCn1k8xxn7g8nA6XPy22ycn/ugtNES964bR7e4JeWrwFZTsxCy6TOA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=yA2Ndn8CVpDG1vC9HQjhsz4xN/HRw1+ZWo8NwfW4HtQ=; b=Bkba98ogZFY1dyp7KU1J/7EXvM9p2u1dfpCN6Mir03WYd69Eu9c17lTRYOOlXccASCyiy1AzN85env4gS0psi/o5WiSyMxzq3+go+X76JvfINOrSDi5xHySJhCyGTVMvqO051jeAVN+Wf1GGwCPKBVPvaXCqH7J4LiVWUYDQYTrkV2hJbDGy8AGyZspjyOPlm61640gHefR4McYdzAfXMMnr8Vbmg8wlwG7EGH6blZWxuymcyqx+4E+W+yKXp+UYxSssJqlTBaxXamiyabcH1NJSsGZ0kJgWMtjrTW+acFNpK5n5PAkZzGZUhWeP/jpjJ4MRBaIpq2GytbvOtPWYHw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=yA2Ndn8CVpDG1vC9HQjhsz4xN/HRw1+ZWo8NwfW4HtQ=; b=Z7Kai0N2QuGVQat02wDXQCUzb2SdA2YavDpwSLGANnZbCsuKFQEB5b8nMpE99A4iBCZlcBkvBHj7498Dt7LQ6zkuykCiqf7I844fj3eWcRdWXQDWcum6Af4QevYyOl9UtvrTwf04R7qiHyRodX08dWN5CiTHd4IBYDDQThBOWIY= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM0PR04MB5121.eurprd04.prod.outlook.com (2603:10a6:208:c1::16) by PA4PR04MB7677.eurprd04.prod.outlook.com (2603:10a6:102:eb::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6043.36; Mon, 30 Jan 2023 17:32:18 +0000 Received: from AM0PR04MB5121.eurprd04.prod.outlook.com ([fe80::4c1:95d7:30fc:d730]) by AM0PR04MB5121.eurprd04.prod.outlook.com ([fe80::4c1:95d7:30fc:d730%4]) with mapi id 15.20.6043.036; Mon, 30 Jan 2023 17:32:18 +0000 From: Vladimir Oltean To: netdev@vger.kernel.org Cc: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Claudiu Manoil , Vinicius Costa Gomes , Kurt Kanzenbach , Jacob Keller , Jamal Hadi Salim , Cong Wang , Jiri Pirko Subject: [PATCH v4 net-next 08/15] net/sched: mqprio: allow offloading drivers to request queue count validation Date: Mon, 30 Jan 2023 19:31:38 +0200 Message-Id: <20230130173145.475943-9-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230130173145.475943-1-vladimir.oltean@nxp.com> References: <20230130173145.475943-1-vladimir.oltean@nxp.com> X-ClientProxiedBy: BE1P281CA0186.DEUP281.PROD.OUTLOOK.COM (2603:10a6:b10:8d::10) To AM0PR04MB5121.eurprd04.prod.outlook.com (2603:10a6:208:c1::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM0PR04MB5121:EE_|PA4PR04MB7677:EE_ X-MS-Office365-Filtering-Correlation-Id: 5b3b512b-b369-4bc7-0d58-08db02e7ef64 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: AAuTapOWwQMmVrd/0EBzSSRxR14dN/itj+9NnNlUg/E8o3CgpHYDEHTg1/NpbjzSUgCI6137kwlJIuVF0wtE5ylJjEBwJAqkUWvZhQsj1Lhu10o+Z7Adz5eZnHZ1wwvVpMy+P4yTVXP50WfdoZNFEv2Y6rOZDM2LpTuw0/zyKrTiCDUWEHQDoboBhjT4tMlwIidvgJdYFn2VLqpazv2q7aZ5GFvxm8Cz4/eUZs+LBn+oZmoIxLVnbbjqmjyxOx2in3E6M0Qz+47Wm4SnqmJMvs4pwHHftbegNbBSmTzf2WJNBE5kL8FBgmodeH3N618aRpXzny6kGYdUIFCvJU82X7l+9oaEPL/lZ60PZGnjb83Q3/dlThEohz4VJble1qqKnnojuJLGNCtDQvrbXossXwI68Fx0iQv1tfvckQrQnmJyLc7PvbzQ8mnl6FsVSK0aFd/DMxzqjpBtpU0VyTSfIqMZ1AZf7NJl6DvmrNJf07RAXZ77CJr92R+chDR+zF4aSrWjrpIV853ZVDHJN70VR8AJ+wP3T3ZotJRL7ZQIIajoV9AZCWe37P31dDKwVMHya42J9ogBz57H3p0IhDfEKBVJMlyhRLEum8TF+T5JNcO1m/Ca9iiszJT9arkmUONOo7sQESl7ZDyOCYdi8oUlBEwWpp8vyQC80fCxT2cRk5XkJXZBzGLfGUs/BxMMdI+G3fD4l/+ma0y5wDxqDypI6Q== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM0PR04MB5121.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(4636009)(366004)(136003)(39860400002)(376002)(346002)(396003)(451199018)(2906002)(5660300002)(86362001)(44832011)(7416002)(83380400001)(8936002)(41300700001)(36756003)(478600001)(6486002)(1076003)(26005)(6512007)(6666004)(186003)(52116002)(6506007)(2616005)(54906003)(4326008)(66476007)(38100700002)(66946007)(8676002)(66556008)(6916009)(316002)(38350700002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: xZjBjvcwVvnVnBm1v3Brw3LL87qz+KPTYSkcnHjL1ov6GgdRELIWYkJO0p9oIRQLdrUtFB1eGJvm18kVxeJlVJrrC9DYjO79UqyL0EpuxSjUpSIkAReG0GfZ67yy3MKrV3t9l8UV5QXCvZG2v6OpMW0brpZy7MbwDy/lyz7dyoP3rVOMwAPXI/HKczg98+bWQe6vXBmVv3pfwtKbzqh2mz7vxocKEd++A69q6tVC1OtxxlVU+9r7D39Hg48MlRoQeAsJQisu/msMZR136oYZsygk6lnGN1+dCGisLghFMyrRYM6RnV7YwSx6QJbWB1zOMvOs/wFVsqWFRGbi+H5Pw5BhW6NM0DLkFWnpEqlXTWuisVaIzRkdVJKaA5riA400GdIpKlREVO/2Fzx50h8aSzBNGmwJtL4S4ZgLC5mXZf+jjVvg5EhXIIXdpxodpm6a/AkMiJE4J642oSjWI17wH6hwzooTT/VBQk3Q3h6ynRF7Lwlm+0wDx8HxtyYhRCxa+WM6T0EO2iZ2vBm50osPg0eQAkK2c4khk97NysP/6uAoHUBL0jBnDZbXnDjACYV95ZlwXnOgj7Yr4DNjZsVJrMTaxLWVZlg0fm+3LGPUDimJGfXi3xHGSlb9+N8CZJtHFTm69kA7XejdFvhzg8i4VLvm9F4k37qERQN4SB4AcdNuoptGm5zbFs/fXR3yLt/TMY02CwETyIPNoFmhjwESuBv7hLIJWEwWny35gbSqs1dPKKUkLbB85GontbuvZwD8bqelZvFGKEQT2DRGA8I7e5MmYl/k76OjDgrvr2tHdzY5O8RC/r72L3o09Hir+LtG4xqQpbpuVFuUEdW3snq+TObedUMKCjBs0gth6KSz8d5iO4qf5dcqcPJx5EH1JqOLbCjiVXo6645u0zmTH2ZlIChgbXUa71CNpWkRQPVcDPBdd+WHdWlSJMOzcL0fwy2di5uxp/eRugnyjn+kqLeN2nRn7uK+BmrE0kN79C/6llIOzhdhVG5KaloyLfY4x1xuAhHwmTLmEGLAbhBMYC/dmqqwPFVxmYXNKKZwwQIp+Xq/cXMiZoKL8ll73vu7NX+UIWX+YWAHWMEtauvbTpBaQxoTawLoQBzcewkNpsyiajMGhov2PKeuNyKRMCKuxBHL+R26AknO1yIvwX6d4h9VWh82d1bHswGtO1owA+Xlbat8Sd48/2fmuY+Q9k3Q/DG1N69QwQ9YlYVKjd51rM4lhFPk7JESdHqpfxeDIjIAVt6GQkElCZHybhIk4Y1LZYjQ7qxgooM0CHIx+9nOH0ZMKRR+qe/ZJzSxN1GNXCfanY1em7a/0GeP/IB0vRKxydZ9PJPoPsV6OvbieHUHgNd32p/48tc853QjBPR9DEW5G+v5UAA4LqDQtW2PjHqbbZ9RykdrvXlHGE+urtpeM+3xr0N/Mle8supQ1S/Hg5pnoJT71Uli4U+wXySSOWHSjWawoJx4DRr9s0j4nDDcQmVWVTuVMlIR9cc52EHZVO6DbUlB00z3I1vMVEpsKnQMVRU/LfzBlcWy2ZN/X3wVfo2DGqK33ivuoeiDj77Ku7xJua6bvRPqdUwA9Kz/imIHQ+r72lafqt6VWX5c1Hmw7d9xfA== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5b3b512b-b369-4bc7-0d58-08db02e7ef64 X-MS-Exchange-CrossTenant-AuthSource: AM0PR04MB5121.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jan 2023 17:32:18.1944 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: cLwoSbaNBALvUmgXwNCfz9lxEx7Sl0eNJp8aPkh5XotKUDQ7gwqGGzYMlzfvvN6EMBfxGzhKqZyS/0964k69mQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR04MB7677 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org mqprio_parse_opt() proudly has a comment: /* If hardware offload is requested we will leave it to the device * to either populate the queue counts itself or to validate the * provided queue counts. */ Unfortunately some device drivers did not get this memo, and don't validate the queue counts. Introduce a tc capability, and make mqprio query it. Signed-off-by: Vladimir Oltean Reviewed-by: Jacob Keller Reviewed-by: Simon Horman --- v1->v4: none include/net/pkt_sched.h | 4 +++ net/sched/sch_mqprio.c | 58 +++++++++++++++++++++++++++-------------- 2 files changed, 42 insertions(+), 20 deletions(-) diff --git a/include/net/pkt_sched.h b/include/net/pkt_sched.h index 6c5e64e0a0bb..02e3ccfbc7d1 100644 --- a/include/net/pkt_sched.h +++ b/include/net/pkt_sched.h @@ -160,6 +160,10 @@ struct tc_etf_qopt_offload { s32 queue; }; +struct tc_mqprio_caps { + bool validate_queue_counts:1; +}; + struct tc_mqprio_qopt_offload { /* struct tc_mqprio_qopt must always be the first element */ struct tc_mqprio_qopt qopt; diff --git a/net/sched/sch_mqprio.c b/net/sched/sch_mqprio.c index 3579a64da06e..5fdceab82ea1 100644 --- a/net/sched/sch_mqprio.c +++ b/net/sched/sch_mqprio.c @@ -27,14 +27,50 @@ struct mqprio_sched { u64 max_rate[TC_QOPT_MAX_QUEUE]; }; +static int mqprio_validate_queue_counts(struct net_device *dev, + const struct tc_mqprio_qopt *qopt) +{ + int i, j; + + for (i = 0; i < qopt->num_tc; i++) { + unsigned int last = qopt->offset[i] + qopt->count[i]; + + /* Verify the queue count is in tx range being equal to the + * real_num_tx_queues indicates the last queue is in use. + */ + if (qopt->offset[i] >= dev->real_num_tx_queues || + !qopt->count[i] || + last > dev->real_num_tx_queues) + return -EINVAL; + + /* Verify that the offset and counts do not overlap */ + for (j = i + 1; j < qopt->num_tc; j++) { + if (last > qopt->offset[j]) + return -EINVAL; + } + } + + return 0; +} + static int mqprio_enable_offload(struct Qdisc *sch, const struct tc_mqprio_qopt *qopt) { struct tc_mqprio_qopt_offload mqprio = {.qopt = *qopt}; struct mqprio_sched *priv = qdisc_priv(sch); struct net_device *dev = qdisc_dev(sch); + struct tc_mqprio_caps caps; int err, i; + qdisc_offload_query_caps(dev, TC_SETUP_QDISC_MQPRIO, + &caps, sizeof(caps)); + + if (caps.validate_queue_counts) { + err = mqprio_validate_queue_counts(dev, qopt); + if (err) + return err; + } + switch (priv->mode) { case TC_MQPRIO_MODE_DCB: if (priv->shaper != TC_MQPRIO_SHAPER_DCB) @@ -104,7 +140,7 @@ static void mqprio_destroy(struct Qdisc *sch) static int mqprio_parse_opt(struct net_device *dev, struct tc_mqprio_qopt *qopt) { - int i, j; + int i; /* Verify num_tc is not out of max range */ if (qopt->num_tc > TC_MAX_QUEUE) @@ -131,25 +167,7 @@ static int mqprio_parse_opt(struct net_device *dev, struct tc_mqprio_qopt *qopt) if (qopt->hw) return dev->netdev_ops->ndo_setup_tc ? 0 : -EINVAL; - for (i = 0; i < qopt->num_tc; i++) { - unsigned int last = qopt->offset[i] + qopt->count[i]; - - /* Verify the queue count is in tx range being equal to the - * real_num_tx_queues indicates the last queue is in use. - */ - if (qopt->offset[i] >= dev->real_num_tx_queues || - !qopt->count[i] || - last > dev->real_num_tx_queues) - return -EINVAL; - - /* Verify that the offset and counts do not overlap */ - for (j = i + 1; j < qopt->num_tc; j++) { - if (last > qopt->offset[j]) - return -EINVAL; - } - } - - return 0; + return mqprio_validate_queue_counts(dev, qopt); } static const struct nla_policy mqprio_policy[TCA_MQPRIO_MAX + 1] = { From patchwork Mon Jan 30 17:31:39 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Oltean X-Patchwork-Id: 13121482 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A8A87C63797 for ; Mon, 30 Jan 2023 17:33:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237881AbjA3Rcu (ORCPT ); Mon, 30 Jan 2023 12:32:50 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48694 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237870AbjA3Rcj (ORCPT ); Mon, 30 Jan 2023 12:32:39 -0500 Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01on2078.outbound.protection.outlook.com [40.107.13.78]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7D60436097 for ; Mon, 30 Jan 2023 09:32:35 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VNuITCaDIXu7aRB1fu8RzCSugbsfa6w7g2fVhDZuuqrZA/uG1yleY677rnPsMNmuBHitov3bS1OpxwrA0xD9ZdfqMPn4jEtLvrM3xQYA24tpb5NynCnDNjhoaR1x/a6XpI0eCQikg3Ap/cZSeKbHIVtgPtvsMrR9JqtnFogAwi2yzxKPD49x6+5HmalPXvk+tSreeTMHBWWYo6GGvC4FjrZiP/Qsf2j9iZ5BU1WyW7svJ8vWRxsSeQ5UIu7vHJtu29VE5yE5u0ZG6ZzI5fVnEA4gDNMinMwytdEd5+UJbUKgH2WFXLdyVNZVXaoWb2hQ3q7YrekLqlUjWfg8CRR7wA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=fSXP153aXCWatm3T/U9oLDAjW5ujBvjqVyz9wCgT8Co=; b=jA66RV1rCDogOy+WLN/wJeEk1KalN8S0k2jxu5kPkmpBXystCrAGGV97Ryv4+ya2e+7TVkwZy/TElbhjuFGT8aok7jBI9KjTbw0HTQ2P6o+3QD3BUzjtv3jScL2fVO23j6Er5tDd3cfgNwNpg0585b+jxxNnEKLQdoMhXIrudyIFHF8stUUNgq0kkuwOlXD2X+DFyvEib7vDRDlDewNjIRjtZpfLCYTfJh/ZegQSaO6cdXyS77/mej/E3Xg/wwfZOCR1u16pY/VQ47z6xU2bw2tIXwF5SJzHsDTbgvg6DL8Jbu707I40ZbDxJBJ7ndCQglIxOD8AvquRORuBZPxy3A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=fSXP153aXCWatm3T/U9oLDAjW5ujBvjqVyz9wCgT8Co=; b=LpV8HLDQ0wemuBPtOg70s5CZRRm7PvFp6tDXubPsa/TRFPwUCqpcUp9DLbp2LwNsIipO+KWyvML6X2hAJxxGOE8Fustk2k/KzjKP82StVd8g65SBWdm9/eW55o5DLWoeFjBJB9kRcihnheawKAJsFHtpQNRATKk0OTrBCOdq6Oc= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM0PR04MB5121.eurprd04.prod.outlook.com (2603:10a6:208:c1::16) by PA4PR04MB7677.eurprd04.prod.outlook.com (2603:10a6:102:eb::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6043.36; Mon, 30 Jan 2023 17:32:19 +0000 Received: from AM0PR04MB5121.eurprd04.prod.outlook.com ([fe80::4c1:95d7:30fc:d730]) by AM0PR04MB5121.eurprd04.prod.outlook.com ([fe80::4c1:95d7:30fc:d730%4]) with mapi id 15.20.6043.036; Mon, 30 Jan 2023 17:32:19 +0000 From: Vladimir Oltean To: netdev@vger.kernel.org Cc: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Claudiu Manoil , Vinicius Costa Gomes , Kurt Kanzenbach , Jacob Keller , Jamal Hadi Salim , Cong Wang , Jiri Pirko Subject: [PATCH v4 net-next 09/15] net/sched: mqprio: add extack messages for queue count validation Date: Mon, 30 Jan 2023 19:31:39 +0200 Message-Id: <20230130173145.475943-10-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230130173145.475943-1-vladimir.oltean@nxp.com> References: <20230130173145.475943-1-vladimir.oltean@nxp.com> X-ClientProxiedBy: BE1P281CA0186.DEUP281.PROD.OUTLOOK.COM (2603:10a6:b10:8d::10) To AM0PR04MB5121.eurprd04.prod.outlook.com (2603:10a6:208:c1::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM0PR04MB5121:EE_|PA4PR04MB7677:EE_ X-MS-Office365-Filtering-Correlation-Id: ea10ad15-d730-487d-034d-08db02e7efff X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 0V47nG2HuPGxbrfoKv6FwdzM375WNcaKoW+R6aCTUnpcYOUImMJjbFgisUqW+kejduKRHSrf4K38XOraLyNo9/WXSILT+tQwN9iecsvmhIUIvZAXHbO3Hi0dDUeRKb79ZeA1EU2MHcZ6cm8VbVGQhNx5mLI65OfqSGFNVow4sUXxHlkNPmLcdLZ7spMLZNosMC7reBXDFIQFa7/y/f8WgiPDdbrp8dPZ4ceFbYdLoj5ZQ4dzkfXvX3tgPKheeUhwxrFgsaS7IBVdnTSlHOuLfML+ofYXfQZBl8nnODhT/8jBBBecChXoLZ5y0CXH+CkGuqy+PP12sd+BgUIOTbnLdQre54oH98qkw/1KSLzicEEk7+DK9MrQv9DsRYCU0WKyuXYcePXK7v8/fkDLYE97c2hzw1Ihpu3P/dbeGAaRIxr8SFpXanyScHHqk0QLbtXMCGhxeewD460FXFGupbxOA4oPVS0aMazapVk5gtvGeT3dlikIxZFfiwGipRzJ1eERyLNV8K+x79VjoyZE2LCOLiHmki3eHDenBhdVjjQ+h448iYjf7RwptwpHOTvWB+2jNgQze36d8nBHImJtHz+Pz6FpfTgN7T6aAnNZQEGHE3VIojuc7nslDK6WVa3c1/8wBJV1Cs57E5cE3iCiAbnhyUvUQ3Y5JPS5KqQRPSqxUznIBqYLiEN2dALCDkMmfbsgcUXKHv6w3wO8CowdXiSYHQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM0PR04MB5121.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(4636009)(366004)(136003)(39860400002)(376002)(346002)(396003)(451199018)(2906002)(15650500001)(5660300002)(86362001)(44832011)(7416002)(83380400001)(8936002)(41300700001)(36756003)(478600001)(6486002)(1076003)(26005)(6512007)(6666004)(186003)(52116002)(6506007)(2616005)(54906003)(4326008)(66476007)(38100700002)(66946007)(8676002)(66556008)(6916009)(316002)(38350700002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: M8ubAPPGPvp/CcNZHMlc+aloEWGLkfu6ZDJ81aouHL10TQSJuxLIa8tcPmvUa8xFDFPvIGTWQEdYzVa2JOFcpro8IYpWN56U05SQPdF9VVonYCIG4chQIlg9+Tm662yjAsxGwEIWG4uYIRU52VexTiGThXkeLk5WI/YOzftoftk/GLF+dUvgUds3SnPkH/sX2fEG2J299YmvckWETwvpEe2QaERUf3p29Mhsflg69z+Wyj6Cr+v1oD1xXOptuCwr88vrSbcKn5Y2O06gXZG259kP4CpxdRlGUQlf9b9JhYA2VfnqvxwVDemLPdfmaT4D8nOvuNvPxJGf/kLssb7TWswMIxs+6HvzU6nGULaDvjIxYL/FhyTsykYLACt+pi2V1+nTxtlPqtnuqcCu5+3VczLr50Zcl0u51FnvlmmRfkjM8dhJAt1Hr9vs1pc6KVsq00i/fsmXKi3+PB2jMtENTUhz9MmN0mFfr2G4jj0RR0tdbNgUBE8NM1iDAdEOw9C2zSeE91cczTbobyEiv1f4plJOTk4UPg4mg9wySPEcT/B42x1Ixxr6EKXfOFCHQ09UU/IalOcEZfw/48it3CLRNaQvxslI//9V6zRh7lu+lpLqz92I8i4Zw7T0k+UgZO1zHtE6Vm69ewkVgb9unonhJri4WTlJh3EqzJJ2EZy3KSfZHpiPvFdw/yySqaU9xDkjIWWx/RHvRbjfxiFWnvFvHNVnqv9+tXyNYhcLo41q9LaJq3sRpCrPsIUP+QEnyZnpmG0PXGaREYGgwxPrHIIoLYcLYoPZADwY1RX+1mQGGsay3FGlsm7PDJYsvwclfNmaRPCmrMSIdYrMYBfLqeCwu5kPKMvW7GJ7Er38xH5ypwCZ6kiX5O92aDJHcPg1ETsKHF/h5aQ61LeQSENdXiPRSUzeT+0MDvL/7hysA9h/Ps3stCrHUrJAceS71ugO1uXqQomXLAVjSq0kOjVRvpntD6GlptYcZMD0fQ4nEbEG8Xj3jFhhs3TjKJhaX1SBXFt6VHLJSzwnRy9LEILo+59j1A2Nz87OniAZaRoHwjdEZ6QW8cwd4h6xD+iSU/JID6frpSCt5TkRMvf2/++qh0nYo5AUXsqnjYjBOfysgHraqrLBgnSHZbx6nsmMs183dqGL0h86n3RmnK1Dd5GaP6vnCzKKrdhNClySpbGn4bdgUQmjGBltSlsJS74KHh0JYPCQWBqtD1UD0wMtnBS0WfImWLmc1Yj/RXNIpAu8MblrMULBG7weSGza1b3R+3MmucftbJUIOq+sEycBsp6ZqfofVc0TVeeyo2HLbky4lcpxRs9M5dpZJZeIQxnuq86LQE/4maUQu6u+M34s8JskCjKrYGLkjhoqI4nq49SFilMIQnEqexyhj0IKjy8b2toi27+iNl2Re6jJRUewW4U4InFqcioBjXan3sMQucb09uT/E5sZCQzPWVWzMfzY/YWJRPSu8r7P1onQMfIW84UEC6Lv1YxMFhytbrcNtnQU2ZFVdjQOT+/Dm/loiPGuFRuyzEuHy4J3JUd855H4jsjRUPqaSTNqTRtd9ODQc7CBGfnWBKKRhT7LozDid+avn/N8LtirUQsRd46JnFAhOX4IOH5jeQ== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: ea10ad15-d730-487d-034d-08db02e7efff X-MS-Exchange-CrossTenant-AuthSource: AM0PR04MB5121.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jan 2023 17:32:19.2100 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: krod6hAbmXaypFkH4WtEdi8VQX94nlOc14ZZA/r3zCIdl77V0GK5mlBEqOSPGVObb0bFAY9BEXSd3jVTv2V2xQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR04MB7677 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org To make mqprio more user-friendly, create netlink extended ack messages which say exactly what is wrong about the queue counts. This uses the new support for printf-formatted extack messages. Example: $ tc qdisc add dev eno0 root handle 1: mqprio num_tc 8 \ map 0 1 2 3 4 5 6 7 queues 3@0 1@1 1@2 1@3 1@4 1@5 1@6 1@7 hw 1 Error: sch_mqprio: Queues 1:1 for TC 1 overlap with last TX queue 3 for TC 0. Signed-off-by: Vladimir Oltean Reviewed-by: Jacob Keller Reviewed-by: Simon Horman --- v1->v4: none net/sched/sch_mqprio.c | 40 ++++++++++++++++++++++++++++++---------- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/net/sched/sch_mqprio.c b/net/sched/sch_mqprio.c index 5fdceab82ea1..4cd6d47cc7a1 100644 --- a/net/sched/sch_mqprio.c +++ b/net/sched/sch_mqprio.c @@ -28,25 +28,42 @@ struct mqprio_sched { }; static int mqprio_validate_queue_counts(struct net_device *dev, - const struct tc_mqprio_qopt *qopt) + const struct tc_mqprio_qopt *qopt, + struct netlink_ext_ack *extack) { int i, j; for (i = 0; i < qopt->num_tc; i++) { unsigned int last = qopt->offset[i] + qopt->count[i]; + if (!qopt->count[i]) { + NL_SET_ERR_MSG_FMT_MOD(extack, "No queues for TC %d", + i); + return -EINVAL; + } + /* Verify the queue count is in tx range being equal to the * real_num_tx_queues indicates the last queue is in use. */ if (qopt->offset[i] >= dev->real_num_tx_queues || - !qopt->count[i] || - last > dev->real_num_tx_queues) + last > dev->real_num_tx_queues) { + NL_SET_ERR_MSG_FMT_MOD(extack, + "Queues %d:%d for TC %d exceed the %d TX queues available", + qopt->count[i], qopt->offset[i], + i, dev->real_num_tx_queues); return -EINVAL; + } /* Verify that the offset and counts do not overlap */ for (j = i + 1; j < qopt->num_tc; j++) { - if (last > qopt->offset[j]) + if (last > qopt->offset[j]) { + NL_SET_ERR_MSG_FMT_MOD(extack, + "Queues %d:%d for TC %d overlap with last TX queue %d for TC %d", + qopt->count[j], + qopt->offset[j], + j, last, i); return -EINVAL; + } } } @@ -54,7 +71,8 @@ static int mqprio_validate_queue_counts(struct net_device *dev, } static int mqprio_enable_offload(struct Qdisc *sch, - const struct tc_mqprio_qopt *qopt) + const struct tc_mqprio_qopt *qopt, + struct netlink_ext_ack *extack) { struct tc_mqprio_qopt_offload mqprio = {.qopt = *qopt}; struct mqprio_sched *priv = qdisc_priv(sch); @@ -66,7 +84,7 @@ static int mqprio_enable_offload(struct Qdisc *sch, &caps, sizeof(caps)); if (caps.validate_queue_counts) { - err = mqprio_validate_queue_counts(dev, qopt); + err = mqprio_validate_queue_counts(dev, qopt, extack); if (err) return err; } @@ -138,7 +156,9 @@ static void mqprio_destroy(struct Qdisc *sch) netdev_set_num_tc(dev, 0); } -static int mqprio_parse_opt(struct net_device *dev, struct tc_mqprio_qopt *qopt) +static int mqprio_parse_opt(struct net_device *dev, + struct tc_mqprio_qopt *qopt, + struct netlink_ext_ack *extack) { int i; @@ -167,7 +187,7 @@ static int mqprio_parse_opt(struct net_device *dev, struct tc_mqprio_qopt *qopt) if (qopt->hw) return dev->netdev_ops->ndo_setup_tc ? 0 : -EINVAL; - return mqprio_validate_queue_counts(dev, qopt); + return mqprio_validate_queue_counts(dev, qopt, extack); } static const struct nla_policy mqprio_policy[TCA_MQPRIO_MAX + 1] = { @@ -280,7 +300,7 @@ static int mqprio_init(struct Qdisc *sch, struct nlattr *opt, return -EINVAL; qopt = nla_data(opt); - if (mqprio_parse_opt(dev, qopt)) + if (mqprio_parse_opt(dev, qopt, extack)) return -EINVAL; len = nla_len(opt) - NLA_ALIGN(sizeof(*qopt)); @@ -314,7 +334,7 @@ static int mqprio_init(struct Qdisc *sch, struct nlattr *opt, * supplied and verified mapping */ if (qopt->hw) { - err = mqprio_enable_offload(sch, qopt); + err = mqprio_enable_offload(sch, qopt, extack); if (err) return err; } else { From patchwork Mon Jan 30 17:31:40 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Oltean X-Patchwork-Id: 13121494 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7CEE0C54EED for ; Mon, 30 Jan 2023 17:33:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230422AbjA3RdO (ORCPT ); Mon, 30 Jan 2023 12:33:14 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48746 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237589AbjA3Rcn (ORCPT ); Mon, 30 Jan 2023 12:32:43 -0500 Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2084.outbound.protection.outlook.com [40.107.21.84]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 067572BF0E for ; Mon, 30 Jan 2023 09:32:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NAEr+FZNILIhqhT6ZbE+t4kRNHoM4O+nG+HbE5YTZBcKcNWcRS4YCQN7JTMHw0tZYvHtHY7sZ9a7EEK6pLCOCdaz/KuIPRC8FfLc7CQAL1gkHINVrb76cnsnx4A2wq7pmsJNd/53fONeDOx1n2wXkHkHFh6LdKcb+FgjWO3fGu+HFKg9oUVSZ6h28yVcllO+TIhYGgEET5IUTV/wY1GTTGlSreFVAybp9jB3bFRYO599bue8K219QYpTBP6TRTllhvH57Ccy66pkgwQp0nje4fXvkLKU0H3oh2LyGnazz4YzpboJHYrU0xbyOoDV6cx1BJjg/LnpPpZRH84znB9z0g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=SX5/bImZheHFofFZL94rLFTtD5qeX4foATfdv9EsHUk=; b=bmX/ycDLAYvR6APdKyq5Q5bXdssTHKkLfG1UC7SP6ML+U70BJQ1zKZme4JUTxYkIyVT9adOhMM2Skendltfd/nrr+eAird1+qHbQn9jR0QiYoG//8iFhLd6Jpo8vHDflEldK2nmXEK2gFkE/yuGxr6EgdT9eC+/MbCR3+Rfst4LIH3raoeuXE3Le1Vt/PzKPj5W6FSx7KxfhLPc5vMK+ZeJzbzx6oMwQe3ayQy0bx+I134WyJ+CNZ3IHSe06FZD4ocq7DcXLiMX0TbRaj+rawW7Nk1S8e05sejvMqSpjD+WdGknFRfFmAsNGajAOKV/NHPPdThYK7yc5/NfUHN68nQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=SX5/bImZheHFofFZL94rLFTtD5qeX4foATfdv9EsHUk=; b=bfvnhXp7tC2Fqlc21dFYPpBERhbYRQALScuwT3i9nRezgNKf9FMyCt7SBdGIK0NfqJvqlcsU7iAPbucmNo60s/aXgiLOg9Wm+uX8EpG9HaWJQX/xyIGtVVPfSYsnBPS7lniagHcp8Hts4ch/thcgo+2QDjPpbSOz9B4FirwB314= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM0PR04MB5121.eurprd04.prod.outlook.com (2603:10a6:208:c1::16) by PA4PR04MB7677.eurprd04.prod.outlook.com (2603:10a6:102:eb::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6043.36; Mon, 30 Jan 2023 17:32:20 +0000 Received: from AM0PR04MB5121.eurprd04.prod.outlook.com ([fe80::4c1:95d7:30fc:d730]) by AM0PR04MB5121.eurprd04.prod.outlook.com ([fe80::4c1:95d7:30fc:d730%4]) with mapi id 15.20.6043.036; Mon, 30 Jan 2023 17:32:20 +0000 From: Vladimir Oltean To: netdev@vger.kernel.org Cc: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Claudiu Manoil , Vinicius Costa Gomes , Kurt Kanzenbach , Jacob Keller , Jamal Hadi Salim , Cong Wang , Jiri Pirko Subject: [PATCH v4 net-next 10/15] net: enetc: request mqprio to validate the queue counts Date: Mon, 30 Jan 2023 19:31:40 +0200 Message-Id: <20230130173145.475943-11-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230130173145.475943-1-vladimir.oltean@nxp.com> References: <20230130173145.475943-1-vladimir.oltean@nxp.com> X-ClientProxiedBy: BE1P281CA0186.DEUP281.PROD.OUTLOOK.COM (2603:10a6:b10:8d::10) To AM0PR04MB5121.eurprd04.prod.outlook.com (2603:10a6:208:c1::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM0PR04MB5121:EE_|PA4PR04MB7677:EE_ X-MS-Office365-Filtering-Correlation-Id: 758b8449-1697-47a6-827e-08db02e7f0a3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: wAmLmmkZMQwKwdNcawzK+WtvOz0KKN0ncUeUkCEq6RsveeW2hZ+z43b6u8vhWt6+HI8+43F+4hpsd+q+GIQYpetqT/ipCfJ0ujaWOBwUouJyW6NKPXtKMCil5ueuE71+fh03DaNzTXL395YHymAPunwsuaWMNez/5iUE0Un/oXFWcK3BiJ7IpcfZogkCkNumhF4tBAPDpYR2mGRvzSLhSglO23aC9jY5W7PABeij7/jveXZy757EqFcDhJPpK2igDH5Wd0Wl53bZKSC8KnIfBwcZ7oRSibwkCWI1gfHDGghJyhBMhGh98dBoKjqhbsmtxLNCaqa5FgxEA2/873IfBUB6pg9SKH2kD/5MxHQmWHXt2ASv5M+vYxoofEsRd+ABgctnZfS5fxaKzlvvRoIDMxjLWs3OHOpakp+UuTnSDvv5fUDdAS/fL3a3RgMBGAS7qEAn2BxUvLK8CASAIyRpD97VUC2ZbLFCJOlt+/kwJJVHVhQjL5hwi2/y3UBc7JZu6uF8bajGdZgXwAactKUUhZLBnxnI7eT3X3KGvKl8cTNWpU9y/RT/dIyIU++ArX8Dw0JZjZfWp+elUAAJx+3WfkARtympdMuKQuEaS70pFIh5iWrJjNTrn8KOeIMrnDYD3SIBKjyvta3rPa3p4RNJsSmRgNSkEuQFsIGP9mkN561ewx5wEomRhEUDaK/a6xOW5OCuRQjszB+S/Sz6HebOPQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM0PR04MB5121.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(4636009)(366004)(136003)(39860400002)(376002)(346002)(396003)(451199018)(2906002)(15650500001)(5660300002)(86362001)(44832011)(7416002)(83380400001)(8936002)(41300700001)(36756003)(478600001)(6486002)(1076003)(26005)(6512007)(6666004)(186003)(52116002)(6506007)(2616005)(54906003)(4326008)(66476007)(38100700002)(66946007)(8676002)(66556008)(6916009)(316002)(38350700002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: l9U70SYCsVypDsT6mnfvUJ3tvEa4bBW11R/fe67UTgBoppYcWAKF9b9w1IrSBjS0nAFTyCueuWkbpPdaCGFLlon5AoMmvpQ7SLtYE+nGFfji64dFlsqg6pSUrQqXmA+oGRm3y1GoKKZzP8w1u7V3CS8Eb1SM2b3Y64dHLAi67DEnx16YU2a2+7uWxXeVzV8YE+wCCUDkdNEu1BBQxzMBQ8WGlWlL5bRJhzX4C3/jM5e0G2XTsua/y5VNJORhPAHyMXMfyP/ZIB34Yr+UntFL+DuFT8P0KyOsZc3F4NQdhCL/bU3+yO4WOEfWq+K30eI1eqjC6Cc8F8XlhjIOQu3/4MnbrNl8FIJKZXy8oERRTCVq6OmxPdvYcyw+5K9jwhHEcM4YSuIDKux8gaDpXDdfaRy7Onj9YE/2JNLClXNXm5zPXJT+LXlos9awQisHaiDspNqOtI31P6HyqDGkzTd8sUjGa81IeeShBTYAeJ3OA2SxRODWUheaTo2ubczw++RRH9nfG8IItt2nKvdX9JnHrtGaSgO9nql3CRby1gwEHdnz5Yj89dHiWJnEQZDzODObPpWps1XtctZLm+pacNzxLHP5ssKd8IugD0X6V8b2Ov99n4/n42F4jl0FFnd7c6tGAuiVyHqTJ3lQkBfpMaaPV4ssqntLgK3Lq7HV+/5HBJ55eIUP799ePNWUhGDgxLSrh1bKqlt5LsKUVt6998vm9mxtNg6jq3wsiu/dWwnX9rYc/tgGfZif17rFklLqp4P8guyzYXQJL0Xz03Piz3P2OHW8wNTXU0QdJQcy/ulfFdH5UBXxb6LstGyep/AHP0/HJ4zBk9BpcSWpvRlDVDTgidUC29K2Hl6KOZFkKlfto7iPOS0rFOgLTSdbxJuM2dwHHQku0Fgpruf5E7GEjOyaxqU6G1aMsC6wRH7ZX0xc/chu/WqKwqBpOJROJJuqFaF3FtS1K+Vr/Xxbn+bhxMT94BSTnW5OhRhkKX2mgcQzDpzUa6XopQg8WLu/w5LnfB4Rp/DeT2K6TCH0O+Wnas+3UgKhvoUApEW1pTkp6Y5YP1ZnvV7tWsbKsO6J+Kvt6AMUaRUtVHWiMNHwMGzk9jFA8PyknU4qLmxXFWKWXSuEGBQeeqBW0yKbofdG0FPZxjDldWed3/9pTEHNgOZqozGG1DfzGx1OBY5SGs27IuJ3mkFc5KLsDWbufkbWmP/slYXdER9hgtA3XXPbw67R/YQXjCfOufkDCEcGJW7wYoSM8M1E2QjhJhOn+aGsMzxXSdbu4joP57JkeBLSvqv2VktZHCdlK1RJtqOC3muJ8UaCiTmSbiXHlVDknkYZBR6fPWOJ2+hiakmzkR5mtUBpg/DQw4fWyOzutM6u9IQ3Bx+rMVGdofpBz+CMakPMis9fz1FkEYvnESVv6QSL8M6yQVmxBTQ+EnFVvQgkvjMyp2dlHVLZMi/MyglHXKF5S4QAqOdf3Q9xTnXFGjQQN1viYAoOv52R3mdMYbwx/G7BPUgVUSIDlh+jLHnMC1H9M7arhUwcLhWC4owtDYVBUVFfuPQA2p2/t7ynmNKg+Iuvx2SvTG1a4wIL0y/hgM/bdDZfi8sSLOJ00YdIM1qdC/mcouka2w== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 758b8449-1697-47a6-827e-08db02e7f0a3 X-MS-Exchange-CrossTenant-AuthSource: AM0PR04MB5121.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jan 2023 17:32:20.6317 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: cRhhzqUG7elgmL2k9rMdnzlSn9KU/fU1HfLUz9DuRyFIuRAszWILtO4zxLi26h5g7urRNkwFlhX0qSux5qbUbQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR04MB7677 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org The enetc driver does not validate the mqprio queue configuration, so it currently allows things like this: $ tc qdisc add dev swp0 root handle 1: mqprio num_tc 8 \ map 0 1 2 3 4 5 6 7 queues 3@0 1@1 1@2 1@3 1@4 1@5 1@6 1@7 hw 1 By requesting validation via the mqprio capability structure, this is no longer allowed, and needs no custom code in the driver. The check that num_tc <= real_num_tx_queues also becomes superfluous and can be dropped, because mqprio_validate_queue_counts() validates that no TXQ range exceeds real_num_tx_queues. That is a stronger check, because there is at least 1 TXQ per TC, so there are at least as many TXQs as TCs. Signed-off-by: Vladimir Oltean Reviewed-by: Jacob Keller Reviewed-by: Simon Horman --- v2->v4: none v1->v2: move the deletion of the num_tc check to this patch, and add an explanation for it drivers/net/ethernet/freescale/enetc/enetc.c | 7 ------- drivers/net/ethernet/freescale/enetc/enetc_qos.c | 7 +++++++ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/net/ethernet/freescale/enetc/enetc.c b/drivers/net/ethernet/freescale/enetc/enetc.c index 1c0aeaa13cde..e4718b50cf31 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc.c +++ b/drivers/net/ethernet/freescale/enetc/enetc.c @@ -2638,13 +2638,6 @@ int enetc_setup_tc_mqprio(struct net_device *ndev, void *type_data) return 0; } - /* Check if we have enough BD rings available to accommodate all TCs */ - if (num_tc > num_stack_tx_queues) { - netdev_err(ndev, "Max %d traffic classes supported\n", - priv->num_tx_rings); - return -EINVAL; - } - /* For the moment, we use only one BD ring per TC. * * Configure num_tc BD rings with increasing priorities. diff --git a/drivers/net/ethernet/freescale/enetc/enetc_qos.c b/drivers/net/ethernet/freescale/enetc/enetc_qos.c index fcebb54224c0..6e0b4dd91509 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_qos.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_qos.c @@ -1611,6 +1611,13 @@ int enetc_qos_query_caps(struct net_device *ndev, void *type_data) struct enetc_si *si = priv->si; switch (base->type) { + case TC_SETUP_QDISC_MQPRIO: { + struct tc_mqprio_caps *caps = base->caps; + + caps->validate_queue_counts = true; + + return 0; + } case TC_SETUP_QDISC_TAPRIO: { struct tc_taprio_caps *caps = base->caps; From patchwork Mon Jan 30 17:31:41 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Oltean X-Patchwork-Id: 13121495 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A0791C61D97 for ; Mon, 30 Jan 2023 17:33:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236037AbjA3RdP (ORCPT ); Mon, 30 Jan 2023 12:33:15 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48774 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237741AbjA3Rco (ORCPT ); Mon, 30 Jan 2023 12:32:44 -0500 Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01on2078.outbound.protection.outlook.com [40.107.13.78]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 11DE829E34 for ; Mon, 30 Jan 2023 09:32:40 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HFxRWO6Lt9JZzTZDsjyYqUHiqjXqVsL9vFwsGCMOk8Y9nC8LDtLvQPoQsfUrOeawl5WKvZAACgyVFFaCxDRh1cqyqGB/XvpFrhnVdlmyhDY5z3fVdsChTTLpDWg901FnyXMFm9zLSoshyiLWC5vs0RrwYRWLU9GB+aa+E9Si/4nswMg2Eu6+gjyABIz7Hm78s3sdpL45v1csRsYDGnRjN6Y2BOrqTzcFzF/xnN05Ia5p8xDTfQh0VWxmOJabxMjoS2k/zOSCvFXxk4zQbAZmYkJk5XVkBFaY8VRtlXhoo0w/CATaVWQ+GRAJdEBoOoQi67NOoPxDZCu2kI8g/1mN/w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=olxEsEjPtAV1qppfnXaXVtQJ3xGOXdT0V68Q+WV/YZ8=; b=apjuqbCyjreLnbxQG8bxaCxFYemyFBdPxuVkWql0VkuOssSuVcToyrGifZ/MVG6x01Q5j4GKnNnzF3OwYj17tI0V2Ajm5RgjkcMyVdzvSSQa9Eqk1AZL2FlkH4tembLozhZYOxf13aJiVy2U6lAPpTy14cXZc0yhe0fPvR3wWSUgMwtEOp2xShfVbNqikRMWMaEdQUHxaukJun8Yk+Xf2p9LUB8ZnNOP31UpVrWUCJgbKBUvugWdFBcFukDI+jSG3dCifhL0ioKyl0S6sNrjnDm9n7yGVj4tdhmPGgpSNtsfxZZk4WsTac8ARGVBf8Jj548qdPZTC2KFgU9RNlQxOA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=olxEsEjPtAV1qppfnXaXVtQJ3xGOXdT0V68Q+WV/YZ8=; b=iVxgrEDGpz2AQx30mJBiJCOAye68GddFk05FpMTU7SIlzf03CO/PqO0YbWbRzxNBD4Ie/6SeTdO2L0Zm96y2rwH24ZZbTQIkIB4gEFrQ/OQietEUDC6bEN8rKrNV3B3cZGXmgnM4tt/4co+W4NaNuu8Az5YqeC8izuwTKIpBNmM= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM0PR04MB5121.eurprd04.prod.outlook.com (2603:10a6:208:c1::16) by PA4PR04MB7677.eurprd04.prod.outlook.com (2603:10a6:102:eb::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6043.36; Mon, 30 Jan 2023 17:32:21 +0000 Received: from AM0PR04MB5121.eurprd04.prod.outlook.com ([fe80::4c1:95d7:30fc:d730]) by AM0PR04MB5121.eurprd04.prod.outlook.com ([fe80::4c1:95d7:30fc:d730%4]) with mapi id 15.20.6043.036; Mon, 30 Jan 2023 17:32:21 +0000 From: Vladimir Oltean To: netdev@vger.kernel.org Cc: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Claudiu Manoil , Vinicius Costa Gomes , Kurt Kanzenbach , Jacob Keller , Jamal Hadi Salim , Cong Wang , Jiri Pirko Subject: [PATCH v4 net-next 11/15] net: enetc: act upon the requested mqprio queue configuration Date: Mon, 30 Jan 2023 19:31:41 +0200 Message-Id: <20230130173145.475943-12-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230130173145.475943-1-vladimir.oltean@nxp.com> References: <20230130173145.475943-1-vladimir.oltean@nxp.com> X-ClientProxiedBy: BE1P281CA0186.DEUP281.PROD.OUTLOOK.COM (2603:10a6:b10:8d::10) To AM0PR04MB5121.eurprd04.prod.outlook.com (2603:10a6:208:c1::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM0PR04MB5121:EE_|PA4PR04MB7677:EE_ X-MS-Office365-Filtering-Correlation-Id: 23468be2-167a-4647-afc4-08db02e7f177 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 4Xqec8rSe4ESPtPMTengdnJUYN2kmjmqs/J0IpbkFFqpMhqLbFsw1c3HbrBROikp/WedTI8du60EMjSR6I791pqChIgxswjLIf0PwRVJ1YxAd+Og83xpCa+hoEVuNswmrs1OmLNgfYKtY0+XRPBTuaVdvZbEl9+PVeBmox5TvW8O/4E+yUbxf8YRfgRoDfx/UlXy5vVsAaAwLO1/JAlTA7rkVRyB54admbGg5r2Ih+ROOTllCCfLptDEb98MRqKzSuTTQc9Yfu8tgmoMkdzxacpwBvFaCwGz1B4I2CekkrR3C2FIzOwC9Mec0ASimhYK3l2frwd3ODAAIjuStojEHTZwppIGgxzk1QbccnIsGPuryC7PADq3teWxGiwjx+j+SYahe14TI4bBbm8u7S3bfBM4rxsj81qT8ideLuL2P9osVzz5ZgLFkjwS+9UjevFrvN0TbVFQicwGp3cvhSAHLoKLuHsVddBLtG1rNmQgK6gpz8puszSd3lMsl84qAcqeCIQyAjUOc7SwWZdSY73+6EpxdJiwlwqSP3PoGUDzPJFcvD9mF0FhXUXOw6YthaK1DsQe724XmoS4J0i0IJhBsbF0zx8cqqC+q2NfA9UnTP4XHM990GIU8ktdGzvUmIJxaAdih+zK0g47R1/JmJ7sRXf733h6CUS1m+d7MyKRmwKSbm4KQ4m4DTIHlDx5cWhbfaRkV3ULjC7uCXrNF7ANwg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM0PR04MB5121.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(4636009)(366004)(136003)(39860400002)(376002)(346002)(396003)(451199018)(2906002)(5660300002)(86362001)(44832011)(7416002)(83380400001)(8936002)(41300700001)(36756003)(478600001)(6486002)(1076003)(26005)(6512007)(6666004)(186003)(52116002)(6506007)(2616005)(54906003)(4326008)(66476007)(38100700002)(66946007)(8676002)(66556008)(6916009)(316002)(38350700002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: D/wL4FjXb4I8Zk6LFQoD4WeShax3c3aVD78qiHrLg2NeITRo8Dx3SmL/h5bRSqsbsy5F+w7DodTWaxIRPF5Apaku1LxwWa95NKKLuHniEzd3YBJXnKIQx6aQLaZbeFCuuVabPxjGgNcpx5ODsg+YAIxURrU4w9uEZ7CYpDY88wCbn2Trq+TRg9ou13VcWWo4fJ8X3brUiiaZRN4O6Jm11hKcjRpF45hN3PlGCTt+6u+xatfF5N8tJ6Vg8FgMr47nDqxWODCzNNKHoNV9yFMgbsssw47bD9OaMgF+mWR5uQPvlWu2dfOhI6/2PO4hDtnx1X0g1o15sr1YFBxiDUJxi+Nkw3sidVkVvxj5Tuo2ILhKEP6xGfi2nhxfh1VaTwiM6o5wKlNb7AFxVod1Wv5fYj9DqiNvcxlvhutqFAYyJu+yS4MvpInlDHdMoY0IW8gCPp3PBRQrmVR8T2VAq29e78YmvsFyWJhQI2d81RxT/biPhdb2KGl0R3GJyUqtO34L8/sZoDUVDgc/xEnYLcJhutpIsfUnIIP5K0fEcbjITSRftf92WpSkgzPvBehvZH2RGAKvotmjAskkojzwftrQFvlzzyMJtsI12xcqkiMspvS7tJRSM6mfmTIF2WhJdEkUUAJPNEtIB2aDtZlukqr95gCE7OdGYZYmysWkG418VqqvDi2XKka2ZR4uNJUsin2YI3h0x6Q+IUeAH9He/ERJpC4hH7zNLt9hVaX1QOAkznQdIVup4BHxrfowOA3eM/Lz4PzCWUxVWUuTYLuyd6Yue2O4u79rladoCqlUPDJc0jAwHeC5ssLNRbrutp6tpB1/7dVBYvN1fACX+AHe+sXuJbRy4vqLUrjz4buy7MBmh+IAF6UnGtbloQbL/ttGDVL1vyqK3M0F51pu3MHzAmyyGwH6hyK1AClqY0zfkyjPSL5CuKSaxqazGnm7RpSDX7h4hum/EijMtRTAEB3d5yW2VklndueysIKXoDPDJ3DF/Bs54H89/JAZblrE1raUwbGJUAcmo18ZduOTZtpGwPHyhrcjtt2tu9I+QVvmz4uWW1jzQlN8lUeGY+YhOU6VcidFKCk+zR2kIQesH9G4oqv19ZuXSmXTSe3dvxrNDThZAUJbnQbI2Rl0DJFE/8hFwGmLZNDU2Rnab1nPl2AZMt54kQGE+i+DUlBefjU/56X3RX0o5tUlsXyGwGKvz/IhZ0bTjGA/ktFfx/epK8Fg2gqP2DaChmYeJt64dH6BZUUoROCzD/0pzAjFSLWLalyKjadnNDQkIp/fJValhyuv/ltuk/oWYtTbJP4H+Pa9XYrgi+nw66pIApYkXVqMmIazDxVNWYzcHzlixfInbKqPZ0O0z3qUkYPmxZNIUp0MV1YcN8W1gTBWvZJ71oN4ux4ZIuuR+5OLreupWkp6lmpQfVUkY6x/aLOYOLMyhXd2TKSrbdpr4Vm8KvE56JaydKmNdCXWNnvy/mSeC1MvLN3Q2k2w3GsuUOVbcoAU4j5YzLC4tjIMTInUpgTQar5euGuNmV1MlOM7iYM0oBM7MaoUT5H9by+iZaX4PbFY9PMoH+ZKkchCIFqfnxFLR2xRABAKb4Ev8GnMQsfl5hVLt5Tt2vBPGQ== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 23468be2-167a-4647-afc4-08db02e7f177 X-MS-Exchange-CrossTenant-AuthSource: AM0PR04MB5121.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jan 2023 17:32:21.6785 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: VdUQX6DN1rKfMhq20yR7jeEq7LwLVs6K26KUU7b77ToCGL/9LvYOIfLcZLKj3ManKYkmPIRV09zUVg2hrPDVwQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR04MB7677 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org Regardless of the requested queue count per traffic class, the enetc driver allocates a number of TX rings equal to the number of TCs, and hardcodes a queue configuration of "1@0 1@1 ... 1@max-tc". Other configurations are silently ignored and treated the same. Improve that by allowing what the user requests to be actually fulfilled. This allows more than one TX ring per traffic class. For example: $ tc qdisc add dev eno0 root handle 1: mqprio num_tc 4 \ map 0 0 1 1 2 2 3 3 queues 2@0 2@2 2@4 2@6 [ 146.267648] fsl_enetc 0000:00:00.0 eno0: TX ring 0 prio 0 [ 146.273451] fsl_enetc 0000:00:00.0 eno0: TX ring 1 prio 0 [ 146.283280] fsl_enetc 0000:00:00.0 eno0: TX ring 2 prio 1 [ 146.293987] fsl_enetc 0000:00:00.0 eno0: TX ring 3 prio 1 [ 146.300467] fsl_enetc 0000:00:00.0 eno0: TX ring 4 prio 2 [ 146.306866] fsl_enetc 0000:00:00.0 eno0: TX ring 5 prio 2 [ 146.313261] fsl_enetc 0000:00:00.0 eno0: TX ring 6 prio 3 [ 146.319622] fsl_enetc 0000:00:00.0 eno0: TX ring 7 prio 3 $ tc qdisc del dev eno0 root [ 178.238418] fsl_enetc 0000:00:00.0 eno0: TX ring 0 prio 0 [ 178.244369] fsl_enetc 0000:00:00.0 eno0: TX ring 1 prio 0 [ 178.251486] fsl_enetc 0000:00:00.0 eno0: TX ring 2 prio 0 [ 178.258006] fsl_enetc 0000:00:00.0 eno0: TX ring 3 prio 0 [ 178.265038] fsl_enetc 0000:00:00.0 eno0: TX ring 4 prio 0 [ 178.271557] fsl_enetc 0000:00:00.0 eno0: TX ring 5 prio 0 [ 178.277910] fsl_enetc 0000:00:00.0 eno0: TX ring 6 prio 0 [ 178.284281] fsl_enetc 0000:00:00.0 eno0: TX ring 7 prio 0 $ tc qdisc add dev eno0 root handle 1: mqprio num_tc 8 \ map 0 1 2 3 4 5 6 7 queues 1@0 1@1 1@2 1@3 1@4 1@5 1@6 1@7 hw 1 [ 186.113162] fsl_enetc 0000:00:00.0 eno0: TX ring 0 prio 0 [ 186.118764] fsl_enetc 0000:00:00.0 eno0: TX ring 1 prio 1 [ 186.124374] fsl_enetc 0000:00:00.0 eno0: TX ring 2 prio 2 [ 186.130765] fsl_enetc 0000:00:00.0 eno0: TX ring 3 prio 3 [ 186.136404] fsl_enetc 0000:00:00.0 eno0: TX ring 4 prio 4 [ 186.142049] fsl_enetc 0000:00:00.0 eno0: TX ring 5 prio 5 [ 186.147674] fsl_enetc 0000:00:00.0 eno0: TX ring 6 prio 6 [ 186.153305] fsl_enetc 0000:00:00.0 eno0: TX ring 7 prio 7 The driver used to set TC_MQPRIO_HW_OFFLOAD_TCS, near which there is this comment in the UAPI header: TC_MQPRIO_HW_OFFLOAD_TCS, /* offload TCs, no queue counts */ but I'm not sure who even looks at this field. Anyway, since this is basically what enetc was doing up until now (and no longer is; we offload queue counts too), remove that assignment. Signed-off-by: Vladimir Oltean Reviewed-by: Simon Horman --- v2->v4: none v1->v2: move the mqprio teardown to enetc_reset_tc_mqprio(), and also call it on the error path drivers/net/ethernet/freescale/enetc/enetc.c | 102 +++++++++++++------ 1 file changed, 71 insertions(+), 31 deletions(-) diff --git a/drivers/net/ethernet/freescale/enetc/enetc.c b/drivers/net/ethernet/freescale/enetc/enetc.c index e4718b50cf31..2d87deec6e77 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc.c +++ b/drivers/net/ethernet/freescale/enetc/enetc.c @@ -2609,56 +2609,96 @@ static int enetc_reconfigure(struct enetc_ndev_priv *priv, bool extended, return err; } -int enetc_setup_tc_mqprio(struct net_device *ndev, void *type_data) +static void enetc_debug_tx_ring_prios(struct enetc_ndev_priv *priv) +{ + int i; + + for (i = 0; i < priv->num_tx_rings; i++) + netdev_dbg(priv->ndev, "TX ring %d prio %d\n", i, + priv->tx_ring[i]->prio); +} + +static void enetc_reset_tc_mqprio(struct net_device *ndev) { struct enetc_ndev_priv *priv = netdev_priv(ndev); - struct tc_mqprio_qopt *mqprio = type_data; struct enetc_hw *hw = &priv->si->hw; struct enetc_bdr *tx_ring; int num_stack_tx_queues; - u8 num_tc; int i; num_stack_tx_queues = enetc_num_stack_tx_queues(priv); - mqprio->hw = TC_MQPRIO_HW_OFFLOAD_TCS; - num_tc = mqprio->num_tc; - if (!num_tc) { - netdev_reset_tc(ndev); - netif_set_real_num_tx_queues(ndev, num_stack_tx_queues); - priv->min_num_stack_tx_queues = num_possible_cpus(); - - /* Reset all ring priorities to 0 */ - for (i = 0; i < priv->num_tx_rings; i++) { - tx_ring = priv->tx_ring[i]; - tx_ring->prio = 0; - enetc_set_bdr_prio(hw, tx_ring->index, tx_ring->prio); - } + netdev_reset_tc(ndev); + netif_set_real_num_tx_queues(ndev, num_stack_tx_queues); + priv->min_num_stack_tx_queues = num_possible_cpus(); + + /* Reset all ring priorities to 0 */ + for (i = 0; i < priv->num_tx_rings; i++) { + tx_ring = priv->tx_ring[i]; + tx_ring->prio = 0; + enetc_set_bdr_prio(hw, tx_ring->index, tx_ring->prio); + } + + enetc_debug_tx_ring_prios(priv); +} + +int enetc_setup_tc_mqprio(struct net_device *ndev, void *type_data) +{ + struct enetc_ndev_priv *priv = netdev_priv(ndev); + struct tc_mqprio_qopt *mqprio = type_data; + struct enetc_hw *hw = &priv->si->hw; + int num_stack_tx_queues = 0; + u8 num_tc = mqprio->num_tc; + struct enetc_bdr *tx_ring; + int offset, count; + int err, tc, q; + if (!num_tc) { + enetc_reset_tc_mqprio(ndev); return 0; } - /* For the moment, we use only one BD ring per TC. - * - * Configure num_tc BD rings with increasing priorities. - */ - for (i = 0; i < num_tc; i++) { - tx_ring = priv->tx_ring[i]; - tx_ring->prio = i; - enetc_set_bdr_prio(hw, tx_ring->index, tx_ring->prio); + err = netdev_set_num_tc(ndev, num_tc); + if (err) + return err; + + for (tc = 0; tc < num_tc; tc++) { + offset = mqprio->offset[tc]; + count = mqprio->count[tc]; + + err = netdev_set_tc_queue(ndev, tc, count, offset); + if (err) + goto err_reset_tc; + + for (q = offset; q < offset + count; q++) { + tx_ring = priv->tx_ring[q]; + /* The prio_tc_map is skb_tx_hash()'s way of selecting + * between TX queues based on skb->priority. As such, + * there's nothing to offload based on it. + * Make the mqprio "traffic class" be the priority of + * this ring group, and leave the Tx IPV to traffic + * class mapping as its default mapping value of 1:1. + */ + tx_ring->prio = tc; + enetc_set_bdr_prio(hw, tx_ring->index, tx_ring->prio); + + num_stack_tx_queues++; + } } - /* Reset the number of netdev queues based on the TC count */ - netif_set_real_num_tx_queues(ndev, num_tc); - priv->min_num_stack_tx_queues = num_tc; + err = netif_set_real_num_tx_queues(ndev, num_stack_tx_queues); + if (err) + goto err_reset_tc; - netdev_set_num_tc(ndev, num_tc); + priv->min_num_stack_tx_queues = num_stack_tx_queues; - /* Each TC is associated with one netdev queue */ - for (i = 0; i < num_tc; i++) - netdev_set_tc_queue(ndev, i, 1, i); + enetc_debug_tx_ring_prios(priv); return 0; + +err_reset_tc: + enetc_reset_tc_mqprio(ndev); + return err; } EXPORT_SYMBOL_GPL(enetc_setup_tc_mqprio); From patchwork Mon Jan 30 17:31:42 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Oltean X-Patchwork-Id: 13121497 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B1A5EC636CB for ; Mon, 30 Jan 2023 17:33:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237032AbjA3RdR (ORCPT ); Mon, 30 Jan 2023 12:33:17 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48758 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237616AbjA3Rcn (ORCPT ); Mon, 30 Jan 2023 12:32:43 -0500 Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2066.outbound.protection.outlook.com [40.107.21.66]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 136FD30293 for ; Mon, 30 Jan 2023 09:32:40 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fWmjRUINTJ9Nmr/D3tomhM+eJeq40gIXnNLUegvNdZWzecoDRsI1n56ur+Hz/7t2hCMla/Nx1z4jlqNMMCuBgwtn++zAgDtd4jr1UghXu9+GNUSKXLghUdQ9wnH2uno8D+tTobYPx1g9Br/QMFcaknUo0r6pbyK3jyFFFfLLfJc+rCEG/haLIkBYOJro/32iIw1E7UXTDdWCKOOn0ZUIyQGRznN5zHmZb4KofKXpvO1Vx5aA2p9LzAmoFBqgyNKpnKHVfbm7+tNgxoV68OzGWOMG7L0893btPpMNQkQAtv2LfJHIoZT3DWm8eNbWxzVMj3r9wIT03ng7ZmkNbFfb/w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=yB9mGGvltL7mehrpOYOF3l4ByZGPBTmoYKbatYXJsxI=; b=VP5LI/9Vfv4is8tpsMA1OeQk/dj6rnUFdrK3v+idF8obsqqo3ZaSjG5ajoIbZ4cndA+ahZIxdD8zE6jM9h7phq2BzPL5ReHeLcPlpLQjvVwIRtPkmSkEzy6aykcYi7ck7mg74124DpYPK7UxoKACli1CjQpP+AsGm6euDBwASfVpw03N32YPW1VkMCxTP1gGhxbayqh+T5CVu9zcx9nlTRK5FOPb8VaUWU/kXyyfp39NhoMXfYX2Z56Gd/qBgWlGU/EuiArrHW679jHlFTPcrCCtqmWn4DbepGH+SaH4w7g3Pfhha6leb6ehpfMhjTqBexIVw2+IISvKaF682gqORw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=yB9mGGvltL7mehrpOYOF3l4ByZGPBTmoYKbatYXJsxI=; b=KHtd5mVbFh64RQu+uBY2XT/Bn5rpxEDEEZfL18G3+7kv8JUGyRTmLVwFbqCoorBki1gNX5rIwuLsqJWKYhfut8YqFJssG0pmkuZVfjSTyjsYsw+isrHBLdrvc3tDH7PyKa4yrOYI0qf3AbXJ7ygt0EoENDxdYSR8nmm+U7Hiro4= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM0PR04MB5121.eurprd04.prod.outlook.com (2603:10a6:208:c1::16) by PA4PR04MB7677.eurprd04.prod.outlook.com (2603:10a6:102:eb::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6043.36; Mon, 30 Jan 2023 17:32:23 +0000 Received: from AM0PR04MB5121.eurprd04.prod.outlook.com ([fe80::4c1:95d7:30fc:d730]) by AM0PR04MB5121.eurprd04.prod.outlook.com ([fe80::4c1:95d7:30fc:d730%4]) with mapi id 15.20.6043.036; Mon, 30 Jan 2023 17:32:23 +0000 From: Vladimir Oltean To: netdev@vger.kernel.org Cc: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Claudiu Manoil , Vinicius Costa Gomes , Kurt Kanzenbach , Jacob Keller , Jamal Hadi Salim , Cong Wang , Jiri Pirko Subject: [PATCH v4 net-next 12/15] net/sched: taprio: pass mqprio queue configuration to ndo_setup_tc() Date: Mon, 30 Jan 2023 19:31:42 +0200 Message-Id: <20230130173145.475943-13-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230130173145.475943-1-vladimir.oltean@nxp.com> References: <20230130173145.475943-1-vladimir.oltean@nxp.com> X-ClientProxiedBy: BE1P281CA0186.DEUP281.PROD.OUTLOOK.COM (2603:10a6:b10:8d::10) To AM0PR04MB5121.eurprd04.prod.outlook.com (2603:10a6:208:c1::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM0PR04MB5121:EE_|PA4PR04MB7677:EE_ X-MS-Office365-Filtering-Correlation-Id: 2783185e-d985-4ae6-2eea-08db02e7f21c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: f73KAifW/ColSNbIAcrFWov0aWJwfclhKixFGhnaJ3ONpzIFOR3nYcQc3Lu1RrtEt9j64yWQHNxIWC1Tekm4mfzgKdJHZbAk5xBKlWj4o3F6KXJhAtXQg26HUNy1MQHZUnLaiYv83zjCZR1VGY7MPjA2ETS5xF6WGBi2JIEXgmGS/JYR1z+ov8ZFuLY/xhnkWmxgceRBUJJftHg31YRnV+aQyFDKo/TRJCDU3TI+XRYufc1/kDucQ0wA3u76HMEjU0TDwUc2srtgHorVKF6mLUl3NEW5/l8XdOsTGb2IjfHfJUZNdh+JKIMOUnhfzTU1C6fEwTCjau9qmarM+RgsMKujHKYrMUeFa/T6xoV2PQtsVlTHt0S/4rVV/jWtYG86py7SMwD/fVl6nvCtm/nyBEE6oa4oFZfkBvznh/CkzfqxDmFUvM2w6nf5t6zUyEpdgNoLyig84lyO2YB6ZMGD0ndxcuwkBFg6DHsYr5sYIvrMWzZhtkuds2N1mRbU75qZ+2fxm57fgc9VJEVC8evudJMu1fS6lEThtXQlkSY3aN6FMHyxJP8p0JUPbdbf142fn4ukjYrSYbdcBEsTVKNs+jenEhU0P4U1pVdEro1i5j/THX3dUuybcNjNK5iH9x6rLebLRLc22jC6DhwnHuIrYG0XhT+pnNor4Id+NmGphVx4+brSgKSFQRqTUAmDF0NB5XNjNtucBb/3iRytRjnO+A== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM0PR04MB5121.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(4636009)(366004)(136003)(39860400002)(376002)(346002)(396003)(451199018)(2906002)(5660300002)(86362001)(44832011)(7416002)(83380400001)(8936002)(41300700001)(36756003)(478600001)(6486002)(1076003)(26005)(6512007)(6666004)(186003)(52116002)(6506007)(2616005)(54906003)(4326008)(66476007)(38100700002)(66946007)(8676002)(66556008)(6916009)(316002)(38350700002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: bm9e8pdbp25rGbKBrEy4o0yJILDzsevLGBaZXVZeHyStIkmNf9DASOgafNfdmgLZvaozeI+2bBQelC6k3P7g1i7YKF7olJTJsahv+uyt6CUGaHar/pX1TbAQq3kXBtwIegMAc+fNrsoD14S0y9lslZbXOUQVCOCo2C9HccBn+ybowbfjrn6IEpmyMNNIQg9bw17zlnI3P0/a0PVJ+3auutJRbAcX1eoCYyKE4P2AVgAJQxf3gZ2CEfCgnRMUoy58deHHGa1iJ7dfQ+MdbXufZ+rro+h07DDLR3sxr/+JjWCc2I2EJqR7j59MSHU661D8EKoJmw0PiK88YnvDwuBf5Yd5coON2ji2Tl1i4i8906e11r3miky6CLz3jhJdLEpf6iUtRzqS4ebi6FxfP8Gow5/fupY+9SLs+4xhOvfI5srPPwkk0cB+SkPeDWBVW/9Bw/QYaBPfdsi9Oh2Cp+MgarVxxP7AF0eayMuj2uKb49gdPjZrnUKxVfKoI3kzdLbPK9k+ugm6WJUsT6iTF/CBMEXsTRjXi7YJ2v1OE//yOUEXhYGl367qZZ5uatmGo6pTJbWl/YCoJ4i9fPZ8h3RmWwTUu1U6F6fDKMlktTiezdOs1J1LGDK+t+Ke4cisaUMQ07nvY9nKyslurIJVY08u0KKRZIDgHzp7DqVxqYlt2OFXrms+yut/U7syb+zx+5VMMkFLhSJZ5+R7iVIe4ZmQriU/b4wUn2X4ohqdA1+CG0tdz8hCcPmTXeNxmMrJcUAJpQkP+D51eQv0SWWO5+0RQ1NFt2Re0iXxSRcysbmH27J1t0X8xYmet/jrpWj4PTxCtPKDZX29XaW/rQBI3jqEwJb/Hn+z+FNKtmKwSbKuCej64PpyidvTkpoWSwj/omN4rq8Yydv3VdvN3x+7fUNcGP7TSoqitUwznduC7EojjMJV0nDGoLslL1vD+YUaQRPsOtWy5skXo0d3S0FhEiJ5PEOuixbI3RdmtsCHznZQ/9Xu77prHpq08fWC1jAlkcMewq6fHBlSE9II9lMYZ/mvwGOfwVwZrs4CNjWeVtdVsgYVsqeZIDO3VaDUcnsamXrlodHmTH0XghsiDJVWEp170ZxtMcxT3UOI1cLbJY+9Y6sFTtSrJOmMO/DDKmsydHDfLCOPFce1SL8ZvRQJXV5NVXRt0uvXE1fYaj9twGK8NblbccVbbCHFpcKZlGAyFlsH/DHpExxeQvquEFPOdDSmTtRmQ+RfRjIN4XdYhVwy10U5plw92+3CjNbexKcz+8ZXtOCWsy858FlqVbrEM29zE8uHUm2iCFdvAqpC1/mE2Yq4j4z7Bg7B/4Y74cb1BcoWCYwvuPIy3bDBx7+wIPPPaIEamBUd2wkagWDIRbm44hELzs7fP5ISux7pqxQJb0pLezF7kMhWrh27LNT2IaFnT27VuD66eZ8k70GAzKwJdePSUWYZ6ci9UMQMo/i8S8Rl7rO8mvfoaZlZt7pLijYrmbLPC46INxZAe5KMVZW/crh6/MTaqeWGTHK/bIieojwLTkKGrY/0H054QfadghNF28q3UAUl2M6aVm97Umb6t23zg/LPCEkokDjKHyDPMuIICkUEI1mRCCZF+YixqrK6UA== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2783185e-d985-4ae6-2eea-08db02e7f21c X-MS-Exchange-CrossTenant-AuthSource: AM0PR04MB5121.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jan 2023 17:32:23.1784 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: KPCThPmu/kSQnvdouae8mwICffkBSsLclbQhrOUzkATc3mZdgrWCyBxINXARK4BJWn5gwk1AlhBKVClcZ03UCg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR04MB7677 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org The taprio offload does not currently pass the mqprio queue configuration down to the offloading device driver. So the driver cannot act upon the TXQ counts/offsets per TC, or upon the prio->tc map. It was probably assumed that the driver only wants to offload num_tc (see TC_MQPRIO_HW_OFFLOAD_TCS), which it can get from netdev_get_num_tc(), but there's clearly more to the mqprio configuration than that. To remedy that, we need to actually reconstruct a struct tc_mqprio_qopt_offload to pass as part of the tc_taprio_qopt_offload. The problem is that taprio doesn't keep a persistent reference to the mqprio queue structure in its own struct taprio_sched, instead it just applies the contents of that to the netdev state (prio:tc map, per-TC TXQ counts and offsets, num_tc etc). Maybe it's easier to understand why, when we look at the size of struct tc_mqprio_qopt_offload: 352 bytes on arm64. Keeping such a large structure would throw off the memory accesses in struct taprio_sched no matter where we put it. So we prefer to dynamically reconstruct the mqprio offload structure based on netdev information, rather than saving a copy of it. Signed-off-by: Vladimir Oltean Reviewed-by: Simon Horman --- v2->v4: none v1->v2: reconstruct the mqprio queue configuration structure include/net/pkt_sched.h | 1 + net/sched/sch_taprio.c | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/include/net/pkt_sched.h b/include/net/pkt_sched.h index 02e3ccfbc7d1..ace8be520fb0 100644 --- a/include/net/pkt_sched.h +++ b/include/net/pkt_sched.h @@ -187,6 +187,7 @@ struct tc_taprio_sched_entry { }; struct tc_taprio_qopt_offload { + struct tc_mqprio_qopt_offload mqprio; u8 enable; ktime_t base_time; u64 cycle_time; diff --git a/net/sched/sch_taprio.c b/net/sched/sch_taprio.c index c322a61eaeea..f40016275384 100644 --- a/net/sched/sch_taprio.c +++ b/net/sched/sch_taprio.c @@ -1225,6 +1225,25 @@ static void taprio_sched_to_offload(struct net_device *dev, offload->num_entries = i; } +static void +taprio_mqprio_qopt_reconstruct(struct net_device *dev, + struct tc_mqprio_qopt_offload *mqprio) +{ + struct tc_mqprio_qopt *qopt = &mqprio->qopt; + int num_tc = netdev_get_num_tc(dev); + int tc, prio; + + qopt->num_tc = num_tc; + + for (prio = 0; prio <= TC_BITMASK; prio++) + qopt->prio_tc_map[prio] = netdev_get_prio_tc_map(dev, prio); + + for (tc = 0; tc < num_tc; tc++) { + qopt->count[tc] = dev->tc_to_txq[tc].count; + qopt->offset[tc] = dev->tc_to_txq[tc].offset; + } +} + static int taprio_enable_offload(struct net_device *dev, struct taprio_sched *q, struct sched_gate_list *sched, @@ -1261,6 +1280,7 @@ static int taprio_enable_offload(struct net_device *dev, return -ENOMEM; } offload->enable = 1; + taprio_mqprio_qopt_reconstruct(dev, &offload->mqprio); taprio_sched_to_offload(dev, sched, offload); for (tc = 0; tc < TC_MAX_QUEUE; tc++) From patchwork Mon Jan 30 17:31:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Oltean X-Patchwork-Id: 13121499 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 05D80C636D4 for ; Mon, 30 Jan 2023 17:33:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237589AbjA3RdV (ORCPT ); Mon, 30 Jan 2023 12:33:21 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48796 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237871AbjA3Rcq (ORCPT ); Mon, 30 Jan 2023 12:32:46 -0500 Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2084.outbound.protection.outlook.com [40.107.21.84]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 335F7360BE for ; Mon, 30 Jan 2023 09:32:43 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=l/FGUEq+0wphxU4nfVYPiyMBHYM0d5URkgT/kis7ihtUaFMwW9NRaSlDJtLUfHuzrqweVHuEhv+gfjuqxHMAAt/13ZaR7/jrrVQ2cjZJhjz8D2Ue4m9+l7QBTgGwXdvQSiDXPg/fbtKmeILM/1yko43civTQd9+yvlBjAjb/adNXdiGDtXCcb6Z2qZrwkCHJ4QwEXJJ2zAbA9VvgUM/sF6yZ5Ynv8giQkLWItqw1I0FHhJRQn12cI8nLnuUfJjhQ83+H7SZJb7oNmg9XJwi2xVjZ1FL/9gNzws9rSC+kKYFoKLeVnKT9H0v3tVfURjfA+aa5mJJCRXGzHGBgAaYBDQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Ihs9k5t1nNIELBVcMmQK+rE55V7rM/qPBwko9MudvD0=; b=lkJ/IMSW/as8GlkzyJRHCzSoJbFLl6h3uTSgXqD4bhZE4IxvkCY83pD/Pnk4J5iNuDL0jOvJc5ovMoPTgu3COhAvfqmQ/HiQovSCz7E9ktTLfTFnENHfT1eGXgwsE/z6xByIzcPQpYa78lRQQ36eHmMd+k2U2fGlwBaxVlYWaz3riLbGueZYMKpqpk9oRkNpaHAdkZSciAlorjhjrUuIZrdEk/SOPDs6VH9yQ9evBHK0cEGDtgL+PlYFfqCfWuraX2syudiKGLLlhhXE07CECDf1QncMc3FRTYwSyf2mly5y9jKhYs9JZPPuuWg6EOu5n0n4nQCfwQ76qB+KI68BUg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Ihs9k5t1nNIELBVcMmQK+rE55V7rM/qPBwko9MudvD0=; b=L30JjxtST0C66O6ApZzzM58JGf7qjMQ4Zy0lxfNdkYxZ6ICdxWIpQ4Mlb+br7/FtlEwnhy9K/GT1bxlksVudeP+s7C+5BSqODAiyMr4veccsCwHdDM+B++nJLwYagd6Wn/HsgKmyHNzmAvkcbxLImQmcS+qS+VIOmf4Q1qGtODk= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM0PR04MB5121.eurprd04.prod.outlook.com (2603:10a6:208:c1::16) by PA4PR04MB7677.eurprd04.prod.outlook.com (2603:10a6:102:eb::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6043.36; Mon, 30 Jan 2023 17:32:24 +0000 Received: from AM0PR04MB5121.eurprd04.prod.outlook.com ([fe80::4c1:95d7:30fc:d730]) by AM0PR04MB5121.eurprd04.prod.outlook.com ([fe80::4c1:95d7:30fc:d730%4]) with mapi id 15.20.6043.036; Mon, 30 Jan 2023 17:32:24 +0000 From: Vladimir Oltean To: netdev@vger.kernel.org Cc: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Claudiu Manoil , Vinicius Costa Gomes , Kurt Kanzenbach , Jacob Keller , Jamal Hadi Salim , Cong Wang , Jiri Pirko Subject: [PATCH v4 net-next 13/15] net: enetc: act upon mqprio queue config in taprio offload Date: Mon, 30 Jan 2023 19:31:43 +0200 Message-Id: <20230130173145.475943-14-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230130173145.475943-1-vladimir.oltean@nxp.com> References: <20230130173145.475943-1-vladimir.oltean@nxp.com> X-ClientProxiedBy: BE1P281CA0186.DEUP281.PROD.OUTLOOK.COM (2603:10a6:b10:8d::10) To AM0PR04MB5121.eurprd04.prod.outlook.com (2603:10a6:208:c1::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM0PR04MB5121:EE_|PA4PR04MB7677:EE_ X-MS-Office365-Filtering-Correlation-Id: 2c763875-7759-412f-209b-08db02e7f2f5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: F+1dmrrBeCzT8noK/XVLitasVuss2SYc2TYon0z9xsQp31Iyb0J+EArBTBtzgGAuk8c5DwIG/o8lCx2dLP4ifCOcR+x0bfpX1ZLcTBt6EewXEnTmHvL6ZwUuPB3nFBaVQ6gRwu8m3eHzRHclZge5Vvi4qDCQ+2pIj04bG6QjFc6pS1qWnlOvb9BK3j7RzU0U5AyIpCCSi6RcUxjFNe41fqmTM9p4+2rQafa8qTmR9YNL9KMeuOO8UI3LrK0a9Uk3sOpjd5636biiZs1FyI2DeSv3XmX0bOHJQt93xcBt1YoAQcqCaYj+VqT6Fz3tuvyAt7+9Q8FIrnFI5VkOUuaHrEh81dt184b+o++o8lrwxh/CiIqddBVJXXyjxeVdHxYEtFUV/9+/rQ2T0ZfIKCTwpmwmt9BN3oj5PRAQUCN3t6p928tXlNGBK1WUaujM9X5Y50VDs1TvvNERVLNQQjkYIu84XykAWHXo8q1tgL0KbzPFcIW38+mH8nPqplBgUwlZbFHqJf70pIo1lrElnK5j5ECY0fLyYfrWLqWoTUNYJEnPoLTFCOj/av0QSpmQPzVYPvo7dcyEWuUoIOwrGJIcTv7rrOfAKqv1T0xrQzYbq8doMGfQSD4jzF43+/x39qaslQ6jI9DftZg9U+ihmqBWAk8MzgabGcpwtUMkh+mk0pyj0vztEP7q4TBF3N4n7g06nP7XfHcfcX1iB6ITiTnIcQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM0PR04MB5121.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(4636009)(366004)(136003)(39860400002)(376002)(346002)(396003)(451199018)(2906002)(5660300002)(86362001)(44832011)(7416002)(83380400001)(8936002)(41300700001)(36756003)(478600001)(6486002)(1076003)(26005)(6512007)(6666004)(186003)(52116002)(6506007)(2616005)(54906003)(4326008)(66476007)(38100700002)(66946007)(8676002)(66556008)(6916009)(316002)(38350700002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 5mMpB6D5/Fwfo0vNX9dtMWqSSSi1+xJI0ITz1+kCNYuBtMnOsfoP5jeA2dJmXoAgdsBNBI05r9ACP0A4B4fpxSRa3+74J8bh6kyaaSj3O6Hutnqayw2nZRoy9HG4WoqJIYD2j853Q1591yVxzb/PIJ51aI2iK+US9NeUparjYE3q4kFxkBTa8TodbLTinYGdBZkdt5wlgY6YKUy2To0gldZtF4qfIvPbMgMzVbDLxgJy/hI9SAybWbdpqmxmXy8WZ3GaC++IziHIjuZHqVyHtI10DtJTq3Ado9guWDkoKYFNUOPZjPNReuxMTNkm+WI+d/rxohMwPVFdgGdv2H/Tmd/N9BQk4oWvuhEu/Gtkx5r2kGwHHv93wY8xO58wpu0wKp9+ffuA3Shq9ELeUTPD41Vjzg4YK8Y6b5zmFMTm1T1Fpw7lt18adssnYkhSU+KARjan/m26W9w0A+cPtlErQX0lFrhSDNXBgawhBhlnLZSW7eX70VOVbDs3SwMtzr2tb0nL0DjiyQhKFLYl4tBGpMuRUWVWrrY9zrfwr+kHVPjLw1KkSdyxmny68N6ImJuvv0oA+3UasisO0Aba+C+inKxpM+xdl2abnISJnFfSn3qTSsh4R1pIGdijf4ghoBNNt6Xwu/nE5w4zSNjHv4P8DrIXIq8YoG2josA1t3CmcSNkqX8ZEE2F70RrUUdv6LmUT0ddzl/9FVNfMDc1/C88VmMlNDT6QbFksK/JRuW6lFWFIj9nrYQxRTvLdPgTvQDRl4VubfFL/36Ryrpn7PeWDPgdVrMXf76fF0YNeSMCKauN/6e1AuqINl7Qh4ehSlh8yaBGswU1uFUyGVZH20t0DLupyPL/Af+hwc/nxjJ3eMXEFr6Mh7ZqfoYS5l6PpZGFnkKwDtV3syYWw0Q9NV/jHkT+lJWATB6QOfBljf8EMFRyC2MPcM9CeQXIOEIGnCPaG6Q/MB7DlUDx1xhEg2qMUnHn0vwFNBNcU6Qn93ql8C/ItgVIBGoIyt4fumh3AJQPZFVwRgfM00fXaLtqDMFFe9rWLA4T+V44cgliO7envQJR6Yy/4bcGXnRc1Xo8ZuDBMQmZb9ddiClqCTgu2l8MdqD+eJwkawPu26eieGmxsaUmqEfJjuSGfrk10nfeKTgmf68oXbKBV1BvXP/9m+arY+Bmg8EcE+ajYZBhz/JdOza132AAQToIvKbk3+KtLP2T9inmyyiZXH6Nb9iI7GbpLilxpLo9Ko3UKya8xyFVmuc84mn4TpnCtxO/BYXzgtR4+cRF9nwgnmpR7C6qjAzjiDV6VeVU/StlGbLNpy+zstOyo+2LP88fo4h2xAimskqDVIQEfHIKaX2JG6+OdLmbSnWN4+tcf5g8o/6K6t+UgkAhxvBEEVrl6Wg/qWwVbTCiw6Wdnp2ur6O5tZEkWmCEm79au0PGDXNWbPrdCCBgdbe0iy8OZhRhsSlx3LBg+AWGf2sB6zlaFn3t+hy4h25En52Yup1oVAh0x1qC3KNMfx9xufCMk2bqJFns73BmJ9nk9GSPfQvGjpuPmny6jooBsDedkFtp18RUna1+AZA3HDHPgE/h19FYsu720KYxdzOpzqG8bUr6Y8HFSsCcd+M9hA== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2c763875-7759-412f-209b-08db02e7f2f5 X-MS-Exchange-CrossTenant-AuthSource: AM0PR04MB5121.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jan 2023 17:32:24.5221 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: xN9FVo+eXc7xi27VJvIcsoLlWVoq/eqFl3bDAQAZQEfjDslj1s3/TgwfML6WhdPRU3nvNy4VhkI3zjbjI/RVPg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR04MB7677 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org We assume that the mqprio queue configuration from taprio has a simple 1:1 mapping between prio and traffic class, and one TX queue per TC. That might not be the case. Actually parse and act upon the mqprio config. Signed-off-by: Vladimir Oltean Reviewed-by: Jacob Keller Reviewed-by: Simon Horman --- v1->v4: none .../net/ethernet/freescale/enetc/enetc_qos.c | 20 ++++++------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/drivers/net/ethernet/freescale/enetc/enetc_qos.c b/drivers/net/ethernet/freescale/enetc/enetc_qos.c index 6e0b4dd91509..130ebf6853e6 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_qos.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_qos.c @@ -136,29 +136,21 @@ int enetc_setup_tc_taprio(struct net_device *ndev, void *type_data) { struct tc_taprio_qopt_offload *taprio = type_data; struct enetc_ndev_priv *priv = netdev_priv(ndev); - struct enetc_hw *hw = &priv->si->hw; - struct enetc_bdr *tx_ring; - int err; - int i; + int err, i; /* TSD and Qbv are mutually exclusive in hardware */ for (i = 0; i < priv->num_tx_rings; i++) if (priv->tx_ring[i]->tsd_enable) return -EBUSY; - for (i = 0; i < priv->num_tx_rings; i++) { - tx_ring = priv->tx_ring[i]; - tx_ring->prio = taprio->enable ? i : 0; - enetc_set_bdr_prio(hw, tx_ring->index, tx_ring->prio); - } + err = enetc_setup_tc_mqprio(ndev, &taprio->mqprio); + if (err) + return err; err = enetc_setup_taprio(ndev, taprio); if (err) { - for (i = 0; i < priv->num_tx_rings; i++) { - tx_ring = priv->tx_ring[i]; - tx_ring->prio = taprio->enable ? 0 : i; - enetc_set_bdr_prio(hw, tx_ring->index, tx_ring->prio); - } + taprio->mqprio.qopt.num_tc = 0; + enetc_setup_tc_mqprio(ndev, &taprio->mqprio); } return err; From patchwork Mon Jan 30 17:31:44 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Oltean X-Patchwork-Id: 13121496 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id E8821C636D0 for ; Mon, 30 Jan 2023 17:33:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237413AbjA3RdU (ORCPT ); Mon, 30 Jan 2023 12:33:20 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48804 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237818AbjA3Rcr (ORCPT ); Mon, 30 Jan 2023 12:32:47 -0500 Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2066.outbound.protection.outlook.com [40.107.21.66]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7C16131E09 for ; Mon, 30 Jan 2023 09:32:43 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=N2sAWG4/V4VJMUqXITe3ikMqq0D2CHq8lrwLN1i288V1at8EQ7Z/h2rO1pp5lwpOZL3r6237D76sYLAsxTWk3CAoJYho5vMkRGgL1KuLX4GQljbgSmPNPloNxZPmv8z9Ygyj1yS7EgdCdHf00iRo4frO+oX+2oC4xOiVkfKHGlQvCUM6YgauHcURil4kh0Ptxo+k6J3DCbRFmUq+4Wv/GafOujk0YA2YfUwGt5KEUOv8MOyGdWFPfUOcWhESIZMgWR/jFIUTPYBa/nUJ/jYWQ+eZoRWlFqyEQlHio/S+m/Fofwf3sQS+qJchN63IX3n4zwoXUGdPx/kZZsuLKrrZzQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=xPe+l7r98DnSjHpU8T5dm6nweU/6lBtxg59TpCko0pk=; b=AcwvzSfFF+MlodKKWgCikc+0ZBrv8R3VGKZoxgvBVE+K12/r7WKT7tdhZC9yktmyqB1c659Y4fENRzfRja8lwA2d4dWDCI8+Y/iHuvwK/B90K16xbbEFT2zxhszY54xDvbEIxqfXeyprxJ0ZskPpHWtmiWGfCj6cMX9HomCXuuA/fUPkYxq1IzmxKMTNFiL9hYM3Q9Prm0C1lL99Pox6EOXiPzXXa7N4PPTHqSctmkhLKIrdLvLb7DypF+WZvgkHFD+GvSKGrdLkUfmgcJdg+qm8zQy+G7VCiOjsX/QbWiAaBTU6v9jR3Ak6H297o6Lxu/W9OB2M6ZU9insNhciqGA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xPe+l7r98DnSjHpU8T5dm6nweU/6lBtxg59TpCko0pk=; b=TNXekuAt+W3xzK41JL5tCyZcINvXEPd8Y7UF2M6EX7PbiNvts175/PoZ/AfeFceaF/nEmln8m/+fwivHLWG+ZSTFFDiIqGk3N63ZWImjhsheEjD/mhGPqTHjH5MO/12sbL8MHd/TuhkzqNqy6pYtod44wx4grR4DnjUI060yjWk= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM0PR04MB5121.eurprd04.prod.outlook.com (2603:10a6:208:c1::16) by PA4PR04MB7677.eurprd04.prod.outlook.com (2603:10a6:102:eb::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6043.36; Mon, 30 Jan 2023 17:32:25 +0000 Received: from AM0PR04MB5121.eurprd04.prod.outlook.com ([fe80::4c1:95d7:30fc:d730]) by AM0PR04MB5121.eurprd04.prod.outlook.com ([fe80::4c1:95d7:30fc:d730%4]) with mapi id 15.20.6043.036; Mon, 30 Jan 2023 17:32:25 +0000 From: Vladimir Oltean To: netdev@vger.kernel.org Cc: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Claudiu Manoil , Vinicius Costa Gomes , Kurt Kanzenbach , Jacob Keller , Jamal Hadi Salim , Cong Wang , Jiri Pirko Subject: [PATCH v4 net-next 14/15] net/sched: taprio: mask off bits in gate mask that exceed number of TCs Date: Mon, 30 Jan 2023 19:31:44 +0200 Message-Id: <20230130173145.475943-15-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230130173145.475943-1-vladimir.oltean@nxp.com> References: <20230130173145.475943-1-vladimir.oltean@nxp.com> X-ClientProxiedBy: BE1P281CA0186.DEUP281.PROD.OUTLOOK.COM (2603:10a6:b10:8d::10) To AM0PR04MB5121.eurprd04.prod.outlook.com (2603:10a6:208:c1::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM0PR04MB5121:EE_|PA4PR04MB7677:EE_ X-MS-Office365-Filtering-Correlation-Id: e15a13d6-398c-4b4f-26e6-08db02e7f3c2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: DL3ws3O/cK+AB4WuDRdNhM9k6UBV+UK5aCKeEuLCO5bT+tmM3oCiPscNsA3hdgJHnMV/lO+NISORtq9IKzh4q8T7CWOy4I4Yk2gBcvx/NDUtww0lEJVb4IDNDZ29UXH64zsdxPYHuwpnapGtWN00lME4Mgy9CuwXiqkXXMCgX/9+S+eVCMAeZTS7HM2Q1jvUQahiRqipLJuL3CBhuvNmII1bGe3oyXpY6ff5z2VPmd2YRrkmF2tH6h0kAhCBIRIzu1jsyakHUyhfIXH1lazqU4ypX7ITTV/79HiZCgeyoDz+ONZBTacSnepliVe2k86wTAJyp1fRCRN4PXDer5e/vIt+2g5L/ifbcawgdZ+XCzfulrBeKNmIYvUjFLc/2k4WBptZCNsQyr+feJ1GCNLcLl+dUszjePKkF+hNek3LYiJoI7mzug97TjathsMF/RWkiinWUcliyho1QbbBhwOfwFKxxoVsUHFEYdoBxcdWujspd7/b6eQYRyMkY5//91i6iI2u4Y9XVt0QLPn+tBUjQFA6pGmxXVrVf0OlPWYnVHlK20Ieuxz+SEYb6ohZY7AVjUDMFanLuMmAh2RQp2pV1bcpd9oWCwa6SjPfSrNvISm2QErdjjv6c8ZCx73NQVDitdWBwQ8cUYAq5qOvGBBo93I47J24W8k8GgtOVe2PEPpoqeuuc3Qer2hqAQht1YuSO+GiuBOiGtdj6BrVenP5Cg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM0PR04MB5121.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(4636009)(366004)(136003)(39860400002)(376002)(346002)(396003)(451199018)(2906002)(5660300002)(86362001)(44832011)(7416002)(83380400001)(8936002)(41300700001)(36756003)(478600001)(6486002)(1076003)(26005)(6512007)(6666004)(186003)(52116002)(6506007)(2616005)(54906003)(4326008)(66476007)(38100700002)(66946007)(8676002)(66556008)(6916009)(316002)(38350700002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: IkE2OkAnr80+2xmX4tZm9gSvp+FVZuDRpXzZTFKOTtKHGVzqD+FTFIzbFc9W9mRepYJ1C2Q8mnviEzXyL6jOuGxbkQRzXhdgMFeE4lUoJdBI10bxa5CD50kmRScfn7PMWAjs/ErvLEld6bYxG3eksCEPSk7MtA28uZ4Ek7XEbsIY6eujGAM8cicS9EsPNJqkVSIT5B+eOLoRp7xTycf+axwtzwNJq95N8G7p2ADG1BuQye6r8baGANm4BZMDZNeWtGNCrurNnwupXIhGgTHIZB92F30aiu9B296e3dmQcYG2OufXj7cSP2pamXIveoVE1GlKEBjdBkf7iuniiKbop9ObXBxpNbaZyp/wAT7q47nh81TcpPHcHF8r1Pl1ZjCMXlXshCsBdC+CFPpjjsofc/99eA1KXxuQq4BR8KDHVgDfVExQHoCn9KUcX4TjrNMC/nATmRLTIZpMpjUwTlxfbPG6Wf91dsidQZxKJbEdqG4sgim921TdKS+DzAskQkLtFi7LiQl+u19eD7gG1XKZ6OvJamM2Yop+gKHoDULVCv0hHQ11gnxaDeVg6KH0Pvt5+zOgECqTeWsYQlxbt7MaSC2YFqrhPnJi7Rk3PEaWJF+AEurHIFwUXbcD8Vf6C8wGoDaTkfJHettiXrFfiIFjbB11Ws5ARNVDkaJyeiPp5z00MTweKx5ibDasfdbuqnzFOv0ZS4s396Wu244KaxN408dHnmjhuzi4aX1QjfkzUmPOJcROvMCJiiyaMxai1kAj29ypFpOH/fjNxAUvvYZWRiD0WHC4+QIBX8lxrtcJxWLxjkYETnNXIq1rIYfM2BW+R81Is1gWIey3j9pzKjgOJ2jA7xTKCk946eEJMtnmChdbjt6d6CfVIpAGRMX6o6kdQYHkyVoIM7oO4GlYk3j4EUFZL8In1jq8EVQ1c4QsHBVz6UFrXkqJg7vRZARqdGlZELOZt1dznCv+GJ3Keyv3ySxgcsug6LD+j8wq2txciDiHhdFUKMwM9bmy3NguMYRQleMQrexQag2Adw80B1dGbpjNOcyylNP14bFVZgY9qYPH4VQaCaDeSa+fBa6H0VPAIKpvQwA/UUNO7H9A3i+5JXmSPFH3TsTF9a0h4e5/oFj2hMeaVFEdXbZCtlbHHDxPNEeQdumLAsqh2Ujx/kQaRC+l59Ls1m1FXWtMTEbgdidaIKuFzbAy3JdigqX5E/snPo97DEzED7jIju7tpfstS+3+9A10YYKFZyw4/nqRk2lX5MmvnAzoq4Fg/m/WmSp9wYQUp0aB9anMuv64i3Biu/Ah/pqkDAkKhlm/W+4vsfscFDvX59oIwFZOLPqjJyG2oHXSvQONyu/tdknccjKnF5QiwZ0EPu6FQMa6RtBBOLbF5LrELWLK2FDQ/7o7G2K//Q7gtScqApnV8vPjwm9/Mk6QkazKjG+bGtUKuIQd5Z1oMxLYxLGbSO16T8rc9ivNTFDeIw4efKwBTFtW4Tz0mll9YMWHnqHEA2waIpWPAFOCM6VgNWIssHaFXZYxG+4U3rn9BW+9k/scyvFGXvR1PNj40eGuICBIx5/wWb2cA9lezvgFlrk5ZRARJQNrQhTD5W2UhP/0Luij45/PKHga9Q== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: e15a13d6-398c-4b4f-26e6-08db02e7f3c2 X-MS-Exchange-CrossTenant-AuthSource: AM0PR04MB5121.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jan 2023 17:32:25.5689 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: WgBeYn+AdmZwemmIhHE9daH+LgbPbCi21yDW3AO1G8xO76O8+5LsxkCA4DEgO4ISJJWe3zvVODzCrd5Ve9UXsg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR04MB7677 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org "man tc-taprio" says: | each gate state allows outgoing traffic for a subset (potentially | empty) of traffic classes. So it makes sense to not allow gate actions to have bits set for traffic classes that exceed the number of TCs of the device (according to the mqprio configuration). Validating precisely that would risk introducing breakage in commands that worked (because taprio ignores the upper bits). OTOH, the user may not immediately realize that taprio ignores the upper bits (may confuse the gate mask to be per TXQ rather than per TC). So at least warn to dmesg, mask off the excess bits and continue. For this patch to work, we need to move the assignment of the mqprio queue configuration to the netdev above the parse_taprio_schedule() call, because we make use of netdev_get_num_tc(). Signed-off-by: Vladimir Oltean Reviewed-by: Jacob Keller Reviewed-by: Simon Horman --- v3->v4: none v2->v3: warn and mask off instead of failing v1->v2: none net/sched/sch_taprio.c | 46 +++++++++++++++++++++++++++--------------- 1 file changed, 30 insertions(+), 16 deletions(-) diff --git a/net/sched/sch_taprio.c b/net/sched/sch_taprio.c index f40016275384..a9873056ea97 100644 --- a/net/sched/sch_taprio.c +++ b/net/sched/sch_taprio.c @@ -789,15 +789,29 @@ static int fill_sched_entry(struct taprio_sched *q, struct nlattr **tb, struct netlink_ext_ack *extack) { int min_duration = length_to_duration(q, ETH_ZLEN); + struct net_device *dev = qdisc_dev(q->root); + int num_tc = netdev_get_num_tc(dev); + u32 max_gate_mask = 0; u32 interval = 0; + if (num_tc) + max_gate_mask = GENMASK(num_tc - 1, 0); + if (tb[TCA_TAPRIO_SCHED_ENTRY_CMD]) entry->command = nla_get_u8( tb[TCA_TAPRIO_SCHED_ENTRY_CMD]); - if (tb[TCA_TAPRIO_SCHED_ENTRY_GATE_MASK]) + if (tb[TCA_TAPRIO_SCHED_ENTRY_GATE_MASK]) { entry->gate_mask = nla_get_u32( tb[TCA_TAPRIO_SCHED_ENTRY_GATE_MASK]); + if (entry->gate_mask & ~max_gate_mask) { + netdev_warn(dev, + "Gate mask 0x%x contains bits for non-existent TCs (device has %d), truncating to 0x%x", + entry->gate_mask, num_tc, + entry->gate_mask & max_gate_mask); + entry->gate_mask &= max_gate_mask; + } + } if (tb[TCA_TAPRIO_SCHED_ENTRY_INTERVAL]) interval = nla_get_u32( @@ -1605,6 +1619,21 @@ static int taprio_change(struct Qdisc *sch, struct nlattr *opt, goto free_sched; } + if (mqprio) { + err = netdev_set_num_tc(dev, mqprio->num_tc); + if (err) + goto free_sched; + for (i = 0; i < mqprio->num_tc; i++) + netdev_set_tc_queue(dev, i, + mqprio->count[i], + mqprio->offset[i]); + + /* Always use supplied priority mappings */ + for (i = 0; i <= TC_BITMASK; i++) + netdev_set_prio_tc_map(dev, i, + mqprio->prio_tc_map[i]); + } + err = parse_taprio_schedule(q, tb, new_admin, extack); if (err < 0) goto free_sched; @@ -1621,21 +1650,6 @@ static int taprio_change(struct Qdisc *sch, struct nlattr *opt, taprio_set_picos_per_byte(dev, q); - if (mqprio) { - err = netdev_set_num_tc(dev, mqprio->num_tc); - if (err) - goto free_sched; - for (i = 0; i < mqprio->num_tc; i++) - netdev_set_tc_queue(dev, i, - mqprio->count[i], - mqprio->offset[i]); - - /* Always use supplied priority mappings */ - for (i = 0; i <= TC_BITMASK; i++) - netdev_set_prio_tc_map(dev, i, - mqprio->prio_tc_map[i]); - } - if (FULL_OFFLOAD_IS_ENABLED(q->flags)) err = taprio_enable_offload(dev, q, new_admin, extack); else From patchwork Mon Jan 30 17:31:45 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Oltean X-Patchwork-Id: 13121498 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D44B7C54EAA for ; Mon, 30 Jan 2023 17:33:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237366AbjA3RdS (ORCPT ); Mon, 30 Jan 2023 12:33:18 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48806 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237875AbjA3Rcr (ORCPT ); Mon, 30 Jan 2023 12:32:47 -0500 Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01on2078.outbound.protection.outlook.com [40.107.13.78]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 560692BF0E for ; Mon, 30 Jan 2023 09:32:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=P7iauxAV6AxMkKNxfRNqEHScXS0PRODd9JDKg3iWi5tWC0J4KQAcGkTLylJ2ThRRtObKiT7qZ0NO9eD7bV07SWqBjZs95x7W6cSiUnY835lAo9TIS+aTm7QJIoxCUEIkTALGGmpjIJ2y/yssG6nI+h6FIQ88S1D9U93xWzD5pRZw+XzFBqHzzZIH3JfhoAFy7dUrejIXVnwK09ICkMJe6cBlqhqcCpTrHQ/nMxlVFuJoDuetbULRD7DXR9xs6GkvTOUV0Vw2JTOP4EbaitRIRGRKed8e5/7zhH59yrzvHWn3WjIBfui/L3sNgCso45pcTFco+tcPN5hcG7mA1AUWDw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=PD9d4vU1QP2lFxGVnFPFw/eMxgHJfCC06u4F0eHQDlA=; b=UmGbgVmSSfxlDCUJ0CsOV+TO/pQnFKHFLeL+vErOLfVMuhxKqoTGilvTDVupMntrtWH2Qpx4Wmz8Ro6VkedC/6cW740sPV8g7CcRHPhH2zV+iRFDYR3ucE7y2DNgURJVt6h88e49DFHrroX63dRH3BcIFHjfXbPC4DIC+RHdpfktQH3wB9MOL5k3dDJr/gwmbBQyFKATzh3LFrMsBrVoHkpwhfH+SjIcNIuoE9hmWH12ka8uJJF1Z2wlaSW1WcNmlbHyjRYEZuPRR9ckJ1gtMHeP0VwoKqsntHNyBsLnx0Ns3net/WGUg6YATpVNC+/ZLgq+MH1TFzY5igYKAlTmaw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PD9d4vU1QP2lFxGVnFPFw/eMxgHJfCC06u4F0eHQDlA=; b=P2ZQixoi/pl5TY8Hs5sqWvCJDQW0y3UbNvuH1N4zZluwxJsQqdWiZq5wbcUM8miN8ccaXy7q0wOYjyNDFnaCXlc+BwmAYe5sT5SX/UENVUGvW+BqPocG4Drs75Bj5LPwKKiphlu53kXOgr+wCU+XJ/jvU0/DgoRXdkBx1gEaUwo= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM0PR04MB5121.eurprd04.prod.outlook.com (2603:10a6:208:c1::16) by PA4PR04MB7677.eurprd04.prod.outlook.com (2603:10a6:102:eb::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6043.36; Mon, 30 Jan 2023 17:32:26 +0000 Received: from AM0PR04MB5121.eurprd04.prod.outlook.com ([fe80::4c1:95d7:30fc:d730]) by AM0PR04MB5121.eurprd04.prod.outlook.com ([fe80::4c1:95d7:30fc:d730%4]) with mapi id 15.20.6043.036; Mon, 30 Jan 2023 17:32:26 +0000 From: Vladimir Oltean To: netdev@vger.kernel.org Cc: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Claudiu Manoil , Vinicius Costa Gomes , Kurt Kanzenbach , Jacob Keller , Jamal Hadi Salim , Cong Wang , Jiri Pirko , Horatiu Vultur , Siddharth Vadapalli , Roger Quadros , Gerhard Engleder Subject: [PATCH v4 net-next 15/15] net/sched: taprio: only calculate gate mask per TXQ for igc, stmmac and tsnep Date: Mon, 30 Jan 2023 19:31:45 +0200 Message-Id: <20230130173145.475943-16-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230130173145.475943-1-vladimir.oltean@nxp.com> References: <20230130173145.475943-1-vladimir.oltean@nxp.com> X-ClientProxiedBy: BE1P281CA0186.DEUP281.PROD.OUTLOOK.COM (2603:10a6:b10:8d::10) To AM0PR04MB5121.eurprd04.prod.outlook.com (2603:10a6:208:c1::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM0PR04MB5121:EE_|PA4PR04MB7677:EE_ X-MS-Office365-Filtering-Correlation-Id: c1d3455b-7ddf-4648-417f-08db02e7f483 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: XlEgsOBV7Oogc7WVSn07wKTdaNcTJRteoP2WBRIa4GhpwXzaG0q6kfE0xdwrEPpg7Bv3WePhWw6O/BRLkFtxslxZglKRCKfQ5qmuuXw7zsoQM75OO2QxE5I8xrK38T/VqNQeY6CelvZbEVX6UDYGy8MebAqoYfgVMgcYUIueTK6AQNbwC8dzYxYxT14qx+JP3uHRS2m5FW0RkWqRLlVxEkh8TktNP4rJ4hMeqbGhTN4R3YTEnRQwMmmvYrnpPjxSaZ+jp74dEV301LEzGQLqu/JEuadhnBKNrMvMaOWB76kuV1SctiNSoHs4M21qzdE6YP3o3Kb+YqrLV9ks8jx/71Vty5anAJ2TrHIkj0RSe7xu8WginZJ4yfmZIgThLPF/0WMrxcpd3lFE0ny5ALs8EFKM9qgN3vZHr8cvJb0IOwS+bN0xQKUD/nHJYEF7CfdU6FoFRc3ol1VQF7T5+m0uEJW9b1KhlWS2G/i2EhysjvGmRIkXptG9UvrQoczHd0KYwwDT05Sdw/NUC/KuLEcFnHtQFxZ2so1bsYy121YwMevTYE4vYpuW+Nxc+oILfzRQmoNVeKXt5iLD+6o5lrPH5QnWynj+ioHALvS10dj8SkI8sM3S4H7oP3qFS2RO+1UzGG2hlsFf8gCx6WQN8IFUWyHhhB7HYaMHkFf8BuXKwMKFMOBZCGzWynhDrFYZnUjpyY6v65KYA8G0AKNQ/eUiCQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM0PR04MB5121.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(4636009)(366004)(136003)(39860400002)(376002)(346002)(396003)(451199018)(2906002)(5660300002)(86362001)(44832011)(7416002)(83380400001)(8936002)(30864003)(41300700001)(36756003)(478600001)(6486002)(1076003)(26005)(6512007)(6666004)(186003)(52116002)(6506007)(2616005)(54906003)(4326008)(66476007)(38100700002)(66946007)(8676002)(66556008)(6916009)(316002)(38350700002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: eoMPLfB2wtTqVYwQ4HZnZdlXmZ5xc2+Lk5C/tmRdEUatMOtLRSxSNabYLe703iSc7irGcwqi7/fUzy/7ZoZeXqao2A4Xd01ZsQgrnjHGT3hH8uQN3b6X1i65J+G3v8pJ1Vp67Z4tHT4iBmUThjutiR2Kq7wi8qe8I3sCkLOJEnNsvfcme7HpcTGhAhwDF/F+NjEq37G7la9+/e0Liueuf1U/ndeK8rYIZ/wGDw7Nxb9ctc0LuTunKCHs2ISE1rGtTNMpo5G47JYKsvvKhspTbhzgsA3K0JAVqdQDHcAhIPk8D1Nd21LGYKtOy9TxGm70PF4P17i4xudFD7GMxGSgVvtLLjoqavVFk6g3OspD/Gvw9nSCWih29Z86O4/s0sbQ7Wk75idxFoLB92yZYfbaMz1/7zqQRfLznHxyzYvOd2/NXUPPxY/ec+imCyhKHMxntemP7AfsUY/00BKb90TROhyfuOwU8agaWwSh4d0HY1SRPx6L5bLMm7vefp4kuIu7SlvnIys63zYay5TdVKgJ5whbehCyqB7B2wGRKof72nj81jTZ8+WLDrVeCkE8ObrR7duAl5t1xLFdV1MjEe/lloaBQKjPkueRqkrchDCO89zqXixoc209ygSEq6KjcKf5OIZERh7pdBO+qsrtalAvVhyrboD33GaCXduYI5fAAIOVZF9EQQ0JkC+GOJp55kqv/XE3OcAR1aKrgH1jm/EBvilzruDqR1pIaHEHtVRJGxk49KPJ0hXpobQyzViYb3N47yZqZ7BPth0SFeaD6IlU+43n0DECmSbspdytLTH47HmHqs62OgHBYVOWR7pc8PTIw9dumjoW02LunPIzRHowpvfel6qnCG4fK8Ttd+R1X89GKqiGZcsioOcUw/KgwYhX3zD6/1xTI6XeYmqXA/3mqIyU5OHyHo2ZVRFg00HpJPs/gh9RoVz4GWK0vLThkQ5X0EIAKLCcPJCOQLpSNBJEk8uDpsYxIZ9awHZI+kuX4/vQoOLopvGZNkNSkdk9uUNmnnBwfFLZ9HeZsgh1cJsiNOeadZJc9R8BCNfcj1TXuaPcJkHjy7kgof2P6fGs1iFMx3w6gygsdi49U/Q2j6j5QYDPucFLhoMRsqN01Se8pwfoAnvevaKU+MNiwu/T+3mu2o0C+FuAsf3i1dhRqJp4teJJ6Vln9lxAvhFIK7xeagj/oMWf9b5DLCi/4Hr9n/6T7TR0S8mb+yHLO6yjhOzFaDAXxX/hwvvfJIu+4AXLSiCvTwCgaI7qCH84SN9N16JGaeGI/ayppo0Gx6hQ2TeRe0ajLXO9B0QLSBrd+OOqvFfcbaX3+KkIRWLE2LaNLFBDlOF00cQwDT9/QrE5NMm+T1XtUw7j0U9CJ4i5EaAiIzwujMytIMM4S5TyIUwX5dl5Mn9ZWD6S9BSb6KNYMK6dm0410edcpsow+/6zQv1O/ARsQbRPWmi4srCJORXd108NHCMbS4DQZgY7MzQfhyzhvm1laK6Z6XfOdZsahD4Gj3p6NDytEauPxm+dZ2d47MmAzi+vv0ntLgEqUnh10UvYbkTXB9UFpAaK8y8b4ak5FuzC9uFEZTSt1p4ZsqdOqOOdXMIIfRbRE1cKqKFNBpXZdQ== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: c1d3455b-7ddf-4648-417f-08db02e7f483 X-MS-Exchange-CrossTenant-AuthSource: AM0PR04MB5121.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jan 2023 17:32:26.7875 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: LfyNEeJi6C4TAOFwbAx+BJIqUJmGrweHzVb72tj0OW7AXPdlEMUcb9ODj5SzaDRriAy4abljRMqLdd/1GnqFGQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR04MB7677 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org There are 2 classes of in-tree drivers currently: - those who act upon struct tc_taprio_sched_entry :: gate_mask as if it holds a bit mask of TXQs - those who act upon the gate_mask as if it holds a bit mask of TCs When it comes to the standard, IEEE 802.1Q-2018 does say this in the second paragraph of section 8.6.8.4 Enhancements for scheduled traffic: | A gate control list associated with each Port contains an ordered list | of gate operations. Each gate operation changes the transmission gate | state for the gate associated with each of the Port's traffic class | queues and allows associated control operations to be scheduled. In typically obtuse language, it refers to a "traffic class queue" rather than a "traffic class" or a "queue". But careful reading of 802.1Q clarifies that "traffic class" and "queue" are in fact synonymous (see 8.6.6 Queuing frames): | A queue in this context is not necessarily a single FIFO data structure. | A queue is a record of all frames of a given traffic class awaiting | transmission on a given Bridge Port. The structure of this record is not | specified. i.o.w. their definition of "queue" isn't the Linux TX queue. The gate_mask really is input into taprio via its UAPI as a mask of traffic classes, but taprio_sched_to_offload() converts it into a TXQ mask. The breakdown of drivers which handle TC_SETUP_QDISC_TAPRIO is: - hellcreek, felix, sja1105: these are DSA switches, it's not even very clear what TXQs correspond to, other than purely software constructs. Only the mqprio configuration with 8 TCs and 1 TXQ per TC makes sense. So it's fine to convert these to a gate mask per TC. - enetc: I have the hardware and can confirm that the gate mask is per TC, and affects all TXQs (BD rings) configured for that priority. - igc: in igc_save_qbv_schedule(), the gate_mask is clearly interpreted to be per-TXQ. - tsnep: Gerhard Engleder clarifies that even though this hardware supports at most 1 TXQ per TC, the TXQ indices may be different from the TC values themselves, and it is the TXQ indices that matter to this hardware. So keep it per-TXQ as well. - stmmac: I have a GMAC datasheet, and in the EST section it does specify that the gate events are per TXQ rather than per TC. - lan966x: again, this is a switch, and while not a DSA one, the way in which it implements lan966x_mqprio_add() - by only allowing num_tc == NUM_PRIO_QUEUES (8) - makes it clear to me that TXQs are a purely software construct here as well. They seem to map 1:1 with TCs. - am65_cpsw: from looking at am65_cpsw_est_set_sched_cmds(), I get the impression that the fetch_allow variable is treated like a prio_mask. I haven't studied this driver's interpretation of the prio_tc_map, but that definitely sounds closer to a per-TC gate mask rather than a per-TXQ one. Based on this breakdown, we have 6 drivers with a gate mask per TC and 3 with a gate mask per TXQ. So let's make the gate mask per TXQ the opt-in and the gate mask per TC the default. Benefit from the TC_QUERY_CAPS feature that Jakub suggested we add, and query the device driver before calling the proper ndo_setup_tc(), and figure out if it expects one or the other format. Cc: Horatiu Vultur Cc: Siddharth Vadapalli Cc: Roger Quadros Signed-off-by: Vladimir Oltean Acked-by: Kurt Kanzenbach # hellcreek Reviewed-by: Gerhard Engleder Reviewed-by: Simon Horman --- v3->v4: none v2->v3: adjust commit message in light of what Kurt has said v1->v2: - rewrite commit message - also opt in stmmac and tsnep drivers/net/ethernet/engleder/tsnep_tc.c | 21 +++++++++++++++++ drivers/net/ethernet/intel/igc/igc_main.c | 23 +++++++++++++++++++ drivers/net/ethernet/stmicro/stmmac/hwif.h | 5 ++++ .../net/ethernet/stmicro/stmmac/stmmac_main.c | 2 ++ .../net/ethernet/stmicro/stmmac/stmmac_tc.c | 20 ++++++++++++++++ include/net/pkt_sched.h | 1 + net/sched/sch_taprio.c | 11 ++++++--- 7 files changed, 80 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/engleder/tsnep_tc.c b/drivers/net/ethernet/engleder/tsnep_tc.c index c4c6e1357317..d083e6684f12 100644 --- a/drivers/net/ethernet/engleder/tsnep_tc.c +++ b/drivers/net/ethernet/engleder/tsnep_tc.c @@ -403,12 +403,33 @@ static int tsnep_taprio(struct tsnep_adapter *adapter, return 0; } +static int tsnep_tc_query_caps(struct tsnep_adapter *adapter, + struct tc_query_caps_base *base) +{ + switch (base->type) { + case TC_SETUP_QDISC_TAPRIO: { + struct tc_taprio_caps *caps = base->caps; + + if (!adapter->gate_control) + return -EOPNOTSUPP; + + caps->gate_mask_per_txq = true; + + return 0; + } + default: + return -EOPNOTSUPP; + } +} + int tsnep_tc_setup(struct net_device *netdev, enum tc_setup_type type, void *type_data) { struct tsnep_adapter *adapter = netdev_priv(netdev); switch (type) { + case TC_QUERY_CAPS: + return tsnep_tc_query_caps(adapter, type_data); case TC_SETUP_QDISC_TAPRIO: return tsnep_taprio(adapter, type_data); default: diff --git a/drivers/net/ethernet/intel/igc/igc_main.c b/drivers/net/ethernet/intel/igc/igc_main.c index e86b15efaeb8..cce1dea51f76 100644 --- a/drivers/net/ethernet/intel/igc/igc_main.c +++ b/drivers/net/ethernet/intel/igc/igc_main.c @@ -6205,12 +6205,35 @@ static int igc_tsn_enable_cbs(struct igc_adapter *adapter, return igc_tsn_offload_apply(adapter); } +static int igc_tc_query_caps(struct igc_adapter *adapter, + struct tc_query_caps_base *base) +{ + struct igc_hw *hw = &adapter->hw; + + switch (base->type) { + case TC_SETUP_QDISC_TAPRIO: { + struct tc_taprio_caps *caps = base->caps; + + if (hw->mac.type != igc_i225) + return -EOPNOTSUPP; + + caps->gate_mask_per_txq = true; + + return 0; + } + default: + return -EOPNOTSUPP; + } +} + static int igc_setup_tc(struct net_device *dev, enum tc_setup_type type, void *type_data) { struct igc_adapter *adapter = netdev_priv(dev); switch (type) { + case TC_QUERY_CAPS: + return igc_tc_query_caps(adapter, type_data); case TC_SETUP_QDISC_TAPRIO: return igc_tsn_enable_qbv_scheduling(adapter, type_data); diff --git a/drivers/net/ethernet/stmicro/stmmac/hwif.h b/drivers/net/ethernet/stmicro/stmmac/hwif.h index 592b4067f9b8..16a7421715cb 100644 --- a/drivers/net/ethernet/stmicro/stmmac/hwif.h +++ b/drivers/net/ethernet/stmicro/stmmac/hwif.h @@ -567,6 +567,7 @@ struct tc_cbs_qopt_offload; struct flow_cls_offload; struct tc_taprio_qopt_offload; struct tc_etf_qopt_offload; +struct tc_query_caps_base; struct stmmac_tc_ops { int (*init)(struct stmmac_priv *priv); @@ -580,6 +581,8 @@ struct stmmac_tc_ops { struct tc_taprio_qopt_offload *qopt); int (*setup_etf)(struct stmmac_priv *priv, struct tc_etf_qopt_offload *qopt); + int (*query_caps)(struct stmmac_priv *priv, + struct tc_query_caps_base *base); }; #define stmmac_tc_init(__priv, __args...) \ @@ -594,6 +597,8 @@ struct stmmac_tc_ops { stmmac_do_callback(__priv, tc, setup_taprio, __args) #define stmmac_tc_setup_etf(__priv, __args...) \ stmmac_do_callback(__priv, tc, setup_etf, __args) +#define stmmac_tc_query_caps(__priv, __args...) \ + stmmac_do_callback(__priv, tc, query_caps, __args) struct stmmac_counters; diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c index b7e5af58ab75..17a7ea1cb961 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -5991,6 +5991,8 @@ static int stmmac_setup_tc(struct net_device *ndev, enum tc_setup_type type, struct stmmac_priv *priv = netdev_priv(ndev); switch (type) { + case TC_QUERY_CAPS: + return stmmac_tc_query_caps(priv, priv, type_data); case TC_SETUP_BLOCK: return flow_block_cb_setup_simple(type_data, &stmmac_block_cb_list, diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c index 2cfb18cef1d4..9d55226479b4 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c @@ -1107,6 +1107,25 @@ static int tc_setup_etf(struct stmmac_priv *priv, return 0; } +static int tc_query_caps(struct stmmac_priv *priv, + struct tc_query_caps_base *base) +{ + switch (base->type) { + case TC_SETUP_QDISC_TAPRIO: { + struct tc_taprio_caps *caps = base->caps; + + if (!priv->dma_cap.estsel) + return -EOPNOTSUPP; + + caps->gate_mask_per_txq = true; + + return 0; + } + default: + return -EOPNOTSUPP; + } +} + const struct stmmac_tc_ops dwmac510_tc_ops = { .init = tc_init, .setup_cls_u32 = tc_setup_cls_u32, @@ -1114,4 +1133,5 @@ const struct stmmac_tc_ops dwmac510_tc_ops = { .setup_cls = tc_setup_cls, .setup_taprio = tc_setup_taprio, .setup_etf = tc_setup_etf, + .query_caps = tc_query_caps, }; diff --git a/include/net/pkt_sched.h b/include/net/pkt_sched.h index ace8be520fb0..fd889fc4912b 100644 --- a/include/net/pkt_sched.h +++ b/include/net/pkt_sched.h @@ -176,6 +176,7 @@ struct tc_mqprio_qopt_offload { struct tc_taprio_caps { bool supports_queue_max_sdu:1; + bool gate_mask_per_txq:1; }; struct tc_taprio_sched_entry { diff --git a/net/sched/sch_taprio.c b/net/sched/sch_taprio.c index a9873056ea97..72271bf8cd8b 100644 --- a/net/sched/sch_taprio.c +++ b/net/sched/sch_taprio.c @@ -1217,7 +1217,8 @@ static u32 tc_map_to_queue_mask(struct net_device *dev, u32 tc_mask) static void taprio_sched_to_offload(struct net_device *dev, struct sched_gate_list *sched, - struct tc_taprio_qopt_offload *offload) + struct tc_taprio_qopt_offload *offload, + const struct tc_taprio_caps *caps) { struct sched_entry *entry; int i = 0; @@ -1231,7 +1232,11 @@ static void taprio_sched_to_offload(struct net_device *dev, e->command = entry->command; e->interval = entry->interval; - e->gate_mask = tc_map_to_queue_mask(dev, entry->gate_mask); + if (caps->gate_mask_per_txq) + e->gate_mask = tc_map_to_queue_mask(dev, + entry->gate_mask); + else + e->gate_mask = entry->gate_mask; i++; } @@ -1295,7 +1300,7 @@ static int taprio_enable_offload(struct net_device *dev, } offload->enable = 1; taprio_mqprio_qopt_reconstruct(dev, &offload->mqprio); - taprio_sched_to_offload(dev, sched, offload); + taprio_sched_to_offload(dev, sched, offload, &caps); for (tc = 0; tc < TC_MAX_QUEUE; tc++) offload->max_sdu[tc] = q->max_sdu[tc];