Re: [PATCH] phy: phy_ethtool_ksettings_set: Don't discard phy_start_aneg's return
From: Heiner Kallweit <hkallweit1@gmail.com>
Date: 2021-11-10 08:14:37
On 08.11.2021 15:25, Bastian Germann wrote:
Am 06.11.21 um 22:52 schrieb Heiner Kallweit:quoted
On 05.11.2021 16:36, bage@linutronix.de wrote:quoted
From: Bastian Germann <redacted> Take the return of phy_start_aneg into account so that ethtool will handle negotiation errors and not silently accept invalid input. Fixes: 2d55173e71b0 ("phy: add generic function to support ksetting support") Signed-off-by: Bastian Germann <redacted> Reviewed-by: Benedikt Spranger <redacted>In addition to what Andrew said already: - This patch won't apply on net due to a4db9055fdb9.Hi Heiner, Thanks for your remarks. I would have gotten the first one right if the netdev tree was documented in the MAINTAINERS file (T: ...) and not only in netdev-FAQ. Maybe you want to address that.
I'd interpret the MAINTAINERS structure in a way that if no T: entry is given the one from the next upper directory should be used. And for drivers/net/ the T: entries are available. It's a typical case that a subsystem has a bigger number of drivers which use the repo of the subsystem, and just few drivers have an own repo, working with pull requests. IMO having to add the subsystem T: entries to every driver entry would be not needed overhead. Not sure however which userspace tools use the T: entries and whether they are smart enough to consider entry hierarchies.
Thanks, Bastianquoted
- Patch misses the "net" annotation. - Prefix should be "net: phy:", not "phy:". At least the formal aspects should have been covered by the internal review.quoted
--- drivers/net/phy/phy.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index a3bfb156c83d..f740b533abba 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c@@ -770,6 +770,8 @@ static int phy_poll_aneg_done(struct phy_device *phydev)int phy_ethtool_ksettings_set(struct phy_device *phydev, const struct ethtool_link_ksettings *cmd) { + int ret = 0;Why initializing ret?quoted
+ __ETHTOOL_DECLARE_LINK_MODE_MASK(advertising); u8 autoneg = cmd->base.autoneg; u8 duplex = cmd->base.duplex;@@ -815,10 +817,10 @@ int phy_ethtool_ksettings_set(struct phy_device *phydev,phydev->mdix_ctrl = cmd->base.eth_tp_mdix_ctrl; /* Restart the PHY */ - _phy_start_aneg(phydev); + ret = _phy_start_aneg(phydev); mutex_unlock(&phydev->lock); - return 0; + return ret; } EXPORT_SYMBOL(phy_ethtool_ksettings_set);