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
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
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
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);
>
>