mirror of
https://github.com/openwrt/openwrt.git
synced 2025-01-23 04:48:22 +00:00
61ec9a8154
This series resolves a long term issue with Phylink and SFPs on DPAA2 hardware (LS1088,LS2088,LX2160) where a locking problem prevented the system from rebooting. Patches solving this issue existed prior to 6.2 but were not accepted upstream. See the original series on patchwork: https://patchwork.kernel.org/project/netdevbpf/cover/20221129141221.872653-1-vladimir.oltean@nxp.com/ And this thread on the Traverse forum: https://forum.traverse.com.au/t/reboot-command-regression-from-5-10-to-5-15-kernel/133/12 Signed-off-by: Mathew McBride <matt@traverse.com.au>
51 lines
1.6 KiB
Diff
51 lines
1.6 KiB
Diff
From 095ef388f714d622aa503fcccf20dc4095b72762 Mon Sep 17 00:00:00 2001
|
|
From: Vladimir Oltean <vladimir.oltean@nxp.com>
|
|
Date: Tue, 29 Nov 2022 16:12:13 +0200
|
|
Subject: [PATCH 06/14] net: dpaa2-mac: remove defensive check in
|
|
dpaa2_mac_disconnect()
|
|
|
|
dpaa2_mac_disconnect() will only be called with a NULL mac->phylink if
|
|
dpaa2_mac_connect() failed, or was never called.
|
|
|
|
The callers are these:
|
|
|
|
dpaa2_eth_disconnect_mac():
|
|
|
|
if (dpaa2_eth_is_type_phy(priv))
|
|
dpaa2_mac_disconnect(priv->mac);
|
|
|
|
dpaa2_switch_port_disconnect_mac():
|
|
|
|
if (dpaa2_switch_port_is_type_phy(port_priv))
|
|
dpaa2_mac_disconnect(port_priv->mac);
|
|
|
|
priv->mac can be NULL, but in that case, dpaa2_eth_is_type_phy() returns
|
|
false, and dpaa2_mac_disconnect() is never called. Similar for
|
|
dpaa2-switch.
|
|
|
|
When priv->mac is non-NULL, it means that dpaa2_mac_connect() returned
|
|
zero (success), and therefore, priv->mac->phylink is also a valid
|
|
pointer.
|
|
|
|
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
|
|
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
|
|
Reviewed-by: Ioana Ciornei <ioana.ciornei@nxp.com>
|
|
Tested-by: Ioana Ciornei <ioana.ciornei@nxp.com>
|
|
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|
---
|
|
drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c | 3 ---
|
|
1 file changed, 3 deletions(-)
|
|
|
|
--- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c
|
|
+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c
|
|
@@ -446,9 +446,6 @@ err_pcs_destroy:
|
|
|
|
void dpaa2_mac_disconnect(struct dpaa2_mac *mac)
|
|
{
|
|
- if (!mac->phylink)
|
|
- return;
|
|
-
|
|
phylink_disconnect_phy(mac->phylink);
|
|
phylink_destroy(mac->phylink);
|
|
dpaa2_pcs_destroy(mac);
|