All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net] net: sparx5: fix error handling in sparx5_port_open()
@ 2022-11-17 12:59 ` Liu Jian
  0 siblings, 0 replies; 12+ messages in thread
From: Liu Jian @ 2022-11-17 12:59 UTC (permalink / raw)
  To: davem, edumazet, kuba, pabeni, lars.povlsen, Steen.Hegelund,
	daniel.machon, UNGLinuxDriver, linux, horatiu.vultur,
	bjarni.jonasson
  Cc: netdev, linux-arm-kernel, liujian56

If phylink_of_phy_connect() fails, the port should be disabled.
If sparx5_serdes_set()/phy_power_on() fails, the port should be
disabled and the phylink should be stopped and disconnected.

Fixes: 946e7fd5053a ("net: sparx5: add port module support")
Fixes: f3cad2611a77 ("net: sparx5: add hostmode with phylink support")
Signed-off-by: Liu Jian <liujian56@huawei.com>
---
 .../net/ethernet/microchip/sparx5/sparx5_netdev.c  | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/microchip/sparx5/sparx5_netdev.c b/drivers/net/ethernet/microchip/sparx5/sparx5_netdev.c
index 19516ccad533..d078156581d5 100644
--- a/drivers/net/ethernet/microchip/sparx5/sparx5_netdev.c
+++ b/drivers/net/ethernet/microchip/sparx5/sparx5_netdev.c
@@ -104,7 +104,7 @@ static int sparx5_port_open(struct net_device *ndev)
 	err = phylink_of_phy_connect(port->phylink, port->of_node, 0);
 	if (err) {
 		netdev_err(ndev, "Could not attach to PHY\n");
-		return err;
+		goto err_connect;
 	}
 
 	phylink_start(port->phylink);
@@ -116,10 +116,20 @@ static int sparx5_port_open(struct net_device *ndev)
 			err = sparx5_serdes_set(port->sparx5, port, &port->conf);
 		else
 			err = phy_power_on(port->serdes);
-		if (err)
+		if (err) {
 			netdev_err(ndev, "%s failed\n", __func__);
+			goto out_power;
+		}
 	}
 
+	return 0;
+
+out_power:
+	phylink_stop(port->phylink);
+	phylink_disconnect_phy(port->phylink);
+err_connect:
+	sparx5_port_enable(port, false);
+
 	return err;
 }
 
-- 
2.17.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2022-11-22 10:51 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-11-17 12:59 [PATCH net] net: sparx5: fix error handling in sparx5_port_open() Liu Jian
2022-11-17 12:59 ` Liu Jian
2022-11-17 13:15 ` Russell King (Oracle)
2022-11-17 13:15   ` Russell King (Oracle)
2022-11-17 14:29   ` Steen Hegelund
2022-11-17 14:29     ` Steen Hegelund
2022-11-22  9:28 ` Steen Hegelund
2022-11-22  9:28   ` Steen Hegelund
2022-11-22 10:10   ` Steen Hegelund
2022-11-22 10:10     ` Steen Hegelund
2022-11-22 10:50 ` patchwork-bot+netdevbpf
2022-11-22 10:50   ` patchwork-bot+netdevbpf

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.