diff options
author | Vladimir Oltean <vladimir.oltean@nxp.com> | 2023-05-16 18:44:10 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2023-05-17 12:59:53 +0100 |
commit | c46e78ba9a7a09da4f192dc8df15c4e8a07fb9e0 (patch) | |
tree | db66f8b7295732da1fa31b67fc50fb9891c7ca8f | |
parent | 60829145f1e2650b31ebe6a0ec70a9725b38fa2c (diff) | |
download | linux-c46e78ba9a7a09da4f192dc8df15c4e8a07fb9e0.tar.gz linux-c46e78ba9a7a09da4f192dc8df15c4e8a07fb9e0.tar.bz2 linux-c46e78ba9a7a09da4f192dc8df15c4e8a07fb9e0.zip |
net: pcs: xpcs: fix C73 AN not getting enabled
The XPCS expects clause 73 (copper backplane) autoneg to follow the
ethtool autoneg bit. It actually did that until the blamed
commit inaptly replaced state->an_enabled (coming from ethtool) with
phylink_autoneg_inband() (coming from the device tree or struct
phylink_config), as part of an unrelated phylink_pcs API conversion.
Russell King suggests that state->an_enabled from the original code was
just a proxy for the ethtool Autoneg bit, and that the correct way of
restoring the functionality is to check for this bit in the advertising
mask.
Fixes: 11059740e616 ("net: pcs: xpcs: convert to phylink_pcs_ops")
Link: https://lore.kernel.org/netdev/ZGNt2MFeRolKGFck@shell.armlinux.org.uk/
Suggested-by: Russell King (Oracle) <linux@armlinux.org.uk>
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/pcs/pcs-xpcs.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/net/pcs/pcs-xpcs.c b/drivers/net/pcs/pcs-xpcs.c index f19d48c94fe0..72f25e778840 100644 --- a/drivers/net/pcs/pcs-xpcs.c +++ b/drivers/net/pcs/pcs-xpcs.c @@ -873,7 +873,7 @@ int xpcs_do_config(struct dw_xpcs *xpcs, phy_interface_t interface, switch (compat->an_mode) { case DW_AN_C73: - if (phylink_autoneg_inband(mode)) { + if (test_bit(ETHTOOL_LINK_MODE_Autoneg_BIT, advertising)) { ret = xpcs_config_aneg_c73(xpcs, compat); if (ret) return ret; |