* [PATCH net-next] net: phy: phylink: fix DSA mac_select_pcs() introduction
@ 2022-02-21 17:10 Russell King (Oracle)
2022-02-21 17:53 ` Vladimir Oltean
2022-02-23 1:10 ` patchwork-bot+netdevbpf
0 siblings, 2 replies; 3+ messages in thread
From: Russell King (Oracle) @ 2022-02-21 17:10 UTC (permalink / raw)
To: Vladimir Oltean
Cc: Andrew Lunn, Heiner Kallweit, David S. Miller, Jakub Kicinski,
Vivien Didelot, Florian Fainelli, netdev
Vladimir Oltean reports that probing on DSA drivers that aren't yet
populating supported_interfaces now fails. Fix this by allowing
phylink to detect whether DSA actually provides an underlying
mac_select_pcs() implementation.
Reported-by: Vladimir Oltean <olteanv@gmail.com>
Fixes: bde018222c6b ("net: dsa: add support for phylink mac_select_pcs()")
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
---
drivers/net/phy/phylink.c | 14 +++++++++++---
net/dsa/port.c | 2 +-
2 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c
index 26f1219a005f..28aa23533107 100644
--- a/drivers/net/phy/phylink.c
+++ b/drivers/net/phy/phylink.c
@@ -74,6 +74,7 @@ struct phylink {
struct work_struct resolve;
bool mac_link_dropped;
+ bool using_mac_select_pcs;
struct sfp_bus *sfp_bus;
bool sfp_may_have_phy;
@@ -416,7 +417,7 @@ static int phylink_validate_mac_and_pcs(struct phylink *pl,
int ret;
/* Get the PCS for this interface mode */
- if (pl->mac_ops->mac_select_pcs) {
+ if (pl->using_mac_select_pcs) {
pcs = pl->mac_ops->mac_select_pcs(pl->config, state->interface);
if (IS_ERR(pcs))
return PTR_ERR(pcs);
@@ -791,7 +792,7 @@ static void phylink_major_config(struct phylink *pl, bool restart,
phylink_dbg(pl, "major config %s\n", phy_modes(state->interface));
- if (pl->mac_ops->mac_select_pcs) {
+ if (pl->using_mac_select_pcs) {
pcs = pl->mac_ops->mac_select_pcs(pl->config, state->interface);
if (IS_ERR(pcs)) {
phylink_err(pl,
@@ -1205,11 +1206,17 @@ struct phylink *phylink_create(struct phylink_config *config,
phy_interface_t iface,
const struct phylink_mac_ops *mac_ops)
{
+ bool using_mac_select_pcs = false;
struct phylink *pl;
int ret;
- /* Validate the supplied configuration */
if (mac_ops->mac_select_pcs &&
+ mac_ops->mac_select_pcs(config, PHY_INTERFACE_MODE_NA) !=
+ ERR_PTR(-EOPNOTSUPP))
+ using_mac_select_pcs = true;
+
+ /* Validate the supplied configuration */
+ if (using_mac_select_pcs &&
phy_interface_empty(config->supported_interfaces)) {
dev_err(config->dev,
"phylink: error: empty supported_interfaces but mac_select_pcs() method present\n");
@@ -1233,6 +1240,7 @@ struct phylink *phylink_create(struct phylink_config *config,
return ERR_PTR(-EINVAL);
}
+ pl->using_mac_select_pcs = using_mac_select_pcs;
pl->phy_state.interface = iface;
pl->link_interface = iface;
if (iface == PHY_INTERFACE_MODE_MOCA)
diff --git a/net/dsa/port.c b/net/dsa/port.c
index 258782bf4271..367d141c6971 100644
--- a/net/dsa/port.c
+++ b/net/dsa/port.c
@@ -1058,8 +1058,8 @@ dsa_port_phylink_mac_select_pcs(struct phylink_config *config,
phy_interface_t interface)
{
struct dsa_port *dp = container_of(config, struct dsa_port, pl_config);
+ struct phylink_pcs *pcs = ERR_PTR(-EOPNOTSUPP);
struct dsa_switch *ds = dp->ds;
- struct phylink_pcs *pcs = NULL;
if (ds->ops->phylink_mac_select_pcs)
pcs = ds->ops->phylink_mac_select_pcs(ds, dp->index, interface);
--
2.30.2
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH net-next] net: phy: phylink: fix DSA mac_select_pcs() introduction
2022-02-21 17:10 [PATCH net-next] net: phy: phylink: fix DSA mac_select_pcs() introduction Russell King (Oracle)
@ 2022-02-21 17:53 ` Vladimir Oltean
2022-02-23 1:10 ` patchwork-bot+netdevbpf
1 sibling, 0 replies; 3+ messages in thread
From: Vladimir Oltean @ 2022-02-21 17:53 UTC (permalink / raw)
To: Russell King (Oracle)
Cc: Andrew Lunn, Heiner Kallweit, David S. Miller, Jakub Kicinski,
Vivien Didelot, Florian Fainelli, netdev
On Mon, Feb 21, 2022 at 05:10:52PM +0000, Russell King (Oracle) wrote:
> Vladimir Oltean reports that probing on DSA drivers that aren't yet
> populating supported_interfaces now fails. Fix this by allowing
> phylink to detect whether DSA actually provides an underlying
> mac_select_pcs() implementation.
>
> Reported-by: Vladimir Oltean <olteanv@gmail.com>
> Fixes: bde018222c6b ("net: dsa: add support for phylink mac_select_pcs()")
> Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
> ---
Tested-by: Vladimir Oltean <olteanv@gmail.com>
Thanks.
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH net-next] net: phy: phylink: fix DSA mac_select_pcs() introduction
2022-02-21 17:10 [PATCH net-next] net: phy: phylink: fix DSA mac_select_pcs() introduction Russell King (Oracle)
2022-02-21 17:53 ` Vladimir Oltean
@ 2022-02-23 1:10 ` patchwork-bot+netdevbpf
1 sibling, 0 replies; 3+ messages in thread
From: patchwork-bot+netdevbpf @ 2022-02-23 1:10 UTC (permalink / raw)
To: Russell King
Cc: olteanv, andrew, hkallweit1, davem, kuba, vivien.didelot,
f.fainelli, netdev
Hello:
This patch was applied to netdev/net-next.git (master)
by Jakub Kicinski <kuba@kernel.org>:
On Mon, 21 Feb 2022 17:10:52 +0000 you wrote:
> Vladimir Oltean reports that probing on DSA drivers that aren't yet
> populating supported_interfaces now fails. Fix this by allowing
> phylink to detect whether DSA actually provides an underlying
> mac_select_pcs() implementation.
>
> Reported-by: Vladimir Oltean <olteanv@gmail.com>
> Fixes: bde018222c6b ("net: dsa: add support for phylink mac_select_pcs()")
> Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
>
> [...]
Here is the summary with links:
- [net-next] net: phy: phylink: fix DSA mac_select_pcs() introduction
https://git.kernel.org/netdev/net-next/c/1054457006d4
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2022-02-23 1:10 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-02-21 17:10 [PATCH net-next] net: phy: phylink: fix DSA mac_select_pcs() introduction Russell King (Oracle)
2022-02-21 17:53 ` Vladimir Oltean
2022-02-23 1:10 ` patchwork-bot+netdevbpf
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).