Received: by 2002:ab2:784b:0:b0:1fd:adc2:8405 with SMTP id m11csp153598lqp; Sun, 9 Jun 2024 22:19:56 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCVM7w9THRpMk0AM6Ul6Fqw+A6nB9eHDNkS1iQRLE+Hjg+67XrGmrnZ/0GuwqoEex9/c3YXzOlSpqnc10ph+p9YuBlMf1sRiRxPXz6qO+g== X-Google-Smtp-Source: AGHT+IGPDsUlgHCyLeczn+tKI/dRPS9r03srWNrJRc2wukMGmPJhVKRr0OjvFeVB5RU946UidhYi X-Received: by 2002:a05:6a00:c88:b0:704:331c:cfb6 with SMTP id d2e1a72fcca58-704331cd4b4mr3351315b3a.14.1717996796614; Sun, 09 Jun 2024 22:19:56 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1717996796; cv=pass; d=google.com; s=arc-20160816; b=D+g/+e9n1mvnczvkEm7b6NEYdV/sLR+0R/LRuBvpxNYkOzlNmjnajmqEbj3UOQIsV6 CgyD9hrJYROJHugD4cMSb/K29VqQL9Z6DndSWhUWFQLuIEevvkx15h6X3M9zcM21nOGy scjvApWI9WQdVf7m1bWvB5QkYD53b2yWVdazKdT2w3BFtyehxw1i323PY2Fw2gursgvY GOijKb99tAIKBVhs8m9iBbXikVJxUPGLBEJVFhlk9lS1BogUO1Nd/1focM6J83tFXOJD Je0rKRMux4iS7fszEhSm2bPDctcsmyOq00O592Nfxrq2CdPtRh0VGyy+w5bpbMzMJQV3 d5kg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:list-unsubscribe:list-subscribe:list-id:precedence :references:message-id:subject:cc:to:from:date; bh=N+3E5Rc+brK37xmCkJbNnFY2bIkOV/90uyurJ5gTfNU=; fh=fwGUSxAzFY8M7iimhx72hGKubXP5uYEBlq8jQINRRSk=; b=j314Bmx/jHyGWVQKRoXOtva6CXrPIwARFSSfeWbsHqZdlODkSyKFuOSYzsEwA01fWb 5Zkyi5q8DDeg5WmxWnbIIoj1CzfgM9mphJ5YOgY1vmLr8tmWGS73/XZqnM2Q0aVVcA66 iOhyaDOKeIBHr89nhgqqkWVE6BvWPK0EvNuPfvymK1s5wgV+hugE2b1sTfJ1zG/Dwpj+ WOXe+8a4sBx7AJcXOF70ErJJRAf7/pYD5Z0nINMEs64XgffAfLaqSFjA+HqrWgCbEmYl swqzG8KMhpZl0IHsTUvWUvqg4UOavQnyagTsS+kOoFJGudAigdXLInPd27iNMoOqW4TB FOAQ==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1 spf=pass spfdomain=pengutronix.de); spf=pass (google.com: domain of linux-kernel+bounces-207646-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-207646-linux.lists.archive=gmail.com@vger.kernel.org" Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id d2e1a72fcca58-703fd55c9e8si3334599b3a.298.2024.06.09.22.19.56 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Jun 2024 22:19:56 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-207646-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; arc=pass (i=1 spf=pass spfdomain=pengutronix.de); spf=pass (google.com: domain of linux-kernel+bounces-207646-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-207646-linux.lists.archive=gmail.com@vger.kernel.org" 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 sv.mirrors.kernel.org (Postfix) with ESMTPS id 33CEF281252 for ; Mon, 10 Jun 2024 05:19:56 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 6FDF2F9D4; Mon, 10 Jun 2024 05:19:50 +0000 (UTC) Received: from metis.whiteo.stw.pengutronix.de (metis.whiteo.stw.pengutronix.de [185.203.201.7]) (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 4EC1CD304 for ; Mon, 10 Jun 2024 05:19:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.203.201.7 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717996789; cv=none; b=Qs0XXfvslYo0PKYaboeL9Y5amna30IGvz0Q3pykP1scJjMXjCETvqnw1NfUv0ef/XtwqS2ihDWBIe11zS9+NTl84isA+ah9flHftPhCtNbCsopqiypKD1bi7ANFD7ycXHahUZpZOJfn+9eqYoWi8MaRLZSh2TZy/FRoFoqoP1SI= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717996789; c=relaxed/simple; bh=g8i8kFB4TIVpY3Nz/WcNPFscAVNpwKVeg3EK32oUVTc=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=t4k0GqgAP0W/pssrUVqNOKviT/YV5LRQzhAdsxGtSz698H/jL/OPiqqSncrZVoa7WEPApA7Qd8yVWrRKuCJGmgPqYVrML6XO3mU+c5nJ9LyLOV08A1pKKlvg14RXoKK7WumjNHacuxcoVsWg2SFFG5krjiakTNn/zPtl+8a//sk= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=pengutronix.de; spf=pass smtp.mailfrom=pengutronix.de; arc=none smtp.client-ip=185.203.201.7 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=pengutronix.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pengutronix.de Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.whiteo.stw.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1sGXO8-0004F8-Mh; Mon, 10 Jun 2024 07:16:12 +0200 Received: from [2a0a:edc0:2:b01:1d::c5] (helo=pty.whiteo.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sGXO5-001E4V-Tt; Mon, 10 Jun 2024 07:16:09 +0200 Received: from ore by pty.whiteo.stw.pengutronix.de with local (Exim 4.96) (envelope-from ) id 1sGXO5-002foM-2g; Mon, 10 Jun 2024 07:16:09 +0200 Date: Mon, 10 Jun 2024 07:16:09 +0200 From: Oleksij Rempel To: Kory Maincent Cc: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Donald Hunter , Thomas Petazzoni , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Dent Project , kernel@pengutronix.de Subject: Re: [PATCH net-next v2 2/8] net: ethtool: pse-pd: Expand C33 PSE status with class, power and extended state Message-ID: References: <20240607-feature_poe_power_cap-v2-0-c03c2deb83ab@bootlin.com> <20240607-feature_poe_power_cap-v2-2-c03c2deb83ab@bootlin.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20240607-feature_poe_power_cap-v2-2-c03c2deb83ab@bootlin.com> X-Sent-From: Pengutronix Hildesheim X-URL: http://www.pengutronix.de/ X-Accept-Language: de,en X-Accept-Content-Type: text/plain X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ore@pengutronix.de X-SA-Exim-Scanned: No (on metis.whiteo.stw.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org Hi Köry, Thank you for your work. On Fri, Jun 07, 2024 at 09:30:19AM +0200, Kory Maincent wrote: > From: "Kory Maincent (Dent Project)" ... > /** > diff --git a/include/uapi/linux/ethtool.h b/include/uapi/linux/ethtool.h > index 8733a3117902..ef65ad4612d2 100644 > --- a/include/uapi/linux/ethtool.h > +++ b/include/uapi/linux/ethtool.h > @@ -752,6 +752,47 @@ enum ethtool_module_power_mode { > ETHTOOL_MODULE_POWER_MODE_HIGH, > }; > > +/* C33 PSE extended state */ > +enum ethtool_c33_pse_ext_state { > + ETHTOOL_C33_PSE_EXT_STATE_UNKNOWN = 1, I assume, In case the state is unknown, better to set it to 0 and not report it to the user space in the first place. Do we really need it? > + ETHTOOL_C33_PSE_EXT_STATE_DETECTION, > + ETHTOOL_C33_PSE_EXT_STATE_CLASSIFICATION_FAILURE, > + ETHTOOL_C33_PSE_EXT_STATE_HARDWARE_ISSUE, > + ETHTOOL_C33_PSE_EXT_STATE_VOLTAGE_ISSUE, > + ETHTOOL_C33_PSE_EXT_STATE_CURRENT_ISSUE, > + ETHTOOL_C33_PSE_EXT_STATE_POWER_BUDGET_EXCEEDED, What is the difference between POWER_BUDGET_EXCEEDED and STATE_CURRENT_ISSUE->CRT_OVERLOAD? If there is some difference, it should be commented. Please provide comments describing how all of this states and substates should be used. > + ETHTOOL_C33_PSE_EXT_STATE_CONFIG, > + ETHTOOL_C33_PSE_EXT_STATE_TEMP_ISSUE, > +}; ... > /** > * enum ethtool_pse_types - Types of PSE controller. > * @ETHTOOL_PSE_UNKNOWN: Type of PSE controller is unknown > diff --git a/include/uapi/linux/ethtool_netlink.h b/include/uapi/linux/ethtool_netlink.h > index b49b804b9495..ccbe8294dfd5 100644 > --- a/include/uapi/linux/ethtool_netlink.h > +++ b/include/uapi/linux/ethtool_netlink.h > @@ -915,6 +915,10 @@ enum { > ETHTOOL_A_C33_PSE_ADMIN_STATE, /* u32 */ > ETHTOOL_A_C33_PSE_ADMIN_CONTROL, /* u32 */ > ETHTOOL_A_C33_PSE_PW_D_STATUS, /* u32 */ > + ETHTOOL_A_C33_PSE_PW_CLASS, /* u32 */ > + ETHTOOL_A_C33_PSE_ACTUAL_PW, /* u32 */ > + ETHTOOL_A_C33_PSE_EXT_STATE, /* u8 */ > + ETHTOOL_A_C33_PSE_EXT_SUBSTATE, /* u8 */ Please, increase the size to u32 for state and substate. > /* add new constants above here */ > __ETHTOOL_A_PSE_CNT, > diff --git a/net/ethtool/pse-pd.c b/net/ethtool/pse-pd.c > index 2c981d443f27..3d74cfe7765b 100644 > --- a/net/ethtool/pse-pd.c > +++ b/net/ethtool/pse-pd.c > @@ -86,7 +86,14 @@ static int pse_reply_size(const struct ethnl_req_info *req_base, > len += nla_total_size(sizeof(u32)); /* _C33_PSE_ADMIN_STATE */ > if (st->c33_pw_status > 0) > len += nla_total_size(sizeof(u32)); /* _C33_PSE_PW_D_STATUS */ > - > + if (st->c33_pw_class > 0) > + len += nla_total_size(sizeof(u32)); /* _C33_PSE_PW_CLASS */ > + if (st->c33_actual_pw > 0) > + len += nla_total_size(sizeof(u32)); /* _C33_PSE_ACTUAL_PW */ > + if (st->c33_ext_state_info.c33_pse_ext_state) > + len += nla_total_size(sizeof(u8)); /* _C33_PSE_EXT_STATE */ > + if (st->c33_ext_state_info.__c33_pse_ext_substate) > + len += nla_total_size(sizeof(u8)); /* _C33_PSE_EXT_SUBSTATE */ Substate can be properly decoded only if state is not zero. > return len; > } > > @@ -117,6 +124,26 @@ static int pse_fill_reply(struct sk_buff *skb, > st->c33_pw_status)) > return -EMSGSIZE; > > + if (st->c33_pw_class > 0 && > + nla_put_u32(skb, ETHTOOL_A_C33_PSE_PW_CLASS, > + st->c33_pw_class)) > + return -EMSGSIZE; > + > + if (st->c33_actual_pw > 0 && > + nla_put_u32(skb, ETHTOOL_A_C33_PSE_ACTUAL_PW, > + st->c33_actual_pw)) > + return -EMSGSIZE; > + > + if (st->c33_ext_state_info.c33_pse_ext_state > 0 && > + nla_put_u8(skb, ETHTOOL_A_C33_PSE_EXT_STATE, > + st->c33_ext_state_info.c33_pse_ext_state)) > + return -EMSGSIZE; > + > + if (st->c33_ext_state_info.__c33_pse_ext_substate > 0 && > + nla_put_u8(skb, ETHTOOL_A_C33_PSE_EXT_SUBSTATE, > + st->c33_ext_state_info.__c33_pse_ext_substate)) > + return -EMSGSIZE; ditto. Please update Documentation/networking/ethtool-netlink.rst -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |