diff for duplicates of <20240329152954.26a7ce75@kernel.org> diff --git a/a/1.txt b/N1/1.txt index 09f6601..7e22d7c 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -162,3 +162,409 @@ And you can validate this before doing any real work. > } -- pw-bot: cr + +X-sender: <netdev+bounces-83478-steffen.klassert=secunet.com@vger.kernel.org> +X-Receiver: <steffen.klassert@secunet.com> ORCPT=rfc822;steffen.klassert@secunet.com NOTIFY=NEVER; X-ExtendedProps=BQAVABYAAgAAAAUAFAARAPDFCS25BAlDktII2g02frgPADUAAABNaWNyb3NvZnQuRXhjaGFuZ2UuVHJhbnNwb3J0LkRpcmVjdG9yeURhdGEuSXNSZXNvdXJjZQIAAAUAagAJAAEAAAAAAAAABQAWAAIAAAUAQwACAAAFAEYABwADAAAABQBHAAIAAAUAEgAPAGIAAAAvbz1zZWN1bmV0L291PUV4Y2hhbmdlIEFkbWluaXN0cmF0aXZlIEdyb3VwIChGWURJQk9IRjIzU1BETFQpL2NuPVJlY2lwaWVudHMvY249U3RlZmZlbiBLbGFzc2VydDY4YwUACwAXAL4AAACheZxkHSGBRqAcAp3ukbifQ049REI2LENOPURhdGFiYXNlcyxDTj1FeGNoYW5nZSBBZG1pbmlzdHJhdGl2ZSBHcm91cCAoRllESUJPSEYyM1NQRExUKSxDTj1BZG1pbmlzdHJhdGl2ZSBHcm91cHMsQ049c2VjdW5ldCxDTj1NaWNyb3NvZnQgRXhjaGFuZ2UsQ049U2VydmljZXMsQ049Q29uZmlndXJhdGlvbixEQz1zZWN1bmV0LERDPWRlBQAOABEABiAS9uuMOkqzwmEZDvWNNQUAHQAPAAwAAABtYngtZXNzZW4tMDIFADwAAgAADwA2AAAATWljcm9zb2Z0LkV4Y2hhbmdlLlRyYW5zcG9ydC5NYWlsUmVjaXBpZW50LkRpc3BsYXlOYW1lDwARAAAAS2xhc3NlcnQsIFN0ZWZmZW4FAAwAAgAABQBsAAIAAAUAWAAXAEoAAADwxQktuQQJQ5LSCNoNNn64Q049S2xhc3NlcnQgU3RlZmZlbixPVT1Vc2VycyxPVT1NaWdyYXRpb24sREM9c2VjdW5ldCxEQz1kZQUAJgACAAEFACIADwAxAAAAQXV0b1Jlc3BvbnNlU3VwcHJlc3M6IDANClRyYW5zbWl0SGlzdG9yeTogRmFsc2UNCg8ALwAAAE1pY3Jvc29mdC5FeGNoYW5nZS5UcmFuc3BvcnQuRXhwYW5zaW9uR3JvdXBUeXBlDwAVAAAATWVtYmVyc0dyb3VwRXhwYW5zaW9uBQAjAAIAAQ== +X-CreatedBy: MSExchange15 +X-HeloDomain: a.mx.secunet.com +X-ExtendedProps: BQBjAAoAkQ1rGbMv3AgFAGEACAABAAAABQA3AAIAAA8APAAAAE1pY3Jvc29mdC5FeGNoYW5nZS5UcmFuc3BvcnQuTWFpbFJlY2lwaWVudC5Pcmdhbml6YXRpb25TY29wZREAAAAAAAAAAAAAAAAAAAAAAAUASQACAAEFAAQAFCABAAAAHAAAAHN0ZWZmZW4ua2xhc3NlcnRAc2VjdW5ldC5jb20FAAYAAgABBQApAAIAAQ8ACQAAAENJQXVkaXRlZAIAAQUAAgAHAAEAAAAFAAMABwAAAAAABQAFAAIAAQUAYgAKAFIAAADMigAABQBkAA8AAwAAAEh1Yg== +X-Source: SMTP:Default MBX-ESSEN-01 +X-SourceIPAddress: 62.96.220.36 +X-EndOfInjectedXHeaders: 20181 +Received: from cas-essen-02.secunet.de (10.53.40.202) by + mbx-essen-01.secunet.de (10.53.40.197) with Microsoft SMTP Server + (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id + 15.1.2507.35; Fri, 29 Mar 2024 23:30:12 +0100 +Received: from a.mx.secunet.com (62.96.220.36) by cas-essen-02.secunet.de + (10.53.40.202) with Microsoft SMTP Server (version=TLS1_2, + cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35 via Frontend + Transport; Fri, 29 Mar 2024 23:30:12 +0100 +Received: from localhost (localhost [127.0.0.1]) + by a.mx.secunet.com (Postfix) with ESMTP id 870DE20883 + for <steffen.klassert@secunet.com>; Fri, 29 Mar 2024 23:30:12 +0100 (CET) +X-Virus-Scanned: by secunet +X-Spam-Flag: NO +X-Spam-Score: -3.099 +X-Spam-Level: +X-Spam-Status: No, score=-3.099 tagged_above=-999 required=2.1 + tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.099, DKIM_SIGNED=0.1, + DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, MAILING_LIST_MULTI=-1, + RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] + autolearn=unavailable autolearn_force=no +Authentication-Results: a.mx.secunet.com (amavisd-new); + dkim=pass (2048-bit key) header.d=kernel.org +Received: from a.mx.secunet.com ([127.0.0.1]) + by localhost (a.mx.secunet.com [127.0.0.1]) (amavisd-new, port 10024) + with ESMTP id 66TQ_oaDF-3X for <steffen.klassert@secunet.com>; + Fri, 29 Mar 2024 23:30:11 +0100 (CET) +Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=147.75.80.249; helo=am.mirrors.kernel.org; envelope-from=netdev+bounces-83478-steffen.klassert=secunet.com@vger.kernel.org; receiver=steffen.klassert@secunet.com +DKIM-Filter: OpenDKIM Filter v2.11.0 a.mx.secunet.com D1BDB208AC +Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249]) + (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by a.mx.secunet.com (Postfix) with ESMTPS id D1BDB208AC + for <steffen.klassert@secunet.com>; Fri, 29 Mar 2024 23:30:11 +0100 (CET) +Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) + (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by am.mirrors.kernel.org (Postfix) with ESMTPS id 5B4B71F22D96 + for <steffen.klassert@secunet.com>; Fri, 29 Mar 2024 22:30:11 +0000 (UTC) +Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) + by smtp.subspace.kernel.org (Postfix) with ESMTP id 5B38413DDA5; + Fri, 29 Mar 2024 22:29:56 +0000 (UTC) +Authentication-Results: smtp.subspace.kernel.org; + dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="af3tEf4r" +X-Original-To: netdev@vger.kernel.org +Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) + (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by smtp.subspace.kernel.org (Postfix) with ESMTPS id BF6BB28DC1 + for <netdev@vger.kernel.org>; Fri, 29 Mar 2024 22:29:55 +0000 (UTC) +Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 +ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; + t=1711751395; cv=none; b=r8+B1IFFag2HuI6zBBZXeH+ixu4+v7LcY5wOF3/6wgJ223E0kn3xcKcwo+b9S0QAED6F64X45+Ly5CTR1T3QpysOskVw+gmCEHA7C6kqyn9w3eNJ9i4Hl/Myvb/UKIYrlUrLJA2ZIcn/zPzyZPRsgS1BxBM9vsbq2bHqgBZeDjM= +ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; + s=arc-20240116; t=1711751395; c=relaxed/simple; + bh=YclD2gFKAd0KYU/nqrMwp6tntz6Bp0xkpGNnD7iuj3c=; + h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References: + MIME-Version:Content-Type; b=rJ7Bn5B+eJPtxb4RNqsOXTzMjoxUUJ5pI/JOpQlNhT4ZcDDv6O01CZ1g3k27TriDuD2V9f4K/PGRphgNiz/gM/TFCcH5mAojrujO3pTOIJTI+aIIUz1rLn0diYOJV7K7HUs8cBglYDPH5ri6aPJNGmrNMWJbh0ZerjwDrcQhuoc= +ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=af3tEf4r; arc=none smtp.client-ip=10.30.226.201 +Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2A38DC433F1; + Fri, 29 Mar 2024 22:29:55 +0000 (UTC) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; + s=k20201202; t=1711751395; + bh=YclD2gFKAd0KYU/nqrMwp6tntz6Bp0xkpGNnD7iuj3c=; + h=Date:From:To:Cc:Subject:In-Reply-To:References:From; + b=af3tEf4riCb4f2NQ149pjvDrIXXmmP43YUOkyHbXZ+M94QTqDI0JCGEF6C9SwDi2v + UbNo6lur4NhXefe9RSrYlvWkEgyygoEXlsnzAgBuwTthmMcxP2nKYOexYi7y8EYgAU + s+LYfSGZY1szJRSJJk68i3GvMqw/Vxj3slvg7t75/MisPpwS+jb6RoyLsnYv0RKoVL + 12qu5ji4XYH50ruUZsUfcfxQseOwTzwtSilm9SNsMlGhgFPnOmb3sh5+EZ9kkw1axQ + GhY5mxcMFxbnq+OPRpafTOvZpCjxq7fMQ4RgncWl/e6+tXnFeaTluLTysE2h8/dy/H + aDL1nOLZRHWXA== +Date: Fri, 29 Mar 2024 15:29:54 -0700 +From: Jakub Kicinski <kuba@kernel.org> +To: Wojciech Drewek <wojciech.drewek@intel.com> +Cc: netdev@vger.kernel.org, intel-wired-lan@lists.osuosl.org, + simon.horman@corigine.com, anthony.l.nguyen@intel.com, edumazet@google.com, + pabeni@redhat.com, idosch@nvidia.com, przemyslaw.kitszel@intel.com, + marcin.szycik@linux.intel.com +Subject: Re: [PATCH net-next 2/3] ethtool: Introduce max power support +Message-ID: <20240329152954.26a7ce75@kernel.org> +In-Reply-To: <20240329092321.16843-3-wojciech.drewek@intel.com> +References: <20240329092321.16843-1-wojciech.drewek@intel.com> + <20240329092321.16843-3-wojciech.drewek@intel.com> +Precedence: bulk +X-Mailing-List: netdev@vger.kernel.org +List-Id: <netdev.vger.kernel.org> +List-Subscribe: <mailto:netdev+subscribe@vger.kernel.org> +List-Unsubscribe: <mailto:netdev+unsubscribe@vger.kernel.org> +MIME-Version: 1.0 +Content-Type: text/plain; charset="US-ASCII" +Content-Transfer-Encoding: 7bit +Return-Path: netdev+bounces-83478-steffen.klassert=secunet.com@vger.kernel.org +X-MS-Exchange-Organization-OriginalArrivalTime: 29 Mar 2024 22:30:12.5869 + (UTC) +X-MS-Exchange-Organization-Network-Message-Id: b874bb8e-c3ad-4cd8-d138-08dc503fcc9e +X-MS-Exchange-Organization-OriginalClientIPAddress: 62.96.220.36 +X-MS-Exchange-Organization-OriginalServerIPAddress: 10.53.40.202 +X-MS-Exchange-Organization-Cross-Premises-Headers-Processed: cas-essen-02.secunet.de +X-MS-Exchange-Organization-OrderedPrecisionLatencyInProgress: LSRV=mbx-essen-01.secunet.de:TOTAL-HUB=0.416|SMR=0.329(SMRDE=0.004|SMRC=0.325(SMRCL=0.104|X-SMRCR=0.325))|CAT=0.086(CATRESL=0.022 + (CATRESLP2R=0.018)|CATORES=0.058(CATRS=0.058(CATRS-Transport Rule + Agent=0.001|CATRS-Index Routing Agent=0.056 + ))|CATORT=0.001(CATRT=0.001));2024-03-29T22:30:13.029Z +X-MS-Exchange-Forest-ArrivalHubServer: mbx-essen-01.secunet.de +X-MS-Exchange-Organization-AuthSource: cas-essen-02.secunet.de +X-MS-Exchange-Organization-AuthAs: Anonymous +X-MS-Exchange-Organization-FromEntityHeader: Internet +X-MS-Exchange-Organization-OriginalSize: 12132 +X-MS-Exchange-Organization-HygienePolicy: Standard +X-MS-Exchange-Organization-MessageLatency: SRV=cas-essen-02.secunet.de:TOTAL-FE=25.002|SMR=0.025(SMRPI=0.022(SMRPI-FrontendProxyAgent=0.022))|SMS=0.002 +X-MS-Exchange-Organization-Recipient-Limit-Verified: True +X-MS-Exchange-Organization-TotalRecipientCount: 1 +X-MS-Exchange-Organization-Rules-Execution-History: 0b0cf904-14ac-4724-8bdf-482ee6223cf2%%%fd34672d-751c-45ae-a963-ed177fcabe23%%%d8080257-b0c3-47b4-b0db-23bc0c8ddb3c%%%95e591a2-5d7d-4afa-b1d0-7573d6c0a5d9%%%f7d0f6bc-4dcc-4876-8c5d-b3d6ddbb3d55%%%16355082-c50b-4214-9c7d-d39575f9f79b +X-MS-Exchange-Forest-RulesExecuted: mbx-essen-01 +X-MS-Exchange-Organization-RulesExecuted: mbx-essen-01 +X-MS-Exchange-Forest-IndexAgent-0: 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 + 9cNoyYduWU5TGX4Wm7+XTi7wOxmSP4UbN8xP1fgdwKtsCjwvMqks72 + I8pmABJZTzCuEbA10aczJD6fpHnoH936Hah0kYl3HwIS8xLy9l6XWJ + zwtNdocyCmpc5wanIvxBIfChQ9i+SEtFVpTRyIN6l+gVjcFzDQcIxR + AwFIJmTOUk/E+aRBYQtZQLq3gBixfqdAlVo7VZKuexIl7KY9WgLnDm + NC/nKtX7SoaQOVxdCTWC2BLLHx1bSenxAbMD5T3afnjUIoDTru+msU + DyFLh75C6A1mxES5nMQ70V5k1liiKlhTDZeGYpah4xfsTOJ8m5JCF/ + YMunchUGy2ibKDNEM4zw6TCDhbMlFx4ouN+S+JK3M8f4RZopiG/SmB + iZ0SlJ/ikVaSMModztFABGUuKDGGWBe4mRkSVxn7AXGqEvCJZ/Hxs4 + rGTDNyR/J4eW5PlIjTj/TzPyAQB5OYdARCUZt6pMNuSEZN6pqodyK4 + 2k5fVJrWttdPRksMyzGZ32WcrnXAjgGvZpFTAKlj7KpwqUe8szjCkl + +a3MLRzrZZTgcMeiEDmPOHxwHpUJH0bNDB9eWQLnyXTSRZHkirDbJH + VwiKyMcnLKaR/PyNXSKMRF6tNGtUk49kliGvCpmtGHF0dw7HlmDP35 + +czC10mS4/InmOKdjnAA0zvPt4D/AsaXde/OJAAAAQrOAjw/eG1sIH + ZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi0xNiI/Pg0KPEVtYWls + U2V0Pg0KICA8VmVyc2lvbj4xNS4wLjAuMDwvVmVyc2lvbj4NCiAgPE + VtYWlscz4NCiAgICA8RW1haWwgU3RhcnRJbmRleD0iMTE4MyI+DQog + ICAgICA8RW1haWxTdHJpbmc+bWFyY2luLnN6eWNpa0BsaW51eC5pbn + RlbC5jb208L0VtYWlsU3RyaW5nPg0KICAgIDwvRW1haWw+DQogICAg + PEVtYWlsIFN0YXJ0SW5kZXg9IjEyNDkiPg0KICAgICAgPEVtYWlsU3 + RyaW5nPndvamNpZWNoLmRyZXdla0BpbnRlbC5jb208L0VtYWlsU3Ry + aW5nPg0KICAgIDwvRW1haWw+DQogIDwvRW1haWxzPg0KPC9FbWFpbF + NldD4BDIUHPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRm + LTE2Ij8+DQo8Q29udGFjdFNldD4NCiAgPFZlcnNpb24+MTUuMC4wLj + A8L1ZlcnNpb24+DQogIDxDb250YWN0cz4NCiAgICA8Q29udGFjdCBT + dGFydEluZGV4PSIxMTY4Ij4NCiAgICAgIDxQZXJzb24gU3RhcnRJbm + RleD0iMTE2OCI+DQogICAgICAgIDxQZXJzb25TdHJpbmc+TWFyY2lu + PC9QZXJzb25TdHJpbmc+DQogICAgICA8L1BlcnNvbj4NCiAgICAgID + xFbWFpbHM+DQogICAgICAgIDxFbWFpbCBTdGFydEluZGV4PSIxMTgz + Ij4NCiAgICAgICAgICA8RW1haWxTdHJpbmc+bWFyY2luLnN6eWNpa0 + BsaW51eC5pbnRlbC5jb208L0VtYWlsU3RyaW5nPg0KICAgICAgICA8 + L0VtYWlsPg0KICAgICAgPC9FbWFpbHM+DQogICAgICA8Q29udGFjdF + N0cmluZz5NYXJjaW4gU3p5Y2lrICZsdDttYXJjaW4uc3p5Y2lrQGxp + bnV4LmludGVsLmNvbTwvQ29udGFjdFN0cmluZz4NCiAgICA8L0Nvbn + RhY3Q+DQogICAgPENvbnRhY3QgU3RhcnRJbmRleD0iMTIzMiI+DQog + ICAgICA8UGVyc29uIFN0YXJ0SW5kZXg9IjEyMzIiPg0KICAgICAgIC + A8UGVyc29uU3RyaW5nPldvamNpZWNoIERyZXdlazwvUGVyc29uU3Ry + aW5nPg0KICAgICAgPC9QZXJzb24+DQogICAgICA8RW1haWxzPg0KIC + AgICAgICA8RW1haWwgU3RhcnRJbmRleD0iMTI0OSI+DQogICAgICAg + ICAgPEVtYWlsU3RyaW5nPndvamNpZWNoLmRyZXdla0BpbnRlbC5jb2 + 08L0VtYWlsU3RyaW5nPg0KICAgICAgICA8L0VtYWlsPg0KICAgICAg + PC9FbWFpbHM+DQogICAgICA8Q29udGFjdFN0cmluZz5Xb2pjaWVjaC + BEcmV3ZWsgJmx0O3dvamNpZWNoLmRyZXdla0BpbnRlbC5jb208L0Nv + bnRhY3RTdHJpbmc+DQogICAgPC9Db250YWN0Pg0KICA8L0NvbnRhY3 + RzPg0KPC9Db250YWN0U2V0PgEOzwFSZXRyaWV2ZXJPcGVyYXRvciwx + MCwyO1JldHJpZXZlck9wZXJhdG9yLDExLDM7UG9zdERvY1BhcnNlck + 9wZXJhdG9yLDEwLDE7UG9zdERvY1BhcnNlck9wZXJhdG9yLDExLDA7 + UG9zdFdvcmRCcmVha2VyRGlhZ25vc3RpY09wZXJhdG9yLDEwLDc7UG + 9zdFdvcmRCcmVha2VyRGlhZ25vc3RpY09wZXJhdG9yLDExLDA7VHJh + bnNwb3J0V3JpdGVyUHJvZHVjZXIsMjAsMjg= +X-MS-Exchange-Forest-IndexAgent: 1 4643 +X-MS-Exchange-Forest-EmailMessageHash: 10B105DC +X-MS-Exchange-Forest-Language: en +X-MS-Exchange-Organization-Processed-By-Journaling: Journal Agent + +On Fri, 29 Mar 2024 10:23:20 +0100 Wojciech Drewek wrote: +> Some modules use nonstandard power levels. Adjust ethtool +> module implementation to support new attributes that will allow user +> to change maximum power. +> +> Add three new get attributes: +> ETHTOOL_A_MODULE_MAX_POWER_SET (used for set as well) - currently set +> maximum power in the cage + +1) I'd keep the ETHTOOL_A_MODULE_POWER_ prefix, consistently. + +2) The _SET makes it sound like an action. Can we go with + ETHTOOL_A_MODULE_POWER_MAX ? Or ETHTOOL_A_MODULE_POWER_LIMIT? + Yes, ETHTOOL_A_MODULE_POWER_LIMIT + ETHTOOL_A_MODULE_POWER_MAX + ETHTOOL_A_MODULE_POWER_MIN + would sound pretty good to me. + +> ETHTOOL_A_MODULE_MIN_POWER_ALLOWED - minimum power allowed in the +> cage reported by device +> ETHTOOL_A_MODULE_MAX_POWER_ALLOWED - maximum power allowed in the +> cage reported by device +> +> Add two new set attributes: +> ETHTOOL_A_MODULE_MAX_POWER_SET (used for get as well) - change +> maximum power in the cage to the given value (milliwatts) +> ETHTOOL_A_MODULE_MAX_POWER_RESET - reset maximum power setting to the +> default value +> +> Reviewed-by: Marcin Szycik <marcin.szycik@linux.intel.com> +> Signed-off-by: Wojciech Drewek <wojciech.drewek@intel.com> +> --- +> include/linux/ethtool.h | 17 +++++-- +> include/uapi/linux/ethtool_netlink.h | 4 ++ +> net/ethtool/module.c | 74 ++++++++++++++++++++++++++-- +> net/ethtool/netlink.h | 2 +- +> 4 files changed, 87 insertions(+), 10 deletions(-) +> +> diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h +> index f3af6b31c9f1..74ed8997443a 100644 +> --- a/include/linux/ethtool.h +> +++ b/include/linux/ethtool.h +> @@ -510,10 +510,18 @@ struct ethtool_module_eeprom { +> * @policy: The power mode policy enforced by the host for the plug-in module. +> * @mode: The operational power mode of the plug-in module. Should be filled by +> * device drivers on get operations. +> + * @min_pwr_allowed: minimum power allowed in the cage reported by device +> + * @max_pwr_allowed: maximum power allowed in the cage reported by device +> + * @max_pwr_set: maximum power currently set in the cage +> + * @max_pwr_reset: restore default minimum power +> */ +> struct ethtool_module_power_params { +> enum ethtool_module_power_mode_policy policy; +> enum ethtool_module_power_mode mode; +> + u32 min_pwr_allowed; +> + u32 max_pwr_allowed; +> + u32 max_pwr_set; +> + u8 max_pwr_reset; + +bool ? + +> diff --git a/include/uapi/linux/ethtool_netlink.h b/include/uapi/linux/ethtool_netlink.h +> index 3f89074aa06c..f7cd446b2a83 100644 +> --- a/include/uapi/linux/ethtool_netlink.h +> +++ b/include/uapi/linux/ethtool_netlink.h +> @@ -882,6 +882,10 @@ enum { +> ETHTOOL_A_MODULE_HEADER, /* nest - _A_HEADER_* */ +> ETHTOOL_A_MODULE_POWER_MODE_POLICY, /* u8 */ +> ETHTOOL_A_MODULE_POWER_MODE, /* u8 */ +> + ETHTOOL_A_MODULE_MAX_POWER_SET, /* u32 */ +> + ETHTOOL_A_MODULE_MIN_POWER_ALLOWED, /* u32 */ +> + ETHTOOL_A_MODULE_MAX_POWER_ALLOWED, /* u32 */ +> + ETHTOOL_A_MODULE_MAX_POWER_RESET, /* u8 */ + +flag ? + +> @@ -77,6 +86,7 @@ static int module_fill_reply(struct sk_buff *skb, +> const struct ethnl_reply_data *reply_base) +> { +> const struct module_reply_data *data = MODULE_REPDATA(reply_base); +> + u32 temp; + +tmp ? temp sounds too much like temperature in context of power + +> static int +> ethnl_set_module(struct ethnl_req_info *req_info, struct genl_info *info) +> { +> struct ethtool_module_power_params power = {}; +> struct ethtool_module_power_params power_new; +> - const struct ethtool_ops *ops; +> struct net_device *dev = req_info->dev; +> struct nlattr **tb = info->attrs; +> + const struct ethtool_ops *ops; +> int ret; +> + bool mod; +> +> ops = dev->ethtool_ops; +> +> - power_new.policy = nla_get_u8(tb[ETHTOOL_A_MODULE_POWER_MODE_POLICY]); +> ret = ops->get_module_power_cfg(dev, &power, info->extack); +> if (ret < 0) +> return ret; +> +> - if (power_new.policy == power.policy) +> + power_new.max_pwr_set = power.max_pwr_set; +> + power_new.policy = power.policy; +> + +> + ethnl_update_u32(&power_new.max_pwr_set, +> + tb[ETHTOOL_A_MODULE_MAX_POWER_SET], &mod); +> + if (mod) { + +I think we can use if (tb[ETHTOOL_A_MODULE_MAX_POWER_SET]) here +Less error prone for future additions. + +> + if (power_new.max_pwr_set > power.max_pwr_allowed) { +> + NL_SET_ERR_MSG(info->extack, "Provided value is higher than maximum allowed"); + +NL_SET_ERR_MSG_ATTR() to point at the bad attribute. + +> + return -EINVAL; + +ERANGE? + +> + } else if (power_new.max_pwr_set < power.min_pwr_allowed) { +> + NL_SET_ERR_MSG(info->extack, "Provided value is lower than minimum allowed"); +> + return -EINVAL; +> + } +> + } +> + +> + ethnl_update_policy(&power_new.policy, +> + tb[ETHTOOL_A_MODULE_POWER_MODE_POLICY], &mod); +> + ethnl_update_u8(&power_new.max_pwr_reset, +> + tb[ETHTOOL_A_MODULE_MAX_POWER_RESET], &mod); + +I reckon reset should not be allowed if none of the max_pwr values +are set (i.e. most likely driver doesn't support the config)? + +> + if (!mod) +> return 0; +> +> + if (power_new.max_pwr_reset && power_new.max_pwr_set) { + +Mmm. How is that gonna work? The driver is going to set max_pwr_set +to what's currently configured. So the user is expected to send +ETHTOOL_A_MODULE_MAX_POWER_SET = 0 +ETHTOOL_A_MODULE_MAX_POWER_RESET = 1 +to reset? + +Just: + + if (tb[ETHTOOL_A_MODULE_MAX_POWER_RESET] && + tb[ETHTOOL_A_MODULE_MAX_POWER_SET]) + +And you can validate this before doing any real work. + +> + NL_SET_ERR_MSG(info->extack, "Maximum power set and reset cannot be used at the same time"); +> + return 0; +> + } +> + +> ret = ops->set_module_power_cfg(dev, &power_new, info->extack); +> return ret < 0 ? ret : 1; +> } +-- +pw-bot: cr diff --git a/a/content_digest b/N1/content_digest index df38957..414e639 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -178,6 +178,412 @@ "> \treturn ret < 0 ? ret : 1;\n" "> }\n" "-- \n" + "pw-bot: cr\n" + "\n" + "X-sender: <netdev+bounces-83478-steffen.klassert=secunet.com@vger.kernel.org>\n" + "X-Receiver: <steffen.klassert@secunet.com> ORCPT=rfc822;steffen.klassert@secunet.com NOTIFY=NEVER; X-ExtendedProps=BQAVABYAAgAAAAUAFAARAPDFCS25BAlDktII2g02frgPADUAAABNaWNyb3NvZnQuRXhjaGFuZ2UuVHJhbnNwb3J0LkRpcmVjdG9yeURhdGEuSXNSZXNvdXJjZQIAAAUAagAJAAEAAAAAAAAABQAWAAIAAAUAQwACAAAFAEYABwADAAAABQBHAAIAAAUAEgAPAGIAAAAvbz1zZWN1bmV0L291PUV4Y2hhbmdlIEFkbWluaXN0cmF0aXZlIEdyb3VwIChGWURJQk9IRjIzU1BETFQpL2NuPVJlY2lwaWVudHMvY249U3RlZmZlbiBLbGFzc2VydDY4YwUACwAXAL4AAACheZxkHSGBRqAcAp3ukbifQ049REI2LENOPURhdGFiYXNlcyxDTj1FeGNoYW5nZSBBZG1pbmlzdHJhdGl2ZSBHcm91cCAoRllESUJPSEYyM1NQRExUKSxDTj1BZG1pbmlzdHJhdGl2ZSBHcm91cHMsQ049c2VjdW5ldCxDTj1NaWNyb3NvZnQgRXhjaGFuZ2UsQ049U2VydmljZXMsQ049Q29uZmlndXJhdGlvbixEQz1zZWN1bmV0LERDPWRlBQAOABEABiAS9uuMOkqzwmEZDvWNNQUAHQAPAAwAAABtYngtZXNzZW4tMDIFADwAAgAADwA2AAAATWljcm9zb2Z0LkV4Y2hhbmdlLlRyYW5zcG9ydC5NYWlsUmVjaXBpZW50LkRpc3BsYXlOYW1lDwARAAAAS2xhc3NlcnQsIFN0ZWZmZW4FAAwAAgAABQBsAAIAAAUAWAAXAEoAAADwxQktuQQJQ5LSCNoNNn64Q049S2xhc3NlcnQgU3RlZmZlbixPVT1Vc2VycyxPVT1NaWdyYXRpb24sREM9c2VjdW5ldCxEQz1kZQUAJgACAAEFACIADwAxAAAAQXV0b1Jlc3BvbnNlU3VwcHJlc3M6IDANClRyYW5zbWl0SGlzdG9yeTogRmFsc2UNCg8ALwAAAE1pY3Jvc29mdC5FeGNoYW5nZS5UcmFuc3BvcnQuRXhwYW5zaW9uR3JvdXBUeXBlDwAVAAAATWVtYmVyc0dyb3VwRXhwYW5zaW9uBQAjAAIAAQ==\n" + "X-CreatedBy: MSExchange15\n" + "X-HeloDomain: a.mx.secunet.com\n" + "X-ExtendedProps: BQBjAAoAkQ1rGbMv3AgFAGEACAABAAAABQA3AAIAAA8APAAAAE1pY3Jvc29mdC5FeGNoYW5nZS5UcmFuc3BvcnQuTWFpbFJlY2lwaWVudC5Pcmdhbml6YXRpb25TY29wZREAAAAAAAAAAAAAAAAAAAAAAAUASQACAAEFAAQAFCABAAAAHAAAAHN0ZWZmZW4ua2xhc3NlcnRAc2VjdW5ldC5jb20FAAYAAgABBQApAAIAAQ8ACQAAAENJQXVkaXRlZAIAAQUAAgAHAAEAAAAFAAMABwAAAAAABQAFAAIAAQUAYgAKAFIAAADMigAABQBkAA8AAwAAAEh1Yg==\n" + "X-Source: SMTP:Default MBX-ESSEN-01\n" + "X-SourceIPAddress: 62.96.220.36\n" + "X-EndOfInjectedXHeaders: 20181\n" + "Received: from cas-essen-02.secunet.de (10.53.40.202) by\n" + " mbx-essen-01.secunet.de (10.53.40.197) with Microsoft SMTP Server\n" + " (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id\n" + " 15.1.2507.35; Fri, 29 Mar 2024 23:30:12 +0100\n" + "Received: from a.mx.secunet.com (62.96.220.36) by cas-essen-02.secunet.de\n" + " (10.53.40.202) with Microsoft SMTP Server (version=TLS1_2,\n" + " cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35 via Frontend\n" + " Transport; Fri, 29 Mar 2024 23:30:12 +0100\n" + "Received: from localhost (localhost [127.0.0.1])\n" + "\tby a.mx.secunet.com (Postfix) with ESMTP id 870DE20883\n" + "\tfor <steffen.klassert@secunet.com>; Fri, 29 Mar 2024 23:30:12 +0100 (CET)\n" + "X-Virus-Scanned: by secunet\n" + "X-Spam-Flag: NO\n" + "X-Spam-Score: -3.099\n" + "X-Spam-Level:\n" + "X-Spam-Status: No, score=-3.099 tagged_above=-999 required=2.1\n" + "\ttests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.099, DKIM_SIGNED=0.1,\n" + "\tDKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, MAILING_LIST_MULTI=-1,\n" + "\tRCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001]\n" + "\tautolearn=unavailable autolearn_force=no\n" + "Authentication-Results: a.mx.secunet.com (amavisd-new);\n" + "\tdkim=pass (2048-bit key) header.d=kernel.org\n" + "Received: from a.mx.secunet.com ([127.0.0.1])\n" + "\tby localhost (a.mx.secunet.com [127.0.0.1]) (amavisd-new, port 10024)\n" + "\twith ESMTP id 66TQ_oaDF-3X for <steffen.klassert@secunet.com>;\n" + "\tFri, 29 Mar 2024 23:30:11 +0100 (CET)\n" + "Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=147.75.80.249; helo=am.mirrors.kernel.org; envelope-from=netdev+bounces-83478-steffen.klassert=secunet.com@vger.kernel.org; receiver=steffen.klassert@secunet.com \n" + "DKIM-Filter: OpenDKIM Filter v2.11.0 a.mx.secunet.com D1BDB208AC\n" + "Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])\n" + "\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n" + "\t(No client certificate requested)\n" + "\tby a.mx.secunet.com (Postfix) with ESMTPS id D1BDB208AC\n" + "\tfor <steffen.klassert@secunet.com>; Fri, 29 Mar 2024 23:30:11 +0100 (CET)\n" + "Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140])\n" + "\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n" + "\t(No client certificate requested)\n" + "\tby am.mirrors.kernel.org (Postfix) with ESMTPS id 5B4B71F22D96\n" + "\tfor <steffen.klassert@secunet.com>; Fri, 29 Mar 2024 22:30:11 +0000 (UTC)\n" + "Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])\n" + "\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 5B38413DDA5;\n" + "\tFri, 29 Mar 2024 22:29:56 +0000 (UTC)\n" + "Authentication-Results: smtp.subspace.kernel.org;\n" + "\tdkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=\"af3tEf4r\"\n" + "X-Original-To: netdev@vger.kernel.org\n" + "Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])\n" + "\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n" + "\t(No client certificate requested)\n" + "\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id BF6BB28DC1\n" + "\tfor <netdev@vger.kernel.org>; Fri, 29 Mar 2024 22:29:55 +0000 (UTC)\n" + "Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201\n" + "ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n" + "\tt=1711751395; cv=none; b=r8+B1IFFag2HuI6zBBZXeH+ixu4+v7LcY5wOF3/6wgJ223E0kn3xcKcwo+b9S0QAED6F64X45+Ly5CTR1T3QpysOskVw+gmCEHA7C6kqyn9w3eNJ9i4Hl/Myvb/UKIYrlUrLJA2ZIcn/zPzyZPRsgS1BxBM9vsbq2bHqgBZeDjM=\n" + "ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org;\n" + "\ts=arc-20240116; t=1711751395; c=relaxed/simple;\n" + "\tbh=YclD2gFKAd0KYU/nqrMwp6tntz6Bp0xkpGNnD7iuj3c=;\n" + "\th=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References:\n" + "\t MIME-Version:Content-Type; b=rJ7Bn5B+eJPtxb4RNqsOXTzMjoxUUJ5pI/JOpQlNhT4ZcDDv6O01CZ1g3k27TriDuD2V9f4K/PGRphgNiz/gM/TFCcH5mAojrujO3pTOIJTI+aIIUz1rLn0diYOJV7K7HUs8cBglYDPH5ri6aPJNGmrNMWJbh0ZerjwDrcQhuoc=\n" + "ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=af3tEf4r; arc=none smtp.client-ip=10.30.226.201\n" + "Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2A38DC433F1;\n" + "\tFri, 29 Mar 2024 22:29:55 +0000 (UTC)\n" + "DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;\n" + "\ts=k20201202; t=1711751395;\n" + "\tbh=YclD2gFKAd0KYU/nqrMwp6tntz6Bp0xkpGNnD7iuj3c=;\n" + "\th=Date:From:To:Cc:Subject:In-Reply-To:References:From;\n" + "\tb=af3tEf4riCb4f2NQ149pjvDrIXXmmP43YUOkyHbXZ+M94QTqDI0JCGEF6C9SwDi2v\n" + "\t UbNo6lur4NhXefe9RSrYlvWkEgyygoEXlsnzAgBuwTthmMcxP2nKYOexYi7y8EYgAU\n" + "\t s+LYfSGZY1szJRSJJk68i3GvMqw/Vxj3slvg7t75/MisPpwS+jb6RoyLsnYv0RKoVL\n" + "\t 12qu5ji4XYH50ruUZsUfcfxQseOwTzwtSilm9SNsMlGhgFPnOmb3sh5+EZ9kkw1axQ\n" + "\t GhY5mxcMFxbnq+OPRpafTOvZpCjxq7fMQ4RgncWl/e6+tXnFeaTluLTysE2h8/dy/H\n" + "\t aDL1nOLZRHWXA==\n" + "Date: Fri, 29 Mar 2024 15:29:54 -0700\n" + "From: Jakub Kicinski <kuba@kernel.org>\n" + "To: Wojciech Drewek <wojciech.drewek@intel.com>\n" + "Cc: netdev@vger.kernel.org, intel-wired-lan@lists.osuosl.org,\n" + " simon.horman@corigine.com, anthony.l.nguyen@intel.com, edumazet@google.com,\n" + " pabeni@redhat.com, idosch@nvidia.com, przemyslaw.kitszel@intel.com,\n" + " marcin.szycik@linux.intel.com\n" + "Subject: Re: [PATCH net-next 2/3] ethtool: Introduce max power support\n" + "Message-ID: <20240329152954.26a7ce75@kernel.org>\n" + "In-Reply-To: <20240329092321.16843-3-wojciech.drewek@intel.com>\n" + "References: <20240329092321.16843-1-wojciech.drewek@intel.com>\n" + "\t<20240329092321.16843-3-wojciech.drewek@intel.com>\n" + "Precedence: bulk\n" + "X-Mailing-List: netdev@vger.kernel.org\n" + "List-Id: <netdev.vger.kernel.org>\n" + "List-Subscribe: <mailto:netdev+subscribe@vger.kernel.org>\n" + "List-Unsubscribe: <mailto:netdev+unsubscribe@vger.kernel.org>\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=\"US-ASCII\"\n" + "Content-Transfer-Encoding: 7bit\n" + "Return-Path: netdev+bounces-83478-steffen.klassert=secunet.com@vger.kernel.org\n" + "X-MS-Exchange-Organization-OriginalArrivalTime: 29 Mar 2024 22:30:12.5869\n" + " (UTC)\n" + "X-MS-Exchange-Organization-Network-Message-Id: b874bb8e-c3ad-4cd8-d138-08dc503fcc9e\n" + "X-MS-Exchange-Organization-OriginalClientIPAddress: 62.96.220.36\n" + "X-MS-Exchange-Organization-OriginalServerIPAddress: 10.53.40.202\n" + "X-MS-Exchange-Organization-Cross-Premises-Headers-Processed: cas-essen-02.secunet.de\n" + "X-MS-Exchange-Organization-OrderedPrecisionLatencyInProgress: LSRV=mbx-essen-01.secunet.de:TOTAL-HUB=0.416|SMR=0.329(SMRDE=0.004|SMRC=0.325(SMRCL=0.104|X-SMRCR=0.325))|CAT=0.086(CATRESL=0.022\n" + " (CATRESLP2R=0.018)|CATORES=0.058(CATRS=0.058(CATRS-Transport Rule\n" + " Agent=0.001|CATRS-Index Routing Agent=0.056\n" + " ))|CATORT=0.001(CATRT=0.001));2024-03-29T22:30:13.029Z\n" + "X-MS-Exchange-Forest-ArrivalHubServer: mbx-essen-01.secunet.de\n" + "X-MS-Exchange-Organization-AuthSource: cas-essen-02.secunet.de\n" + "X-MS-Exchange-Organization-AuthAs: Anonymous\n" + "X-MS-Exchange-Organization-FromEntityHeader: Internet\n" + "X-MS-Exchange-Organization-OriginalSize: 12132\n" + "X-MS-Exchange-Organization-HygienePolicy: Standard\n" + "X-MS-Exchange-Organization-MessageLatency: SRV=cas-essen-02.secunet.de:TOTAL-FE=25.002|SMR=0.025(SMRPI=0.022(SMRPI-FrontendProxyAgent=0.022))|SMS=0.002\n" + "X-MS-Exchange-Organization-Recipient-Limit-Verified: True\n" + "X-MS-Exchange-Organization-TotalRecipientCount: 1\n" + "X-MS-Exchange-Organization-Rules-Execution-History: 0b0cf904-14ac-4724-8bdf-482ee6223cf2%%%fd34672d-751c-45ae-a963-ed177fcabe23%%%d8080257-b0c3-47b4-b0db-23bc0c8ddb3c%%%95e591a2-5d7d-4afa-b1d0-7573d6c0a5d9%%%f7d0f6bc-4dcc-4876-8c5d-b3d6ddbb3d55%%%16355082-c50b-4214-9c7d-d39575f9f79b\n" + "X-MS-Exchange-Forest-RulesExecuted: mbx-essen-01\n" + "X-MS-Exchange-Organization-RulesExecuted: mbx-essen-01\n" + "X-MS-Exchange-Forest-IndexAgent-0: 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\n" + " l2HMSQWWLIsiLeUoyiXMAcrGVOoeEX/DM0RzD2lSJaJME3uJaDLl1D\n" + " IPSuKDLBkDBGO9Ih1/RdWLYmkxVckLkRdL8dVS7DUFpoK4HMpPZcZj\n" + " SgOw/0OyNi9WOBU5M2GGIzhKbMp2UdBJeydLtcPVNwpQhABlcrmlxS\n" + " IXHdOUxb0MOi1LbinFQ5aNZM7y7ckWdILlmIzqNBtSVjIY3yxtrcCB\n" + " ILK7vP3PyFQqirtZKisZzrAfwDM8/0lkPgt6QebYwruJr6FhS2jM2A\n" + " yAr8VolCdzKQz31Hxy3KfISsnzYSZQEqajmZCFJI8AV158mk1BoaXo\n" + " 9cNoyYduWU5TGX4Wm7+XTi7wOxmSP4UbN8xP1fgdwKtsCjwvMqks72\n" + " I8pmABJZTzCuEbA10aczJD6fpHnoH936Hah0kYl3HwIS8xLy9l6XWJ\n" + " zwtNdocyCmpc5wanIvxBIfChQ9i+SEtFVpTRyIN6l+gVjcFzDQcIxR\n" + " AwFIJmTOUk/E+aRBYQtZQLq3gBixfqdAlVo7VZKuexIl7KY9WgLnDm\n" + " NC/nKtX7SoaQOVxdCTWC2BLLHx1bSenxAbMD5T3afnjUIoDTru+msU\n" + " DyFLh75C6A1mxES5nMQ70V5k1liiKlhTDZeGYpah4xfsTOJ8m5JCF/\n" + " YMunchUGy2ibKDNEM4zw6TCDhbMlFx4ouN+S+JK3M8f4RZopiG/SmB\n" + " iZ0SlJ/ikVaSMModztFABGUuKDGGWBe4mRkSVxn7AXGqEvCJZ/Hxs4\n" + " rGTDNyR/J4eW5PlIjTj/TzPyAQB5OYdARCUZt6pMNuSEZN6pqodyK4\n" + " 2k5fVJrWttdPRksMyzGZ32WcrnXAjgGvZpFTAKlj7KpwqUe8szjCkl\n" + " +a3MLRzrZZTgcMeiEDmPOHxwHpUJH0bNDB9eWQLnyXTSRZHkirDbJH\n" + " VwiKyMcnLKaR/PyNXSKMRF6tNGtUk49kliGvCpmtGHF0dw7HlmDP35\n" + " +czC10mS4/InmOKdjnAA0zvPt4D/AsaXde/OJAAAAQrOAjw/eG1sIH\n" + " ZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi0xNiI/Pg0KPEVtYWls\n" + " U2V0Pg0KICA8VmVyc2lvbj4xNS4wLjAuMDwvVmVyc2lvbj4NCiAgPE\n" + " VtYWlscz4NCiAgICA8RW1haWwgU3RhcnRJbmRleD0iMTE4MyI+DQog\n" + " ICAgICA8RW1haWxTdHJpbmc+bWFyY2luLnN6eWNpa0BsaW51eC5pbn\n" + " RlbC5jb208L0VtYWlsU3RyaW5nPg0KICAgIDwvRW1haWw+DQogICAg\n" + " PEVtYWlsIFN0YXJ0SW5kZXg9IjEyNDkiPg0KICAgICAgPEVtYWlsU3\n" + " RyaW5nPndvamNpZWNoLmRyZXdla0BpbnRlbC5jb208L0VtYWlsU3Ry\n" + " aW5nPg0KICAgIDwvRW1haWw+DQogIDwvRW1haWxzPg0KPC9FbWFpbF\n" + " NldD4BDIUHPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRm\n" + " LTE2Ij8+DQo8Q29udGFjdFNldD4NCiAgPFZlcnNpb24+MTUuMC4wLj\n" + " A8L1ZlcnNpb24+DQogIDxDb250YWN0cz4NCiAgICA8Q29udGFjdCBT\n" + " dGFydEluZGV4PSIxMTY4Ij4NCiAgICAgIDxQZXJzb24gU3RhcnRJbm\n" + " RleD0iMTE2OCI+DQogICAgICAgIDxQZXJzb25TdHJpbmc+TWFyY2lu\n" + " PC9QZXJzb25TdHJpbmc+DQogICAgICA8L1BlcnNvbj4NCiAgICAgID\n" + " xFbWFpbHM+DQogICAgICAgIDxFbWFpbCBTdGFydEluZGV4PSIxMTgz\n" + " Ij4NCiAgICAgICAgICA8RW1haWxTdHJpbmc+bWFyY2luLnN6eWNpa0\n" + " BsaW51eC5pbnRlbC5jb208L0VtYWlsU3RyaW5nPg0KICAgICAgICA8\n" + " L0VtYWlsPg0KICAgICAgPC9FbWFpbHM+DQogICAgICA8Q29udGFjdF\n" + " N0cmluZz5NYXJjaW4gU3p5Y2lrICZsdDttYXJjaW4uc3p5Y2lrQGxp\n" + " bnV4LmludGVsLmNvbTwvQ29udGFjdFN0cmluZz4NCiAgICA8L0Nvbn\n" + " RhY3Q+DQogICAgPENvbnRhY3QgU3RhcnRJbmRleD0iMTIzMiI+DQog\n" + " ICAgICA8UGVyc29uIFN0YXJ0SW5kZXg9IjEyMzIiPg0KICAgICAgIC\n" + " A8UGVyc29uU3RyaW5nPldvamNpZWNoIERyZXdlazwvUGVyc29uU3Ry\n" + " aW5nPg0KICAgICAgPC9QZXJzb24+DQogICAgICA8RW1haWxzPg0KIC\n" + " AgICAgICA8RW1haWwgU3RhcnRJbmRleD0iMTI0OSI+DQogICAgICAg\n" + " ICAgPEVtYWlsU3RyaW5nPndvamNpZWNoLmRyZXdla0BpbnRlbC5jb2\n" + " 08L0VtYWlsU3RyaW5nPg0KICAgICAgICA8L0VtYWlsPg0KICAgICAg\n" + " PC9FbWFpbHM+DQogICAgICA8Q29udGFjdFN0cmluZz5Xb2pjaWVjaC\n" + " BEcmV3ZWsgJmx0O3dvamNpZWNoLmRyZXdla0BpbnRlbC5jb208L0Nv\n" + " bnRhY3RTdHJpbmc+DQogICAgPC9Db250YWN0Pg0KICA8L0NvbnRhY3\n" + " RzPg0KPC9Db250YWN0U2V0PgEOzwFSZXRyaWV2ZXJPcGVyYXRvciwx\n" + " MCwyO1JldHJpZXZlck9wZXJhdG9yLDExLDM7UG9zdERvY1BhcnNlck\n" + " 9wZXJhdG9yLDEwLDE7UG9zdERvY1BhcnNlck9wZXJhdG9yLDExLDA7\n" + " UG9zdFdvcmRCcmVha2VyRGlhZ25vc3RpY09wZXJhdG9yLDEwLDc7UG\n" + " 9zdFdvcmRCcmVha2VyRGlhZ25vc3RpY09wZXJhdG9yLDExLDA7VHJh\n" + " bnNwb3J0V3JpdGVyUHJvZHVjZXIsMjAsMjg=\n" + "X-MS-Exchange-Forest-IndexAgent: 1 4643\n" + "X-MS-Exchange-Forest-EmailMessageHash: 10B105DC\n" + "X-MS-Exchange-Forest-Language: en\n" + "X-MS-Exchange-Organization-Processed-By-Journaling: Journal Agent\n" + "\n" + "On Fri, 29 Mar 2024 10:23:20 +0100 Wojciech Drewek wrote:\n" + "> Some modules use nonstandard power levels. Adjust ethtool\n" + "> module implementation to support new attributes that will allow user\n" + "> to change maximum power.\n" + "> \n" + "> Add three new get attributes:\n" + "> ETHTOOL_A_MODULE_MAX_POWER_SET (used for set as well) - currently set\n" + "> maximum power in the cage\n" + "\n" + "1) I'd keep the ETHTOOL_A_MODULE_POWER_ prefix, consistently.\n" + "\n" + "2) The _SET makes it sound like an action. Can we go with\n" + " ETHTOOL_A_MODULE_POWER_MAX ? Or ETHTOOL_A_MODULE_POWER_LIMIT?\n" + " Yes, ETHTOOL_A_MODULE_POWER_LIMIT\n" + " ETHTOOL_A_MODULE_POWER_MAX\n" + " ETHTOOL_A_MODULE_POWER_MIN\n" + " would sound pretty good to me.\n" + "\n" + "> ETHTOOL_A_MODULE_MIN_POWER_ALLOWED - minimum power allowed in the\n" + "> cage reported by device\n" + "> ETHTOOL_A_MODULE_MAX_POWER_ALLOWED - maximum power allowed in the\n" + "> cage reported by device\n" + "> \n" + "> Add two new set attributes:\n" + "> ETHTOOL_A_MODULE_MAX_POWER_SET (used for get as well) - change\n" + "> maximum power in the cage to the given value (milliwatts)\n" + "> ETHTOOL_A_MODULE_MAX_POWER_RESET - reset maximum power setting to the\n" + "> default value\n" + "> \n" + "> Reviewed-by: Marcin Szycik <marcin.szycik@linux.intel.com>\n" + "> Signed-off-by: Wojciech Drewek <wojciech.drewek@intel.com>\n" + "> ---\n" + "> include/linux/ethtool.h | 17 +++++--\n" + "> include/uapi/linux/ethtool_netlink.h | 4 ++\n" + "> net/ethtool/module.c | 74 ++++++++++++++++++++++++++--\n" + "> net/ethtool/netlink.h | 2 +-\n" + "> 4 files changed, 87 insertions(+), 10 deletions(-)\n" + "> \n" + "> diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h\n" + "> index f3af6b31c9f1..74ed8997443a 100644\n" + "> --- a/include/linux/ethtool.h\n" + "> +++ b/include/linux/ethtool.h\n" + "> @@ -510,10 +510,18 @@ struct ethtool_module_eeprom {\n" + "> * @policy: The power mode policy enforced by the host for the plug-in module.\n" + "> * @mode: The operational power mode of the plug-in module. Should be filled by\n" + "> *\tdevice drivers on get operations.\n" + "> + * @min_pwr_allowed: minimum power allowed in the cage reported by device\n" + "> + * @max_pwr_allowed: maximum power allowed in the cage reported by device\n" + "> + * @max_pwr_set: maximum power currently set in the cage\n" + "> + * @max_pwr_reset: restore default minimum power\n" + "> */\n" + "> struct ethtool_module_power_params {\n" + "> \tenum ethtool_module_power_mode_policy policy;\n" + "> \tenum ethtool_module_power_mode mode;\n" + "> +\tu32 min_pwr_allowed;\n" + "> +\tu32 max_pwr_allowed;\n" + "> +\tu32 max_pwr_set;\n" + "> +\tu8 max_pwr_reset;\n" + "\n" + "bool ?\n" + "\n" + "> diff --git a/include/uapi/linux/ethtool_netlink.h b/include/uapi/linux/ethtool_netlink.h\n" + "> index 3f89074aa06c..f7cd446b2a83 100644\n" + "> --- a/include/uapi/linux/ethtool_netlink.h\n" + "> +++ b/include/uapi/linux/ethtool_netlink.h\n" + "> @@ -882,6 +882,10 @@ enum {\n" + "> \tETHTOOL_A_MODULE_HEADER,\t\t/* nest - _A_HEADER_* */\n" + "> \tETHTOOL_A_MODULE_POWER_MODE_POLICY,\t/* u8 */\n" + "> \tETHTOOL_A_MODULE_POWER_MODE,\t\t/* u8 */\n" + "> +\tETHTOOL_A_MODULE_MAX_POWER_SET,\t\t/* u32 */\n" + "> +\tETHTOOL_A_MODULE_MIN_POWER_ALLOWED,\t/* u32 */\n" + "> +\tETHTOOL_A_MODULE_MAX_POWER_ALLOWED,\t/* u32 */\n" + "> +\tETHTOOL_A_MODULE_MAX_POWER_RESET,\t/* u8 */\n" + "\n" + "flag ?\n" + "\n" + "> @@ -77,6 +86,7 @@ static int module_fill_reply(struct sk_buff *skb,\n" + "> \t\t\t const struct ethnl_reply_data *reply_base)\n" + "> {\n" + "> \tconst struct module_reply_data *data = MODULE_REPDATA(reply_base);\n" + "> +\tu32 temp;\n" + "\n" + "tmp ? temp sounds too much like temperature in context of power\n" + "\n" + "> static int\n" + "> ethnl_set_module(struct ethnl_req_info *req_info, struct genl_info *info)\n" + "> {\n" + "> \tstruct ethtool_module_power_params power = {};\n" + "> \tstruct ethtool_module_power_params power_new;\n" + "> -\tconst struct ethtool_ops *ops;\n" + "> \tstruct net_device *dev = req_info->dev;\n" + "> \tstruct nlattr **tb = info->attrs;\n" + "> +\tconst struct ethtool_ops *ops;\n" + "> \tint ret;\n" + "> +\tbool mod;\n" + "> \n" + "> \tops = dev->ethtool_ops;\n" + "> \n" + "> -\tpower_new.policy = nla_get_u8(tb[ETHTOOL_A_MODULE_POWER_MODE_POLICY]);\n" + "> \tret = ops->get_module_power_cfg(dev, &power, info->extack);\n" + "> \tif (ret < 0)\n" + "> \t\treturn ret;\n" + "> \n" + "> -\tif (power_new.policy == power.policy)\n" + "> +\tpower_new.max_pwr_set = power.max_pwr_set;\n" + "> +\tpower_new.policy = power.policy;\n" + "> +\n" + "> +\tethnl_update_u32(&power_new.max_pwr_set,\n" + "> +\t\t\t tb[ETHTOOL_A_MODULE_MAX_POWER_SET], &mod);\n" + "> +\tif (mod) {\n" + "\n" + "I think we can use if (tb[ETHTOOL_A_MODULE_MAX_POWER_SET]) here\n" + "Less error prone for future additions.\n" + "\n" + "> +\t\tif (power_new.max_pwr_set > power.max_pwr_allowed) {\n" + "> +\t\t\tNL_SET_ERR_MSG(info->extack, \"Provided value is higher than maximum allowed\");\n" + "\n" + "NL_SET_ERR_MSG_ATTR() to point at the bad attribute.\n" + "\n" + "> +\t\t\treturn -EINVAL;\n" + "\n" + "ERANGE?\n" + "\n" + "> +\t\t} else if (power_new.max_pwr_set < power.min_pwr_allowed) {\n" + "> +\t\t\tNL_SET_ERR_MSG(info->extack, \"Provided value is lower than minimum allowed\");\n" + "> +\t\t\treturn -EINVAL;\n" + "> +\t\t}\n" + "> +\t}\n" + "> +\n" + "> +\tethnl_update_policy(&power_new.policy,\n" + "> +\t\t\t tb[ETHTOOL_A_MODULE_POWER_MODE_POLICY], &mod);\n" + "> +\tethnl_update_u8(&power_new.max_pwr_reset,\n" + "> +\t\t\ttb[ETHTOOL_A_MODULE_MAX_POWER_RESET], &mod);\n" + "\n" + "I reckon reset should not be allowed if none of the max_pwr values \n" + "are set (i.e. most likely driver doesn't support the config)?\n" + "\n" + "> +\tif (!mod)\n" + "> \t\treturn 0;\n" + "> \n" + "> +\tif (power_new.max_pwr_reset && power_new.max_pwr_set) {\n" + "\n" + "Mmm. How is that gonna work? The driver is going to set max_pwr_set\n" + "to what's currently configured. So the user is expected to send\n" + "ETHTOOL_A_MODULE_MAX_POWER_SET = 0\n" + "ETHTOOL_A_MODULE_MAX_POWER_RESET = 1\n" + "to reset?\n" + "\n" + "Just:\n" + "\n" + "\tif (tb[ETHTOOL_A_MODULE_MAX_POWER_RESET] &&\n" + "\t tb[ETHTOOL_A_MODULE_MAX_POWER_SET])\n" + "\n" + "And you can validate this before doing any real work.\n" + "\n" + "> +\t\tNL_SET_ERR_MSG(info->extack, \"Maximum power set and reset cannot be used at the same time\");\n" + "> +\t\treturn 0;\n" + "> +\t}\n" + "> +\n" + "> \tret = ops->set_module_power_cfg(dev, &power_new, info->extack);\n" + "> \treturn ret < 0 ? ret : 1;\n" + "> }\n" + "-- \n" pw-bot: cr -7495cf0a8ddb13148285ce4dd5a12ce1a14772f35eff9901d923dafa9bafc013 +ad8ac20ba4349a845474a7f58518555ba83cf5fd52a363f89875c67b00a8daae
diff --git a/a/content_digest b/N2/content_digest index df38957..7eec7d0 100644 --- a/a/content_digest +++ b/N2/content_digest @@ -1,18 +1,18 @@ "ref\020240329092321.16843-1-wojciech.drewek@intel.com\0" "ref\020240329092321.16843-3-wojciech.drewek@intel.com\0" "From\0Jakub Kicinski <kuba@kernel.org>\0" - "Subject\0Re: [Intel-wired-lan] [PATCH net-next 2/3] ethtool: Introduce max power support\0" + "Subject\0Re: [PATCH net-next 2/3] ethtool: Introduce max power support\0" "Date\0Fri, 29 Mar 2024 15:29:54 -0700\0" "To\0Wojciech Drewek <wojciech.drewek@intel.com>\0" "Cc\0netdev@vger.kernel.org" - idosch@nvidia.com - edumazet@google.com - marcin.szycik@linux.intel.com - anthony.l.nguyen@intel.com - simon.horman@corigine.com intel-wired-lan@lists.osuosl.org + simon.horman@corigine.com + anthony.l.nguyen@intel.com + edumazet@google.com pabeni@redhat.com - " przemyslaw.kitszel@intel.com\0" + idosch@nvidia.com + przemyslaw.kitszel@intel.com + " marcin.szycik@linux.intel.com\0" "\00:1\0" "b\0" "On Fri, 29 Mar 2024 10:23:20 +0100 Wojciech Drewek wrote:\n" @@ -180,4 +180,4 @@ "-- \n" pw-bot: cr -7495cf0a8ddb13148285ce4dd5a12ce1a14772f35eff9901d923dafa9bafc013 +fe7b55537c1c25c1abc6f723dff5b5db145f9eb9e7be8c223ca855d04beb72f7
diff --git a/a/1.txt b/N3/1.txt index 09f6601..7e22d7c 100644 --- a/a/1.txt +++ b/N3/1.txt @@ -162,3 +162,409 @@ And you can validate this before doing any real work. > } -- pw-bot: cr + +X-sender: <netdev+bounces-83478-steffen.klassert=secunet.com@vger.kernel.org> +X-Receiver: <steffen.klassert@secunet.com> ORCPT=rfc822;steffen.klassert@secunet.com NOTIFY=NEVER; X-ExtendedProps=BQAVABYAAgAAAAUAFAARAPDFCS25BAlDktII2g02frgPADUAAABNaWNyb3NvZnQuRXhjaGFuZ2UuVHJhbnNwb3J0LkRpcmVjdG9yeURhdGEuSXNSZXNvdXJjZQIAAAUAagAJAAEAAAAAAAAABQAWAAIAAAUAQwACAAAFAEYABwADAAAABQBHAAIAAAUAEgAPAGIAAAAvbz1zZWN1bmV0L291PUV4Y2hhbmdlIEFkbWluaXN0cmF0aXZlIEdyb3VwIChGWURJQk9IRjIzU1BETFQpL2NuPVJlY2lwaWVudHMvY249U3RlZmZlbiBLbGFzc2VydDY4YwUACwAXAL4AAACheZxkHSGBRqAcAp3ukbifQ049REI2LENOPURhdGFiYXNlcyxDTj1FeGNoYW5nZSBBZG1pbmlzdHJhdGl2ZSBHcm91cCAoRllESUJPSEYyM1NQRExUKSxDTj1BZG1pbmlzdHJhdGl2ZSBHcm91cHMsQ049c2VjdW5ldCxDTj1NaWNyb3NvZnQgRXhjaGFuZ2UsQ049U2VydmljZXMsQ049Q29uZmlndXJhdGlvbixEQz1zZWN1bmV0LERDPWRlBQAOABEABiAS9uuMOkqzwmEZDvWNNQUAHQAPAAwAAABtYngtZXNzZW4tMDIFADwAAgAADwA2AAAATWljcm9zb2Z0LkV4Y2hhbmdlLlRyYW5zcG9ydC5NYWlsUmVjaXBpZW50LkRpc3BsYXlOYW1lDwARAAAAS2xhc3NlcnQsIFN0ZWZmZW4FAAwAAgAABQBsAAIAAAUAWAAXAEoAAADwxQktuQQJQ5LSCNoNNn64Q049S2xhc3NlcnQgU3RlZmZlbixPVT1Vc2VycyxPVT1NaWdyYXRpb24sREM9c2VjdW5ldCxEQz1kZQUAJgACAAEFACIADwAxAAAAQXV0b1Jlc3BvbnNlU3VwcHJlc3M6IDANClRyYW5zbWl0SGlzdG9yeTogRmFsc2UNCg8ALwAAAE1pY3Jvc29mdC5FeGNoYW5nZS5UcmFuc3BvcnQuRXhwYW5zaW9uR3JvdXBUeXBlDwAVAAAATWVtYmVyc0dyb3VwRXhwYW5zaW9uBQAjAAIAAQ== +X-CreatedBy: MSExchange15 +X-HeloDomain: a.mx.secunet.com +X-ExtendedProps: BQBjAAoAkQ1rGbMv3AgFAGEACAABAAAABQA3AAIAAA8APAAAAE1pY3Jvc29mdC5FeGNoYW5nZS5UcmFuc3BvcnQuTWFpbFJlY2lwaWVudC5Pcmdhbml6YXRpb25TY29wZREAAAAAAAAAAAAAAAAAAAAAAAUASQACAAEFAAQAFCABAAAAHAAAAHN0ZWZmZW4ua2xhc3NlcnRAc2VjdW5ldC5jb20FAAYAAgABBQApAAIAAQ8ACQAAAENJQXVkaXRlZAIAAQUAAgAHAAEAAAAFAAMABwAAAAAABQAFAAIAAQUAYgAKAFIAAADMigAABQBkAA8AAwAAAEh1Yg== +X-Source: SMTP:Default MBX-ESSEN-01 +X-SourceIPAddress: 62.96.220.36 +X-EndOfInjectedXHeaders: 20181 +Received: from cas-essen-02.secunet.de (10.53.40.202) by + mbx-essen-01.secunet.de (10.53.40.197) with Microsoft SMTP Server + (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id + 15.1.2507.35; Fri, 29 Mar 2024 23:30:12 +0100 +Received: from a.mx.secunet.com (62.96.220.36) by cas-essen-02.secunet.de + (10.53.40.202) with Microsoft SMTP Server (version=TLS1_2, + cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35 via Frontend + Transport; Fri, 29 Mar 2024 23:30:12 +0100 +Received: from localhost (localhost [127.0.0.1]) + by a.mx.secunet.com (Postfix) with ESMTP id 870DE20883 + for <steffen.klassert@secunet.com>; Fri, 29 Mar 2024 23:30:12 +0100 (CET) +X-Virus-Scanned: by secunet +X-Spam-Flag: NO +X-Spam-Score: -3.099 +X-Spam-Level: +X-Spam-Status: No, score=-3.099 tagged_above=-999 required=2.1 + tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.099, DKIM_SIGNED=0.1, + DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, MAILING_LIST_MULTI=-1, + RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] + autolearn=unavailable autolearn_force=no +Authentication-Results: a.mx.secunet.com (amavisd-new); + dkim=pass (2048-bit key) header.d=kernel.org +Received: from a.mx.secunet.com ([127.0.0.1]) + by localhost (a.mx.secunet.com [127.0.0.1]) (amavisd-new, port 10024) + with ESMTP id 66TQ_oaDF-3X for <steffen.klassert@secunet.com>; + Fri, 29 Mar 2024 23:30:11 +0100 (CET) +Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=147.75.80.249; helo=am.mirrors.kernel.org; envelope-from=netdev+bounces-83478-steffen.klassert=secunet.com@vger.kernel.org; receiver=steffen.klassert@secunet.com +DKIM-Filter: OpenDKIM Filter v2.11.0 a.mx.secunet.com D1BDB208AC +Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249]) + (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by a.mx.secunet.com (Postfix) with ESMTPS id D1BDB208AC + for <steffen.klassert@secunet.com>; Fri, 29 Mar 2024 23:30:11 +0100 (CET) +Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) + (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by am.mirrors.kernel.org (Postfix) with ESMTPS id 5B4B71F22D96 + for <steffen.klassert@secunet.com>; Fri, 29 Mar 2024 22:30:11 +0000 (UTC) +Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) + by smtp.subspace.kernel.org (Postfix) with ESMTP id 5B38413DDA5; + Fri, 29 Mar 2024 22:29:56 +0000 (UTC) +Authentication-Results: smtp.subspace.kernel.org; + dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="af3tEf4r" +X-Original-To: netdev@vger.kernel.org +Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) + (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by smtp.subspace.kernel.org (Postfix) with ESMTPS id BF6BB28DC1 + for <netdev@vger.kernel.org>; Fri, 29 Mar 2024 22:29:55 +0000 (UTC) +Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 +ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; + t=1711751395; cv=none; b=r8+B1IFFag2HuI6zBBZXeH+ixu4+v7LcY5wOF3/6wgJ223E0kn3xcKcwo+b9S0QAED6F64X45+Ly5CTR1T3QpysOskVw+gmCEHA7C6kqyn9w3eNJ9i4Hl/Myvb/UKIYrlUrLJA2ZIcn/zPzyZPRsgS1BxBM9vsbq2bHqgBZeDjM= +ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; + s=arc-20240116; t=1711751395; c=relaxed/simple; + bh=YclD2gFKAd0KYU/nqrMwp6tntz6Bp0xkpGNnD7iuj3c=; + h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References: + MIME-Version:Content-Type; b=rJ7Bn5B+eJPtxb4RNqsOXTzMjoxUUJ5pI/JOpQlNhT4ZcDDv6O01CZ1g3k27TriDuD2V9f4K/PGRphgNiz/gM/TFCcH5mAojrujO3pTOIJTI+aIIUz1rLn0diYOJV7K7HUs8cBglYDPH5ri6aPJNGmrNMWJbh0ZerjwDrcQhuoc= +ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=af3tEf4r; arc=none smtp.client-ip=10.30.226.201 +Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2A38DC433F1; + Fri, 29 Mar 2024 22:29:55 +0000 (UTC) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; + s=k20201202; t=1711751395; + bh=YclD2gFKAd0KYU/nqrMwp6tntz6Bp0xkpGNnD7iuj3c=; + h=Date:From:To:Cc:Subject:In-Reply-To:References:From; + b=af3tEf4riCb4f2NQ149pjvDrIXXmmP43YUOkyHbXZ+M94QTqDI0JCGEF6C9SwDi2v + UbNo6lur4NhXefe9RSrYlvWkEgyygoEXlsnzAgBuwTthmMcxP2nKYOexYi7y8EYgAU + s+LYfSGZY1szJRSJJk68i3GvMqw/Vxj3slvg7t75/MisPpwS+jb6RoyLsnYv0RKoVL + 12qu5ji4XYH50ruUZsUfcfxQseOwTzwtSilm9SNsMlGhgFPnOmb3sh5+EZ9kkw1axQ + GhY5mxcMFxbnq+OPRpafTOvZpCjxq7fMQ4RgncWl/e6+tXnFeaTluLTysE2h8/dy/H + aDL1nOLZRHWXA== +Date: Fri, 29 Mar 2024 15:29:54 -0700 +From: Jakub Kicinski <kuba@kernel.org> +To: Wojciech Drewek <wojciech.drewek@intel.com> +Cc: netdev@vger.kernel.org, intel-wired-lan@lists.osuosl.org, + simon.horman@corigine.com, anthony.l.nguyen@intel.com, edumazet@google.com, + pabeni@redhat.com, idosch@nvidia.com, przemyslaw.kitszel@intel.com, + marcin.szycik@linux.intel.com +Subject: Re: [PATCH net-next 2/3] ethtool: Introduce max power support +Message-ID: <20240329152954.26a7ce75@kernel.org> +In-Reply-To: <20240329092321.16843-3-wojciech.drewek@intel.com> +References: <20240329092321.16843-1-wojciech.drewek@intel.com> + <20240329092321.16843-3-wojciech.drewek@intel.com> +Precedence: bulk +X-Mailing-List: netdev@vger.kernel.org +List-Id: <netdev.vger.kernel.org> +List-Subscribe: <mailto:netdev+subscribe@vger.kernel.org> +List-Unsubscribe: <mailto:netdev+unsubscribe@vger.kernel.org> +MIME-Version: 1.0 +Content-Type: text/plain; charset="US-ASCII" +Content-Transfer-Encoding: 7bit +Return-Path: netdev+bounces-83478-steffen.klassert=secunet.com@vger.kernel.org +X-MS-Exchange-Organization-OriginalArrivalTime: 29 Mar 2024 22:30:12.5869 + (UTC) +X-MS-Exchange-Organization-Network-Message-Id: b874bb8e-c3ad-4cd8-d138-08dc503fcc9e +X-MS-Exchange-Organization-OriginalClientIPAddress: 62.96.220.36 +X-MS-Exchange-Organization-OriginalServerIPAddress: 10.53.40.202 +X-MS-Exchange-Organization-Cross-Premises-Headers-Processed: cas-essen-02.secunet.de +X-MS-Exchange-Organization-OrderedPrecisionLatencyInProgress: LSRV=mbx-essen-01.secunet.de:TOTAL-HUB=0.416|SMR=0.329(SMRDE=0.004|SMRC=0.325(SMRCL=0.104|X-SMRCR=0.325))|CAT=0.086(CATRESL=0.022 + (CATRESLP2R=0.018)|CATORES=0.058(CATRS=0.058(CATRS-Transport Rule + Agent=0.001|CATRS-Index Routing Agent=0.056 + ))|CATORT=0.001(CATRT=0.001));2024-03-29T22:30:13.029Z +X-MS-Exchange-Forest-ArrivalHubServer: mbx-essen-01.secunet.de +X-MS-Exchange-Organization-AuthSource: cas-essen-02.secunet.de +X-MS-Exchange-Organization-AuthAs: Anonymous +X-MS-Exchange-Organization-FromEntityHeader: Internet +X-MS-Exchange-Organization-OriginalSize: 12132 +X-MS-Exchange-Organization-HygienePolicy: Standard +X-MS-Exchange-Organization-MessageLatency: SRV=cas-essen-02.secunet.de:TOTAL-FE=25.002|SMR=0.025(SMRPI=0.022(SMRPI-FrontendProxyAgent=0.022))|SMS=0.002 +X-MS-Exchange-Organization-Recipient-Limit-Verified: True +X-MS-Exchange-Organization-TotalRecipientCount: 1 +X-MS-Exchange-Organization-Rules-Execution-History: 0b0cf904-14ac-4724-8bdf-482ee6223cf2%%%fd34672d-751c-45ae-a963-ed177fcabe23%%%d8080257-b0c3-47b4-b0db-23bc0c8ddb3c%%%95e591a2-5d7d-4afa-b1d0-7573d6c0a5d9%%%f7d0f6bc-4dcc-4876-8c5d-b3d6ddbb3d55%%%16355082-c50b-4214-9c7d-d39575f9f79b +X-MS-Exchange-Forest-RulesExecuted: mbx-essen-01 +X-MS-Exchange-Organization-RulesExecuted: mbx-essen-01 +X-MS-Exchange-Forest-IndexAgent-0: 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 + 9cNoyYduWU5TGX4Wm7+XTi7wOxmSP4UbN8xP1fgdwKtsCjwvMqks72 + I8pmABJZTzCuEbA10aczJD6fpHnoH936Hah0kYl3HwIS8xLy9l6XWJ + zwtNdocyCmpc5wanIvxBIfChQ9i+SEtFVpTRyIN6l+gVjcFzDQcIxR + AwFIJmTOUk/E+aRBYQtZQLq3gBixfqdAlVo7VZKuexIl7KY9WgLnDm + NC/nKtX7SoaQOVxdCTWC2BLLHx1bSenxAbMD5T3afnjUIoDTru+msU + DyFLh75C6A1mxES5nMQ70V5k1liiKlhTDZeGYpah4xfsTOJ8m5JCF/ + YMunchUGy2ibKDNEM4zw6TCDhbMlFx4ouN+S+JK3M8f4RZopiG/SmB + iZ0SlJ/ikVaSMModztFABGUuKDGGWBe4mRkSVxn7AXGqEvCJZ/Hxs4 + rGTDNyR/J4eW5PlIjTj/TzPyAQB5OYdARCUZt6pMNuSEZN6pqodyK4 + 2k5fVJrWttdPRksMyzGZ32WcrnXAjgGvZpFTAKlj7KpwqUe8szjCkl + +a3MLRzrZZTgcMeiEDmPOHxwHpUJH0bNDB9eWQLnyXTSRZHkirDbJH + VwiKyMcnLKaR/PyNXSKMRF6tNGtUk49kliGvCpmtGHF0dw7HlmDP35 + +czC10mS4/InmOKdjnAA0zvPt4D/AsaXde/OJAAAAQrOAjw/eG1sIH + ZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi0xNiI/Pg0KPEVtYWls + U2V0Pg0KICA8VmVyc2lvbj4xNS4wLjAuMDwvVmVyc2lvbj4NCiAgPE + VtYWlscz4NCiAgICA8RW1haWwgU3RhcnRJbmRleD0iMTE4MyI+DQog + ICAgICA8RW1haWxTdHJpbmc+bWFyY2luLnN6eWNpa0BsaW51eC5pbn + RlbC5jb208L0VtYWlsU3RyaW5nPg0KICAgIDwvRW1haWw+DQogICAg + PEVtYWlsIFN0YXJ0SW5kZXg9IjEyNDkiPg0KICAgICAgPEVtYWlsU3 + RyaW5nPndvamNpZWNoLmRyZXdla0BpbnRlbC5jb208L0VtYWlsU3Ry + aW5nPg0KICAgIDwvRW1haWw+DQogIDwvRW1haWxzPg0KPC9FbWFpbF + NldD4BDIUHPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRm + LTE2Ij8+DQo8Q29udGFjdFNldD4NCiAgPFZlcnNpb24+MTUuMC4wLj + A8L1ZlcnNpb24+DQogIDxDb250YWN0cz4NCiAgICA8Q29udGFjdCBT + dGFydEluZGV4PSIxMTY4Ij4NCiAgICAgIDxQZXJzb24gU3RhcnRJbm + RleD0iMTE2OCI+DQogICAgICAgIDxQZXJzb25TdHJpbmc+TWFyY2lu + PC9QZXJzb25TdHJpbmc+DQogICAgICA8L1BlcnNvbj4NCiAgICAgID + xFbWFpbHM+DQogICAgICAgIDxFbWFpbCBTdGFydEluZGV4PSIxMTgz + Ij4NCiAgICAgICAgICA8RW1haWxTdHJpbmc+bWFyY2luLnN6eWNpa0 + BsaW51eC5pbnRlbC5jb208L0VtYWlsU3RyaW5nPg0KICAgICAgICA8 + L0VtYWlsPg0KICAgICAgPC9FbWFpbHM+DQogICAgICA8Q29udGFjdF + N0cmluZz5NYXJjaW4gU3p5Y2lrICZsdDttYXJjaW4uc3p5Y2lrQGxp + bnV4LmludGVsLmNvbTwvQ29udGFjdFN0cmluZz4NCiAgICA8L0Nvbn + RhY3Q+DQogICAgPENvbnRhY3QgU3RhcnRJbmRleD0iMTIzMiI+DQog + ICAgICA8UGVyc29uIFN0YXJ0SW5kZXg9IjEyMzIiPg0KICAgICAgIC + A8UGVyc29uU3RyaW5nPldvamNpZWNoIERyZXdlazwvUGVyc29uU3Ry + aW5nPg0KICAgICAgPC9QZXJzb24+DQogICAgICA8RW1haWxzPg0KIC + AgICAgICA8RW1haWwgU3RhcnRJbmRleD0iMTI0OSI+DQogICAgICAg + ICAgPEVtYWlsU3RyaW5nPndvamNpZWNoLmRyZXdla0BpbnRlbC5jb2 + 08L0VtYWlsU3RyaW5nPg0KICAgICAgICA8L0VtYWlsPg0KICAgICAg + PC9FbWFpbHM+DQogICAgICA8Q29udGFjdFN0cmluZz5Xb2pjaWVjaC + BEcmV3ZWsgJmx0O3dvamNpZWNoLmRyZXdla0BpbnRlbC5jb208L0Nv + bnRhY3RTdHJpbmc+DQogICAgPC9Db250YWN0Pg0KICA8L0NvbnRhY3 + RzPg0KPC9Db250YWN0U2V0PgEOzwFSZXRyaWV2ZXJPcGVyYXRvciwx + MCwyO1JldHJpZXZlck9wZXJhdG9yLDExLDM7UG9zdERvY1BhcnNlck + 9wZXJhdG9yLDEwLDE7UG9zdERvY1BhcnNlck9wZXJhdG9yLDExLDA7 + UG9zdFdvcmRCcmVha2VyRGlhZ25vc3RpY09wZXJhdG9yLDEwLDc7UG + 9zdFdvcmRCcmVha2VyRGlhZ25vc3RpY09wZXJhdG9yLDExLDA7VHJh + bnNwb3J0V3JpdGVyUHJvZHVjZXIsMjAsMjg= +X-MS-Exchange-Forest-IndexAgent: 1 4643 +X-MS-Exchange-Forest-EmailMessageHash: 10B105DC +X-MS-Exchange-Forest-Language: en +X-MS-Exchange-Organization-Processed-By-Journaling: Journal Agent + +On Fri, 29 Mar 2024 10:23:20 +0100 Wojciech Drewek wrote: +> Some modules use nonstandard power levels. Adjust ethtool +> module implementation to support new attributes that will allow user +> to change maximum power. +> +> Add three new get attributes: +> ETHTOOL_A_MODULE_MAX_POWER_SET (used for set as well) - currently set +> maximum power in the cage + +1) I'd keep the ETHTOOL_A_MODULE_POWER_ prefix, consistently. + +2) The _SET makes it sound like an action. Can we go with + ETHTOOL_A_MODULE_POWER_MAX ? Or ETHTOOL_A_MODULE_POWER_LIMIT? + Yes, ETHTOOL_A_MODULE_POWER_LIMIT + ETHTOOL_A_MODULE_POWER_MAX + ETHTOOL_A_MODULE_POWER_MIN + would sound pretty good to me. + +> ETHTOOL_A_MODULE_MIN_POWER_ALLOWED - minimum power allowed in the +> cage reported by device +> ETHTOOL_A_MODULE_MAX_POWER_ALLOWED - maximum power allowed in the +> cage reported by device +> +> Add two new set attributes: +> ETHTOOL_A_MODULE_MAX_POWER_SET (used for get as well) - change +> maximum power in the cage to the given value (milliwatts) +> ETHTOOL_A_MODULE_MAX_POWER_RESET - reset maximum power setting to the +> default value +> +> Reviewed-by: Marcin Szycik <marcin.szycik@linux.intel.com> +> Signed-off-by: Wojciech Drewek <wojciech.drewek@intel.com> +> --- +> include/linux/ethtool.h | 17 +++++-- +> include/uapi/linux/ethtool_netlink.h | 4 ++ +> net/ethtool/module.c | 74 ++++++++++++++++++++++++++-- +> net/ethtool/netlink.h | 2 +- +> 4 files changed, 87 insertions(+), 10 deletions(-) +> +> diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h +> index f3af6b31c9f1..74ed8997443a 100644 +> --- a/include/linux/ethtool.h +> +++ b/include/linux/ethtool.h +> @@ -510,10 +510,18 @@ struct ethtool_module_eeprom { +> * @policy: The power mode policy enforced by the host for the plug-in module. +> * @mode: The operational power mode of the plug-in module. Should be filled by +> * device drivers on get operations. +> + * @min_pwr_allowed: minimum power allowed in the cage reported by device +> + * @max_pwr_allowed: maximum power allowed in the cage reported by device +> + * @max_pwr_set: maximum power currently set in the cage +> + * @max_pwr_reset: restore default minimum power +> */ +> struct ethtool_module_power_params { +> enum ethtool_module_power_mode_policy policy; +> enum ethtool_module_power_mode mode; +> + u32 min_pwr_allowed; +> + u32 max_pwr_allowed; +> + u32 max_pwr_set; +> + u8 max_pwr_reset; + +bool ? + +> diff --git a/include/uapi/linux/ethtool_netlink.h b/include/uapi/linux/ethtool_netlink.h +> index 3f89074aa06c..f7cd446b2a83 100644 +> --- a/include/uapi/linux/ethtool_netlink.h +> +++ b/include/uapi/linux/ethtool_netlink.h +> @@ -882,6 +882,10 @@ enum { +> ETHTOOL_A_MODULE_HEADER, /* nest - _A_HEADER_* */ +> ETHTOOL_A_MODULE_POWER_MODE_POLICY, /* u8 */ +> ETHTOOL_A_MODULE_POWER_MODE, /* u8 */ +> + ETHTOOL_A_MODULE_MAX_POWER_SET, /* u32 */ +> + ETHTOOL_A_MODULE_MIN_POWER_ALLOWED, /* u32 */ +> + ETHTOOL_A_MODULE_MAX_POWER_ALLOWED, /* u32 */ +> + ETHTOOL_A_MODULE_MAX_POWER_RESET, /* u8 */ + +flag ? + +> @@ -77,6 +86,7 @@ static int module_fill_reply(struct sk_buff *skb, +> const struct ethnl_reply_data *reply_base) +> { +> const struct module_reply_data *data = MODULE_REPDATA(reply_base); +> + u32 temp; + +tmp ? temp sounds too much like temperature in context of power + +> static int +> ethnl_set_module(struct ethnl_req_info *req_info, struct genl_info *info) +> { +> struct ethtool_module_power_params power = {}; +> struct ethtool_module_power_params power_new; +> - const struct ethtool_ops *ops; +> struct net_device *dev = req_info->dev; +> struct nlattr **tb = info->attrs; +> + const struct ethtool_ops *ops; +> int ret; +> + bool mod; +> +> ops = dev->ethtool_ops; +> +> - power_new.policy = nla_get_u8(tb[ETHTOOL_A_MODULE_POWER_MODE_POLICY]); +> ret = ops->get_module_power_cfg(dev, &power, info->extack); +> if (ret < 0) +> return ret; +> +> - if (power_new.policy == power.policy) +> + power_new.max_pwr_set = power.max_pwr_set; +> + power_new.policy = power.policy; +> + +> + ethnl_update_u32(&power_new.max_pwr_set, +> + tb[ETHTOOL_A_MODULE_MAX_POWER_SET], &mod); +> + if (mod) { + +I think we can use if (tb[ETHTOOL_A_MODULE_MAX_POWER_SET]) here +Less error prone for future additions. + +> + if (power_new.max_pwr_set > power.max_pwr_allowed) { +> + NL_SET_ERR_MSG(info->extack, "Provided value is higher than maximum allowed"); + +NL_SET_ERR_MSG_ATTR() to point at the bad attribute. + +> + return -EINVAL; + +ERANGE? + +> + } else if (power_new.max_pwr_set < power.min_pwr_allowed) { +> + NL_SET_ERR_MSG(info->extack, "Provided value is lower than minimum allowed"); +> + return -EINVAL; +> + } +> + } +> + +> + ethnl_update_policy(&power_new.policy, +> + tb[ETHTOOL_A_MODULE_POWER_MODE_POLICY], &mod); +> + ethnl_update_u8(&power_new.max_pwr_reset, +> + tb[ETHTOOL_A_MODULE_MAX_POWER_RESET], &mod); + +I reckon reset should not be allowed if none of the max_pwr values +are set (i.e. most likely driver doesn't support the config)? + +> + if (!mod) +> return 0; +> +> + if (power_new.max_pwr_reset && power_new.max_pwr_set) { + +Mmm. How is that gonna work? The driver is going to set max_pwr_set +to what's currently configured. So the user is expected to send +ETHTOOL_A_MODULE_MAX_POWER_SET = 0 +ETHTOOL_A_MODULE_MAX_POWER_RESET = 1 +to reset? + +Just: + + if (tb[ETHTOOL_A_MODULE_MAX_POWER_RESET] && + tb[ETHTOOL_A_MODULE_MAX_POWER_SET]) + +And you can validate this before doing any real work. + +> + NL_SET_ERR_MSG(info->extack, "Maximum power set and reset cannot be used at the same time"); +> + return 0; +> + } +> + +> ret = ops->set_module_power_cfg(dev, &power_new, info->extack); +> return ret < 0 ? ret : 1; +> } +-- +pw-bot: cr diff --git a/a/content_digest b/N3/content_digest index df38957..c38ac38 100644 --- a/a/content_digest +++ b/N3/content_digest @@ -1,18 +1,18 @@ "ref\020240329092321.16843-1-wojciech.drewek@intel.com\0" "ref\020240329092321.16843-3-wojciech.drewek@intel.com\0" "From\0Jakub Kicinski <kuba@kernel.org>\0" - "Subject\0Re: [Intel-wired-lan] [PATCH net-next 2/3] ethtool: Introduce max power support\0" + "Subject\0Re: [PATCH net-next 2/3] ethtool: Introduce max power support\0" "Date\0Fri, 29 Mar 2024 15:29:54 -0700\0" "To\0Wojciech Drewek <wojciech.drewek@intel.com>\0" "Cc\0netdev@vger.kernel.org" - idosch@nvidia.com - edumazet@google.com - marcin.szycik@linux.intel.com - anthony.l.nguyen@intel.com - simon.horman@corigine.com intel-wired-lan@lists.osuosl.org + simon.horman@corigine.com + anthony.l.nguyen@intel.com + edumazet@google.com pabeni@redhat.com - " przemyslaw.kitszel@intel.com\0" + idosch@nvidia.com + przemyslaw.kitszel@intel.com + " marcin.szycik@linux.intel.com\0" "\00:1\0" "b\0" "On Fri, 29 Mar 2024 10:23:20 +0100 Wojciech Drewek wrote:\n" @@ -178,6 +178,412 @@ "> \treturn ret < 0 ? ret : 1;\n" "> }\n" "-- \n" + "pw-bot: cr\n" + "\n" + "X-sender: <netdev+bounces-83478-steffen.klassert=secunet.com@vger.kernel.org>\n" + "X-Receiver: <steffen.klassert@secunet.com> ORCPT=rfc822;steffen.klassert@secunet.com NOTIFY=NEVER; X-ExtendedProps=BQAVABYAAgAAAAUAFAARAPDFCS25BAlDktII2g02frgPADUAAABNaWNyb3NvZnQuRXhjaGFuZ2UuVHJhbnNwb3J0LkRpcmVjdG9yeURhdGEuSXNSZXNvdXJjZQIAAAUAagAJAAEAAAAAAAAABQAWAAIAAAUAQwACAAAFAEYABwADAAAABQBHAAIAAAUAEgAPAGIAAAAvbz1zZWN1bmV0L291PUV4Y2hhbmdlIEFkbWluaXN0cmF0aXZlIEdyb3VwIChGWURJQk9IRjIzU1BETFQpL2NuPVJlY2lwaWVudHMvY249U3RlZmZlbiBLbGFzc2VydDY4YwUACwAXAL4AAACheZxkHSGBRqAcAp3ukbifQ049REI2LENOPURhdGFiYXNlcyxDTj1FeGNoYW5nZSBBZG1pbmlzdHJhdGl2ZSBHcm91cCAoRllESUJPSEYyM1NQRExUKSxDTj1BZG1pbmlzdHJhdGl2ZSBHcm91cHMsQ049c2VjdW5ldCxDTj1NaWNyb3NvZnQgRXhjaGFuZ2UsQ049U2VydmljZXMsQ049Q29uZmlndXJhdGlvbixEQz1zZWN1bmV0LERDPWRlBQAOABEABiAS9uuMOkqzwmEZDvWNNQUAHQAPAAwAAABtYngtZXNzZW4tMDIFADwAAgAADwA2AAAATWljcm9zb2Z0LkV4Y2hhbmdlLlRyYW5zcG9ydC5NYWlsUmVjaXBpZW50LkRpc3BsYXlOYW1lDwARAAAAS2xhc3NlcnQsIFN0ZWZmZW4FAAwAAgAABQBsAAIAAAUAWAAXAEoAAADwxQktuQQJQ5LSCNoNNn64Q049S2xhc3NlcnQgU3RlZmZlbixPVT1Vc2VycyxPVT1NaWdyYXRpb24sREM9c2VjdW5ldCxEQz1kZQUAJgACAAEFACIADwAxAAAAQXV0b1Jlc3BvbnNlU3VwcHJlc3M6IDANClRyYW5zbWl0SGlzdG9yeTogRmFsc2UNCg8ALwAAAE1pY3Jvc29mdC5FeGNoYW5nZS5UcmFuc3BvcnQuRXhwYW5zaW9uR3JvdXBUeXBlDwAVAAAATWVtYmVyc0dyb3VwRXhwYW5zaW9uBQAjAAIAAQ==\n" + "X-CreatedBy: MSExchange15\n" + "X-HeloDomain: a.mx.secunet.com\n" + "X-ExtendedProps: BQBjAAoAkQ1rGbMv3AgFAGEACAABAAAABQA3AAIAAA8APAAAAE1pY3Jvc29mdC5FeGNoYW5nZS5UcmFuc3BvcnQuTWFpbFJlY2lwaWVudC5Pcmdhbml6YXRpb25TY29wZREAAAAAAAAAAAAAAAAAAAAAAAUASQACAAEFAAQAFCABAAAAHAAAAHN0ZWZmZW4ua2xhc3NlcnRAc2VjdW5ldC5jb20FAAYAAgABBQApAAIAAQ8ACQAAAENJQXVkaXRlZAIAAQUAAgAHAAEAAAAFAAMABwAAAAAABQAFAAIAAQUAYgAKAFIAAADMigAABQBkAA8AAwAAAEh1Yg==\n" + "X-Source: SMTP:Default MBX-ESSEN-01\n" + "X-SourceIPAddress: 62.96.220.36\n" + "X-EndOfInjectedXHeaders: 20181\n" + "Received: from cas-essen-02.secunet.de (10.53.40.202) by\n" + " mbx-essen-01.secunet.de (10.53.40.197) with Microsoft SMTP Server\n" + " (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id\n" + " 15.1.2507.35; Fri, 29 Mar 2024 23:30:12 +0100\n" + "Received: from a.mx.secunet.com (62.96.220.36) by cas-essen-02.secunet.de\n" + " (10.53.40.202) with Microsoft SMTP Server (version=TLS1_2,\n" + " cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35 via Frontend\n" + " Transport; Fri, 29 Mar 2024 23:30:12 +0100\n" + "Received: from localhost (localhost [127.0.0.1])\n" + "\tby a.mx.secunet.com (Postfix) with ESMTP id 870DE20883\n" + "\tfor <steffen.klassert@secunet.com>; Fri, 29 Mar 2024 23:30:12 +0100 (CET)\n" + "X-Virus-Scanned: by secunet\n" + "X-Spam-Flag: NO\n" + "X-Spam-Score: -3.099\n" + "X-Spam-Level:\n" + "X-Spam-Status: No, score=-3.099 tagged_above=-999 required=2.1\n" + "\ttests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.099, DKIM_SIGNED=0.1,\n" + "\tDKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, MAILING_LIST_MULTI=-1,\n" + "\tRCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001]\n" + "\tautolearn=unavailable autolearn_force=no\n" + "Authentication-Results: a.mx.secunet.com (amavisd-new);\n" + "\tdkim=pass (2048-bit key) header.d=kernel.org\n" + "Received: from a.mx.secunet.com ([127.0.0.1])\n" + "\tby localhost (a.mx.secunet.com [127.0.0.1]) (amavisd-new, port 10024)\n" + "\twith ESMTP id 66TQ_oaDF-3X for <steffen.klassert@secunet.com>;\n" + "\tFri, 29 Mar 2024 23:30:11 +0100 (CET)\n" + "Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=147.75.80.249; helo=am.mirrors.kernel.org; envelope-from=netdev+bounces-83478-steffen.klassert=secunet.com@vger.kernel.org; receiver=steffen.klassert@secunet.com \n" + "DKIM-Filter: OpenDKIM Filter v2.11.0 a.mx.secunet.com D1BDB208AC\n" + "Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])\n" + "\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n" + "\t(No client certificate requested)\n" + "\tby a.mx.secunet.com (Postfix) with ESMTPS id D1BDB208AC\n" + "\tfor <steffen.klassert@secunet.com>; Fri, 29 Mar 2024 23:30:11 +0100 (CET)\n" + "Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140])\n" + "\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n" + "\t(No client certificate requested)\n" + "\tby am.mirrors.kernel.org (Postfix) with ESMTPS id 5B4B71F22D96\n" + "\tfor <steffen.klassert@secunet.com>; Fri, 29 Mar 2024 22:30:11 +0000 (UTC)\n" + "Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])\n" + "\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 5B38413DDA5;\n" + "\tFri, 29 Mar 2024 22:29:56 +0000 (UTC)\n" + "Authentication-Results: smtp.subspace.kernel.org;\n" + "\tdkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=\"af3tEf4r\"\n" + "X-Original-To: netdev@vger.kernel.org\n" + "Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])\n" + "\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n" + "\t(No client certificate requested)\n" + "\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id BF6BB28DC1\n" + "\tfor <netdev@vger.kernel.org>; Fri, 29 Mar 2024 22:29:55 +0000 (UTC)\n" + "Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201\n" + "ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n" + "\tt=1711751395; cv=none; b=r8+B1IFFag2HuI6zBBZXeH+ixu4+v7LcY5wOF3/6wgJ223E0kn3xcKcwo+b9S0QAED6F64X45+Ly5CTR1T3QpysOskVw+gmCEHA7C6kqyn9w3eNJ9i4Hl/Myvb/UKIYrlUrLJA2ZIcn/zPzyZPRsgS1BxBM9vsbq2bHqgBZeDjM=\n" + "ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org;\n" + "\ts=arc-20240116; t=1711751395; c=relaxed/simple;\n" + "\tbh=YclD2gFKAd0KYU/nqrMwp6tntz6Bp0xkpGNnD7iuj3c=;\n" + "\th=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References:\n" + "\t MIME-Version:Content-Type; b=rJ7Bn5B+eJPtxb4RNqsOXTzMjoxUUJ5pI/JOpQlNhT4ZcDDv6O01CZ1g3k27TriDuD2V9f4K/PGRphgNiz/gM/TFCcH5mAojrujO3pTOIJTI+aIIUz1rLn0diYOJV7K7HUs8cBglYDPH5ri6aPJNGmrNMWJbh0ZerjwDrcQhuoc=\n" + "ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=af3tEf4r; arc=none smtp.client-ip=10.30.226.201\n" + "Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2A38DC433F1;\n" + "\tFri, 29 Mar 2024 22:29:55 +0000 (UTC)\n" + "DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;\n" + "\ts=k20201202; t=1711751395;\n" + "\tbh=YclD2gFKAd0KYU/nqrMwp6tntz6Bp0xkpGNnD7iuj3c=;\n" + "\th=Date:From:To:Cc:Subject:In-Reply-To:References:From;\n" + "\tb=af3tEf4riCb4f2NQ149pjvDrIXXmmP43YUOkyHbXZ+M94QTqDI0JCGEF6C9SwDi2v\n" + "\t UbNo6lur4NhXefe9RSrYlvWkEgyygoEXlsnzAgBuwTthmMcxP2nKYOexYi7y8EYgAU\n" + "\t s+LYfSGZY1szJRSJJk68i3GvMqw/Vxj3slvg7t75/MisPpwS+jb6RoyLsnYv0RKoVL\n" + "\t 12qu5ji4XYH50ruUZsUfcfxQseOwTzwtSilm9SNsMlGhgFPnOmb3sh5+EZ9kkw1axQ\n" + "\t GhY5mxcMFxbnq+OPRpafTOvZpCjxq7fMQ4RgncWl/e6+tXnFeaTluLTysE2h8/dy/H\n" + "\t aDL1nOLZRHWXA==\n" + "Date: Fri, 29 Mar 2024 15:29:54 -0700\n" + "From: Jakub Kicinski <kuba@kernel.org>\n" + "To: Wojciech Drewek <wojciech.drewek@intel.com>\n" + "Cc: netdev@vger.kernel.org, intel-wired-lan@lists.osuosl.org,\n" + " simon.horman@corigine.com, anthony.l.nguyen@intel.com, edumazet@google.com,\n" + " pabeni@redhat.com, idosch@nvidia.com, przemyslaw.kitszel@intel.com,\n" + " marcin.szycik@linux.intel.com\n" + "Subject: Re: [PATCH net-next 2/3] ethtool: Introduce max power support\n" + "Message-ID: <20240329152954.26a7ce75@kernel.org>\n" + "In-Reply-To: <20240329092321.16843-3-wojciech.drewek@intel.com>\n" + "References: <20240329092321.16843-1-wojciech.drewek@intel.com>\n" + "\t<20240329092321.16843-3-wojciech.drewek@intel.com>\n" + "Precedence: bulk\n" + "X-Mailing-List: netdev@vger.kernel.org\n" + "List-Id: <netdev.vger.kernel.org>\n" + "List-Subscribe: <mailto:netdev+subscribe@vger.kernel.org>\n" + "List-Unsubscribe: <mailto:netdev+unsubscribe@vger.kernel.org>\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=\"US-ASCII\"\n" + "Content-Transfer-Encoding: 7bit\n" + "Return-Path: netdev+bounces-83478-steffen.klassert=secunet.com@vger.kernel.org\n" + "X-MS-Exchange-Organization-OriginalArrivalTime: 29 Mar 2024 22:30:12.5869\n" + " (UTC)\n" + "X-MS-Exchange-Organization-Network-Message-Id: b874bb8e-c3ad-4cd8-d138-08dc503fcc9e\n" + "X-MS-Exchange-Organization-OriginalClientIPAddress: 62.96.220.36\n" + "X-MS-Exchange-Organization-OriginalServerIPAddress: 10.53.40.202\n" + "X-MS-Exchange-Organization-Cross-Premises-Headers-Processed: cas-essen-02.secunet.de\n" + "X-MS-Exchange-Organization-OrderedPrecisionLatencyInProgress: LSRV=mbx-essen-01.secunet.de:TOTAL-HUB=0.416|SMR=0.329(SMRDE=0.004|SMRC=0.325(SMRCL=0.104|X-SMRCR=0.325))|CAT=0.086(CATRESL=0.022\n" + " (CATRESLP2R=0.018)|CATORES=0.058(CATRS=0.058(CATRS-Transport Rule\n" + " Agent=0.001|CATRS-Index Routing Agent=0.056\n" + " ))|CATORT=0.001(CATRT=0.001));2024-03-29T22:30:13.029Z\n" + "X-MS-Exchange-Forest-ArrivalHubServer: mbx-essen-01.secunet.de\n" + "X-MS-Exchange-Organization-AuthSource: cas-essen-02.secunet.de\n" + "X-MS-Exchange-Organization-AuthAs: Anonymous\n" + "X-MS-Exchange-Organization-FromEntityHeader: Internet\n" + "X-MS-Exchange-Organization-OriginalSize: 12132\n" + "X-MS-Exchange-Organization-HygienePolicy: Standard\n" + "X-MS-Exchange-Organization-MessageLatency: SRV=cas-essen-02.secunet.de:TOTAL-FE=25.002|SMR=0.025(SMRPI=0.022(SMRPI-FrontendProxyAgent=0.022))|SMS=0.002\n" + "X-MS-Exchange-Organization-Recipient-Limit-Verified: True\n" + "X-MS-Exchange-Organization-TotalRecipientCount: 1\n" + "X-MS-Exchange-Organization-Rules-Execution-History: 0b0cf904-14ac-4724-8bdf-482ee6223cf2%%%fd34672d-751c-45ae-a963-ed177fcabe23%%%d8080257-b0c3-47b4-b0db-23bc0c8ddb3c%%%95e591a2-5d7d-4afa-b1d0-7573d6c0a5d9%%%f7d0f6bc-4dcc-4876-8c5d-b3d6ddbb3d55%%%16355082-c50b-4214-9c7d-d39575f9f79b\n" + "X-MS-Exchange-Forest-RulesExecuted: mbx-essen-01\n" + "X-MS-Exchange-Organization-RulesExecuted: mbx-essen-01\n" + "X-MS-Exchange-Forest-IndexAgent-0: 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\n" + " l2HMSQWWLIsiLeUoyiXMAcrGVOoeEX/DM0RzD2lSJaJME3uJaDLl1D\n" + " IPSuKDLBkDBGO9Ih1/RdWLYmkxVckLkRdL8dVS7DUFpoK4HMpPZcZj\n" + " SgOw/0OyNi9WOBU5M2GGIzhKbMp2UdBJeydLtcPVNwpQhABlcrmlxS\n" + " IXHdOUxb0MOi1LbinFQ5aNZM7y7ckWdILlmIzqNBtSVjIY3yxtrcCB\n" + " ILK7vP3PyFQqirtZKisZzrAfwDM8/0lkPgt6QebYwruJr6FhS2jM2A\n" + " yAr8VolCdzKQz31Hxy3KfISsnzYSZQEqajmZCFJI8AV158mk1BoaXo\n" + " 9cNoyYduWU5TGX4Wm7+XTi7wOxmSP4UbN8xP1fgdwKtsCjwvMqks72\n" + " I8pmABJZTzCuEbA10aczJD6fpHnoH936Hah0kYl3HwIS8xLy9l6XWJ\n" + " zwtNdocyCmpc5wanIvxBIfChQ9i+SEtFVpTRyIN6l+gVjcFzDQcIxR\n" + " AwFIJmTOUk/E+aRBYQtZQLq3gBixfqdAlVo7VZKuexIl7KY9WgLnDm\n" + " NC/nKtX7SoaQOVxdCTWC2BLLHx1bSenxAbMD5T3afnjUIoDTru+msU\n" + " DyFLh75C6A1mxES5nMQ70V5k1liiKlhTDZeGYpah4xfsTOJ8m5JCF/\n" + " YMunchUGy2ibKDNEM4zw6TCDhbMlFx4ouN+S+JK3M8f4RZopiG/SmB\n" + " iZ0SlJ/ikVaSMModztFABGUuKDGGWBe4mRkSVxn7AXGqEvCJZ/Hxs4\n" + " rGTDNyR/J4eW5PlIjTj/TzPyAQB5OYdARCUZt6pMNuSEZN6pqodyK4\n" + " 2k5fVJrWttdPRksMyzGZ32WcrnXAjgGvZpFTAKlj7KpwqUe8szjCkl\n" + " +a3MLRzrZZTgcMeiEDmPOHxwHpUJH0bNDB9eWQLnyXTSRZHkirDbJH\n" + " VwiKyMcnLKaR/PyNXSKMRF6tNGtUk49kliGvCpmtGHF0dw7HlmDP35\n" + " +czC10mS4/InmOKdjnAA0zvPt4D/AsaXde/OJAAAAQrOAjw/eG1sIH\n" + " ZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi0xNiI/Pg0KPEVtYWls\n" + " U2V0Pg0KICA8VmVyc2lvbj4xNS4wLjAuMDwvVmVyc2lvbj4NCiAgPE\n" + " VtYWlscz4NCiAgICA8RW1haWwgU3RhcnRJbmRleD0iMTE4MyI+DQog\n" + " ICAgICA8RW1haWxTdHJpbmc+bWFyY2luLnN6eWNpa0BsaW51eC5pbn\n" + " RlbC5jb208L0VtYWlsU3RyaW5nPg0KICAgIDwvRW1haWw+DQogICAg\n" + " PEVtYWlsIFN0YXJ0SW5kZXg9IjEyNDkiPg0KICAgICAgPEVtYWlsU3\n" + " RyaW5nPndvamNpZWNoLmRyZXdla0BpbnRlbC5jb208L0VtYWlsU3Ry\n" + " aW5nPg0KICAgIDwvRW1haWw+DQogIDwvRW1haWxzPg0KPC9FbWFpbF\n" + " NldD4BDIUHPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRm\n" + " LTE2Ij8+DQo8Q29udGFjdFNldD4NCiAgPFZlcnNpb24+MTUuMC4wLj\n" + " A8L1ZlcnNpb24+DQogIDxDb250YWN0cz4NCiAgICA8Q29udGFjdCBT\n" + " dGFydEluZGV4PSIxMTY4Ij4NCiAgICAgIDxQZXJzb24gU3RhcnRJbm\n" + " RleD0iMTE2OCI+DQogICAgICAgIDxQZXJzb25TdHJpbmc+TWFyY2lu\n" + " PC9QZXJzb25TdHJpbmc+DQogICAgICA8L1BlcnNvbj4NCiAgICAgID\n" + " xFbWFpbHM+DQogICAgICAgIDxFbWFpbCBTdGFydEluZGV4PSIxMTgz\n" + " Ij4NCiAgICAgICAgICA8RW1haWxTdHJpbmc+bWFyY2luLnN6eWNpa0\n" + " BsaW51eC5pbnRlbC5jb208L0VtYWlsU3RyaW5nPg0KICAgICAgICA8\n" + " L0VtYWlsPg0KICAgICAgPC9FbWFpbHM+DQogICAgICA8Q29udGFjdF\n" + " N0cmluZz5NYXJjaW4gU3p5Y2lrICZsdDttYXJjaW4uc3p5Y2lrQGxp\n" + " bnV4LmludGVsLmNvbTwvQ29udGFjdFN0cmluZz4NCiAgICA8L0Nvbn\n" + " RhY3Q+DQogICAgPENvbnRhY3QgU3RhcnRJbmRleD0iMTIzMiI+DQog\n" + " ICAgICA8UGVyc29uIFN0YXJ0SW5kZXg9IjEyMzIiPg0KICAgICAgIC\n" + " A8UGVyc29uU3RyaW5nPldvamNpZWNoIERyZXdlazwvUGVyc29uU3Ry\n" + " aW5nPg0KICAgICAgPC9QZXJzb24+DQogICAgICA8RW1haWxzPg0KIC\n" + " AgICAgICA8RW1haWwgU3RhcnRJbmRleD0iMTI0OSI+DQogICAgICAg\n" + " ICAgPEVtYWlsU3RyaW5nPndvamNpZWNoLmRyZXdla0BpbnRlbC5jb2\n" + " 08L0VtYWlsU3RyaW5nPg0KICAgICAgICA8L0VtYWlsPg0KICAgICAg\n" + " PC9FbWFpbHM+DQogICAgICA8Q29udGFjdFN0cmluZz5Xb2pjaWVjaC\n" + " BEcmV3ZWsgJmx0O3dvamNpZWNoLmRyZXdla0BpbnRlbC5jb208L0Nv\n" + " bnRhY3RTdHJpbmc+DQogICAgPC9Db250YWN0Pg0KICA8L0NvbnRhY3\n" + " RzPg0KPC9Db250YWN0U2V0PgEOzwFSZXRyaWV2ZXJPcGVyYXRvciwx\n" + " MCwyO1JldHJpZXZlck9wZXJhdG9yLDExLDM7UG9zdERvY1BhcnNlck\n" + " 9wZXJhdG9yLDEwLDE7UG9zdERvY1BhcnNlck9wZXJhdG9yLDExLDA7\n" + " UG9zdFdvcmRCcmVha2VyRGlhZ25vc3RpY09wZXJhdG9yLDEwLDc7UG\n" + " 9zdFdvcmRCcmVha2VyRGlhZ25vc3RpY09wZXJhdG9yLDExLDA7VHJh\n" + " bnNwb3J0V3JpdGVyUHJvZHVjZXIsMjAsMjg=\n" + "X-MS-Exchange-Forest-IndexAgent: 1 4643\n" + "X-MS-Exchange-Forest-EmailMessageHash: 10B105DC\n" + "X-MS-Exchange-Forest-Language: en\n" + "X-MS-Exchange-Organization-Processed-By-Journaling: Journal Agent\n" + "\n" + "On Fri, 29 Mar 2024 10:23:20 +0100 Wojciech Drewek wrote:\n" + "> Some modules use nonstandard power levels. Adjust ethtool\n" + "> module implementation to support new attributes that will allow user\n" + "> to change maximum power.\n" + "> \n" + "> Add three new get attributes:\n" + "> ETHTOOL_A_MODULE_MAX_POWER_SET (used for set as well) - currently set\n" + "> maximum power in the cage\n" + "\n" + "1) I'd keep the ETHTOOL_A_MODULE_POWER_ prefix, consistently.\n" + "\n" + "2) The _SET makes it sound like an action. Can we go with\n" + " ETHTOOL_A_MODULE_POWER_MAX ? Or ETHTOOL_A_MODULE_POWER_LIMIT?\n" + " Yes, ETHTOOL_A_MODULE_POWER_LIMIT\n" + " ETHTOOL_A_MODULE_POWER_MAX\n" + " ETHTOOL_A_MODULE_POWER_MIN\n" + " would sound pretty good to me.\n" + "\n" + "> ETHTOOL_A_MODULE_MIN_POWER_ALLOWED - minimum power allowed in the\n" + "> cage reported by device\n" + "> ETHTOOL_A_MODULE_MAX_POWER_ALLOWED - maximum power allowed in the\n" + "> cage reported by device\n" + "> \n" + "> Add two new set attributes:\n" + "> ETHTOOL_A_MODULE_MAX_POWER_SET (used for get as well) - change\n" + "> maximum power in the cage to the given value (milliwatts)\n" + "> ETHTOOL_A_MODULE_MAX_POWER_RESET - reset maximum power setting to the\n" + "> default value\n" + "> \n" + "> Reviewed-by: Marcin Szycik <marcin.szycik@linux.intel.com>\n" + "> Signed-off-by: Wojciech Drewek <wojciech.drewek@intel.com>\n" + "> ---\n" + "> include/linux/ethtool.h | 17 +++++--\n" + "> include/uapi/linux/ethtool_netlink.h | 4 ++\n" + "> net/ethtool/module.c | 74 ++++++++++++++++++++++++++--\n" + "> net/ethtool/netlink.h | 2 +-\n" + "> 4 files changed, 87 insertions(+), 10 deletions(-)\n" + "> \n" + "> diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h\n" + "> index f3af6b31c9f1..74ed8997443a 100644\n" + "> --- a/include/linux/ethtool.h\n" + "> +++ b/include/linux/ethtool.h\n" + "> @@ -510,10 +510,18 @@ struct ethtool_module_eeprom {\n" + "> * @policy: The power mode policy enforced by the host for the plug-in module.\n" + "> * @mode: The operational power mode of the plug-in module. Should be filled by\n" + "> *\tdevice drivers on get operations.\n" + "> + * @min_pwr_allowed: minimum power allowed in the cage reported by device\n" + "> + * @max_pwr_allowed: maximum power allowed in the cage reported by device\n" + "> + * @max_pwr_set: maximum power currently set in the cage\n" + "> + * @max_pwr_reset: restore default minimum power\n" + "> */\n" + "> struct ethtool_module_power_params {\n" + "> \tenum ethtool_module_power_mode_policy policy;\n" + "> \tenum ethtool_module_power_mode mode;\n" + "> +\tu32 min_pwr_allowed;\n" + "> +\tu32 max_pwr_allowed;\n" + "> +\tu32 max_pwr_set;\n" + "> +\tu8 max_pwr_reset;\n" + "\n" + "bool ?\n" + "\n" + "> diff --git a/include/uapi/linux/ethtool_netlink.h b/include/uapi/linux/ethtool_netlink.h\n" + "> index 3f89074aa06c..f7cd446b2a83 100644\n" + "> --- a/include/uapi/linux/ethtool_netlink.h\n" + "> +++ b/include/uapi/linux/ethtool_netlink.h\n" + "> @@ -882,6 +882,10 @@ enum {\n" + "> \tETHTOOL_A_MODULE_HEADER,\t\t/* nest - _A_HEADER_* */\n" + "> \tETHTOOL_A_MODULE_POWER_MODE_POLICY,\t/* u8 */\n" + "> \tETHTOOL_A_MODULE_POWER_MODE,\t\t/* u8 */\n" + "> +\tETHTOOL_A_MODULE_MAX_POWER_SET,\t\t/* u32 */\n" + "> +\tETHTOOL_A_MODULE_MIN_POWER_ALLOWED,\t/* u32 */\n" + "> +\tETHTOOL_A_MODULE_MAX_POWER_ALLOWED,\t/* u32 */\n" + "> +\tETHTOOL_A_MODULE_MAX_POWER_RESET,\t/* u8 */\n" + "\n" + "flag ?\n" + "\n" + "> @@ -77,6 +86,7 @@ static int module_fill_reply(struct sk_buff *skb,\n" + "> \t\t\t const struct ethnl_reply_data *reply_base)\n" + "> {\n" + "> \tconst struct module_reply_data *data = MODULE_REPDATA(reply_base);\n" + "> +\tu32 temp;\n" + "\n" + "tmp ? temp sounds too much like temperature in context of power\n" + "\n" + "> static int\n" + "> ethnl_set_module(struct ethnl_req_info *req_info, struct genl_info *info)\n" + "> {\n" + "> \tstruct ethtool_module_power_params power = {};\n" + "> \tstruct ethtool_module_power_params power_new;\n" + "> -\tconst struct ethtool_ops *ops;\n" + "> \tstruct net_device *dev = req_info->dev;\n" + "> \tstruct nlattr **tb = info->attrs;\n" + "> +\tconst struct ethtool_ops *ops;\n" + "> \tint ret;\n" + "> +\tbool mod;\n" + "> \n" + "> \tops = dev->ethtool_ops;\n" + "> \n" + "> -\tpower_new.policy = nla_get_u8(tb[ETHTOOL_A_MODULE_POWER_MODE_POLICY]);\n" + "> \tret = ops->get_module_power_cfg(dev, &power, info->extack);\n" + "> \tif (ret < 0)\n" + "> \t\treturn ret;\n" + "> \n" + "> -\tif (power_new.policy == power.policy)\n" + "> +\tpower_new.max_pwr_set = power.max_pwr_set;\n" + "> +\tpower_new.policy = power.policy;\n" + "> +\n" + "> +\tethnl_update_u32(&power_new.max_pwr_set,\n" + "> +\t\t\t tb[ETHTOOL_A_MODULE_MAX_POWER_SET], &mod);\n" + "> +\tif (mod) {\n" + "\n" + "I think we can use if (tb[ETHTOOL_A_MODULE_MAX_POWER_SET]) here\n" + "Less error prone for future additions.\n" + "\n" + "> +\t\tif (power_new.max_pwr_set > power.max_pwr_allowed) {\n" + "> +\t\t\tNL_SET_ERR_MSG(info->extack, \"Provided value is higher than maximum allowed\");\n" + "\n" + "NL_SET_ERR_MSG_ATTR() to point at the bad attribute.\n" + "\n" + "> +\t\t\treturn -EINVAL;\n" + "\n" + "ERANGE?\n" + "\n" + "> +\t\t} else if (power_new.max_pwr_set < power.min_pwr_allowed) {\n" + "> +\t\t\tNL_SET_ERR_MSG(info->extack, \"Provided value is lower than minimum allowed\");\n" + "> +\t\t\treturn -EINVAL;\n" + "> +\t\t}\n" + "> +\t}\n" + "> +\n" + "> +\tethnl_update_policy(&power_new.policy,\n" + "> +\t\t\t tb[ETHTOOL_A_MODULE_POWER_MODE_POLICY], &mod);\n" + "> +\tethnl_update_u8(&power_new.max_pwr_reset,\n" + "> +\t\t\ttb[ETHTOOL_A_MODULE_MAX_POWER_RESET], &mod);\n" + "\n" + "I reckon reset should not be allowed if none of the max_pwr values \n" + "are set (i.e. most likely driver doesn't support the config)?\n" + "\n" + "> +\tif (!mod)\n" + "> \t\treturn 0;\n" + "> \n" + "> +\tif (power_new.max_pwr_reset && power_new.max_pwr_set) {\n" + "\n" + "Mmm. How is that gonna work? The driver is going to set max_pwr_set\n" + "to what's currently configured. So the user is expected to send\n" + "ETHTOOL_A_MODULE_MAX_POWER_SET = 0\n" + "ETHTOOL_A_MODULE_MAX_POWER_RESET = 1\n" + "to reset?\n" + "\n" + "Just:\n" + "\n" + "\tif (tb[ETHTOOL_A_MODULE_MAX_POWER_RESET] &&\n" + "\t tb[ETHTOOL_A_MODULE_MAX_POWER_SET])\n" + "\n" + "And you can validate this before doing any real work.\n" + "\n" + "> +\t\tNL_SET_ERR_MSG(info->extack, \"Maximum power set and reset cannot be used at the same time\");\n" + "> +\t\treturn 0;\n" + "> +\t}\n" + "> +\n" + "> \tret = ops->set_module_power_cfg(dev, &power_new, info->extack);\n" + "> \treturn ret < 0 ? ret : 1;\n" + "> }\n" + "-- \n" pw-bot: cr -7495cf0a8ddb13148285ce4dd5a12ce1a14772f35eff9901d923dafa9bafc013 +526630b35578d87b6a909be27420cc1335440d799f38b6cc4cc1a94f2fe9e2ff
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.