diff mbox series

[net-next,v4,10/13] net: ethtool: pse-pd: Target the command to the requested PHY

Message ID 20231215171237.1152563-11-maxime.chevallier@bootlin.com (mailing list archive)
State New, archived
Headers show
Series Introduce PHY listing and link_topology tracking | expand

Commit Message

Maxime Chevallier Dec. 15, 2023, 5:12 p.m. UTC
PSE and PD configuration is a PHY-specific command. Instead of targeting
the command towards dev->phydev, use the request to pick the targeted
PHY device.

Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
---
V4: No changes
V3: No changes
V2: New patch

 net/ethtool/pse-pd.c | 14 +++-----------
 1 file changed, 3 insertions(+), 11 deletions(-)

Comments

Andrew Lunn Dec. 18, 2023, 9:58 a.m. UTC | #1
On Fri, Dec 15, 2023 at 06:12:32PM +0100, Maxime Chevallier wrote:
> PSE and PD configuration is a PHY-specific command. Instead of targeting
> the command towards dev->phydev, use the request to pick the targeted
> PHY device.
> 
> Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
> ---
> V4: No changes
> V3: No changes
> V2: New patch
> 
>  net/ethtool/pse-pd.c | 14 +++-----------
>  1 file changed, 3 insertions(+), 11 deletions(-)
> 
> diff --git a/net/ethtool/pse-pd.c b/net/ethtool/pse-pd.c
> index cc478af77111..0d9cd9c87104 100644
> --- a/net/ethtool/pse-pd.c
> +++ b/net/ethtool/pse-pd.c
> @@ -31,17 +31,10 @@ const struct nla_policy ethnl_pse_get_policy[ETHTOOL_A_PSE_HEADER + 1] = {
>  	[ETHTOOL_A_PSE_HEADER] = NLA_POLICY_NESTED(ethnl_header_policy),
>  };
>  
> -static int pse_get_pse_attributes(struct net_device *dev,
> +static int pse_get_pse_attributes(struct phy_device *phydev,
>  				  struct netlink_ext_ack *extack,
>  				  struct pse_reply_data *data)
>  {
> -	struct phy_device *phydev = dev->phydev;
> -
> -	if (!phydev) {
> -		NL_SET_ERR_MSG(extack, "No PHY is attached");
> -		return -EOPNOTSUPP;
> -	}
> -

It would be good to say in the commit message why it is safe to remove
this.

> @@ -132,7 +124,7 @@ ethnl_set_pse(struct ethnl_req_info *req_info, struct genl_info *info)
>  	/* this values are already validated by the ethnl_pse_set_policy */
>  	config.admin_cotrol = nla_get_u32(tb[ETHTOOL_A_PODL_PSE_ADMIN_CONTROL]);
>  
> -	phydev = dev->phydev;
> +	phydev = req_info->phydev;
>  	if (!phydev) {
>  		NL_SET_ERR_MSG(info->extack, "No PHY is attached");
>  		return -EOPNOTSUPP;

So you removed one test, but this one stays?

   Andrew
Maxime Chevallier Dec. 21, 2023, 5:31 p.m. UTC | #2
Hi Andrew,

Sorry I forgot to reply to that one...

On Mon, 18 Dec 2023 10:58:30 +0100
Andrew Lunn <andrew@lunn.ch> wrote:

> On Fri, Dec 15, 2023 at 06:12:32PM +0100, Maxime Chevallier wrote:
> > PSE and PD configuration is a PHY-specific command. Instead of targeting
> > the command towards dev->phydev, use the request to pick the targeted
> > PHY device.
> > 
> > Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
> > ---
> > V4: No changes
> > V3: No changes
> > V2: New patch
> > 
> >  net/ethtool/pse-pd.c | 14 +++-----------
> >  1 file changed, 3 insertions(+), 11 deletions(-)
> > 
> > diff --git a/net/ethtool/pse-pd.c b/net/ethtool/pse-pd.c
> > index cc478af77111..0d9cd9c87104 100644
> > --- a/net/ethtool/pse-pd.c
> > +++ b/net/ethtool/pse-pd.c
> > @@ -31,17 +31,10 @@ const struct nla_policy ethnl_pse_get_policy[ETHTOOL_A_PSE_HEADER + 1] = {
> >  	[ETHTOOL_A_PSE_HEADER] = NLA_POLICY_NESTED(ethnl_header_policy),
> >  };
> >  
> > -static int pse_get_pse_attributes(struct net_device *dev,
> > +static int pse_get_pse_attributes(struct phy_device *phydev,
> >  				  struct netlink_ext_ack *extack,
> >  				  struct pse_reply_data *data)
> >  {
> > -	struct phy_device *phydev = dev->phydev;
> > -
> > -	if (!phydev) {
> > -		NL_SET_ERR_MSG(extack, "No PHY is attached");
> > -		return -EOPNOTSUPP;
> > -	}
> > -  
> 
> It would be good to say in the commit message why it is safe to remove
> this.

That's a good catch, this removal is wrong and will be put back in the
next iteration.

> > @@ -132,7 +124,7 @@ ethnl_set_pse(struct ethnl_req_info *req_info, struct genl_info *info)
> >  	/* this values are already validated by the ethnl_pse_set_policy */
> >  	config.admin_cotrol = nla_get_u32(tb[ETHTOOL_A_PODL_PSE_ADMIN_CONTROL]);
> >  
> > -	phydev = dev->phydev;
> > +	phydev = req_info->phydev;
> >  	if (!phydev) {
> >  		NL_SET_ERR_MSG(info->extack, "No PHY is attached");
> >  		return -EOPNOTSUPP;  
> 
> So you removed one test, but this one stays?

Thanks for the review,

Maxime
diff mbox series

Patch

diff --git a/net/ethtool/pse-pd.c b/net/ethtool/pse-pd.c
index cc478af77111..0d9cd9c87104 100644
--- a/net/ethtool/pse-pd.c
+++ b/net/ethtool/pse-pd.c
@@ -31,17 +31,10 @@  const struct nla_policy ethnl_pse_get_policy[ETHTOOL_A_PSE_HEADER + 1] = {
 	[ETHTOOL_A_PSE_HEADER] = NLA_POLICY_NESTED(ethnl_header_policy),
 };
 
-static int pse_get_pse_attributes(struct net_device *dev,
+static int pse_get_pse_attributes(struct phy_device *phydev,
 				  struct netlink_ext_ack *extack,
 				  struct pse_reply_data *data)
 {
-	struct phy_device *phydev = dev->phydev;
-
-	if (!phydev) {
-		NL_SET_ERR_MSG(extack, "No PHY is attached");
-		return -EOPNOTSUPP;
-	}
-
 	if (!phydev->psec) {
 		NL_SET_ERR_MSG(extack, "No PSE is attached");
 		return -EOPNOTSUPP;
@@ -64,7 +57,7 @@  static int pse_prepare_data(const struct ethnl_req_info *req_base,
 	if (ret < 0)
 		return ret;
 
-	ret = pse_get_pse_attributes(dev, info->extack, data);
+	ret = pse_get_pse_attributes(req_base->phydev, info->extack, data);
 
 	ethnl_ops_complete(dev);
 
@@ -124,7 +117,6 @@  ethnl_set_pse_validate(struct ethnl_req_info *req_info, struct genl_info *info)
 static int
 ethnl_set_pse(struct ethnl_req_info *req_info, struct genl_info *info)
 {
-	struct net_device *dev = req_info->dev;
 	struct pse_control_config config = {};
 	struct nlattr **tb = info->attrs;
 	struct phy_device *phydev;
@@ -132,7 +124,7 @@  ethnl_set_pse(struct ethnl_req_info *req_info, struct genl_info *info)
 	/* this values are already validated by the ethnl_pse_set_policy */
 	config.admin_cotrol = nla_get_u32(tb[ETHTOOL_A_PODL_PSE_ADMIN_CONTROL]);
 
-	phydev = dev->phydev;
+	phydev = req_info->phydev;
 	if (!phydev) {
 		NL_SET_ERR_MSG(info->extack, "No PHY is attached");
 		return -EOPNOTSUPP;