2020-02-25 12:41:38

by Sudheesh Mavila

[permalink] [raw]
Subject: [PATCH] net: phy: corrected the return value for genphy_check_and_restart_aneg

When auto-negotiation is not required, return value should be zero.

Signed-off-by: Sudheesh Mavila <[email protected]>
---
drivers/net/phy/phy_device.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c
index 6a5056e0ae77..36cde3dac4c3 100644
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
@@ -1806,10 +1806,13 @@ int genphy_check_and_restart_aneg(struct phy_device *phydev, bool restart)
restart = true;
}

- if (restart)
- ret = genphy_restart_aneg(phydev);
+ /* Only restart aneg if we are advertising something different
+ * than we were before.
+ */
+ if (restart > 0)
+ return genphy_restart_aneg(phydev);

- return ret;
+ return 0;
}
EXPORT_SYMBOL(genphy_check_and_restart_aneg);

--
2.17.1


2020-02-25 12:50:47

by Russell King (Oracle)

[permalink] [raw]
Subject: Re: [PATCH] net: phy: corrected the return value for genphy_check_and_restart_aneg

On Tue, Feb 25, 2020 at 05:52:08PM +0530, Sudheesh Mavila wrote:
> When auto-negotiation is not required, return value should be zero.
>
> Signed-off-by: Sudheesh Mavila <[email protected]>

Hi,

Thanks for spotting this problem. However, it looks like the same
problem also exists in genphy_c45_check_and_restart_aneg(). It would
be a good idea to fix both at the same time.

Thanks.

> ---
> drivers/net/phy/phy_device.c | 9 ++++++---
> 1 file changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c
> index 6a5056e0ae77..36cde3dac4c3 100644
> --- a/drivers/net/phy/phy_device.c
> +++ b/drivers/net/phy/phy_device.c
> @@ -1806,10 +1806,13 @@ int genphy_check_and_restart_aneg(struct phy_device *phydev, bool restart)
> restart = true;
> }
>
> - if (restart)
> - ret = genphy_restart_aneg(phydev);
> + /* Only restart aneg if we are advertising something different
> + * than we were before.
> + */
> + if (restart > 0)
> + return genphy_restart_aneg(phydev);
>
> - return ret;
> + return 0;
> }
> EXPORT_SYMBOL(genphy_check_and_restart_aneg);
>
> --
> 2.17.1
>
>

--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line in suburbia: sync at 12.1Mbps down 622kbps up
According to speedtest.net: 11.9Mbps down 500kbps up

2020-02-25 13:37:55

by Andrew Lunn

[permalink] [raw]
Subject: Re: [PATCH] net: phy: corrected the return value for genphy_check_and_restart_aneg

On Tue, Feb 25, 2020 at 05:52:08PM +0530, Sudheesh Mavila wrote:
> When auto-negotiation is not required, return value should be zero.
>
> Signed-off-by: Sudheesh Mavila <[email protected]>

Fixes: 2a10ab043ac5 ("net: phy: add genphy_check_and_restart_aneg()")

Andrew

2020-02-25 14:00:55

by Heiner Kallweit

[permalink] [raw]
Subject: Re: [PATCH] net: phy: corrected the return value for genphy_check_and_restart_aneg

On 25.02.2020 13:22, Sudheesh Mavila wrote:
> When auto-negotiation is not required, return value should be zero.
>
> Signed-off-by: Sudheesh Mavila <[email protected]>
> ---
> drivers/net/phy/phy_device.c | 9 ++++++---
> 1 file changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c
> index 6a5056e0ae77..36cde3dac4c3 100644
> --- a/drivers/net/phy/phy_device.c
> +++ b/drivers/net/phy/phy_device.c
> @@ -1806,10 +1806,13 @@ int genphy_check_and_restart_aneg(struct phy_device *phydev, bool restart)
> restart = true;
> }
>
> - if (restart)
> - ret = genphy_restart_aneg(phydev);
> + /* Only restart aneg if we are advertising something different
> + * than we were before.
> + */
> + if (restart > 0)

In addition to what Russell and Andrew commented already:
- You shouldn't compare a bool with an int. There's no need to change
the original condition.
- The comment isn't really needed, and it's wrong. See the comment few
lines earlier.
- After this change the initialization of ret isn't needed any longer.

> + return genphy_restart_aneg(phydev);
>
> - return ret;
> + return 0;
> }
> EXPORT_SYMBOL(genphy_check_and_restart_aneg);
>
>