[PATCH net] net: stmmac: Fix false "invalid port speed" warning

Serge Semin fancer.lancer at gmail.com
Fri Aug 9 12:21:39 PDT 2024


If the internal SGMII/TBI/RTBI PCS is available in a DW GMAC or DW QoS Eth
instance and there is no "snps,ps-speed" property specified (or the
plat_stmmacenet_data::mac_port_sel_speed field is left zero), then the
next warning will be printed to the system log:

> [  294.611899] stmmaceth 1f060000.ethernet: invalid port speed

By the original intention the "snps,ps-speed" property was supposed to be
utilized on the platforms with the MAC2MAC link setup to fix the link
speed with the specified value. But since it's possible to have a device
with the DW *MAC with the SGMII/TBI/RTBI interface attached to a PHY, then
the property is actually optional (which is also confirmed by the DW MAC
DT-bindings). Thus it's absolutely normal to have the
plat_stmmacenet_data::mac_port_sel_speed field zero initialized indicating
that there is no need in the MAC-speed fixing and the denoted warning is
false.

Fix the warning by permitting the plat_stmmacenet_data::mac_port_sel_speed
field to have the zero value in case if the internal PCS is available.

Fixes: 02e57b9d7c8c ("drivers: net: stmmac: add port selection programming")
Signed-off-by: Serge Semin <fancer.lancer at gmail.com>

---

Note this fix will get to be mainly actual after the next patch is merged
in:
https://lore.kernel.org/netdev/E1sauuS-000tvz-6E@rmk-PC.armlinux.org.uk/

Cc: Russell King (Oracle) <linux at armlinux.org.uk>
Cc: Alexei Starovoitov <ast at kernel.org>
Cc: Andrew Halaney <ahalaney at redhat.com>
---
 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index f3a1b179aaea..fb63df1b99c0 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -3422,7 +3422,7 @@ static int stmmac_hw_setup(struct net_device *dev, bool ptp_register)
 		if ((speed == SPEED_10) || (speed == SPEED_100) ||
 		    (speed == SPEED_1000)) {
 			priv->hw->ps = speed;
-		} else {
+		} else if (speed) {
 			dev_warn(priv->device, "invalid port speed\n");
 			priv->hw->ps = 0;
 		}
-- 
2.43.0




More information about the linux-arm-kernel mailing list