]> www.infradead.org Git - users/willy/xarray.git/commitdiff
net: stmmac: dwmac4: fix PCS duplex mode decode
authorRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Tue, 6 Aug 2024 13:08:41 +0000 (14:08 +0100)
committerJakub Kicinski <kuba@kernel.org>
Thu, 8 Aug 2024 15:25:04 +0000 (08:25 -0700)
dwmac4 was decoding the duplex mode from the GMAC_PHYIF_CONTROL_STATUS
register incorrectly, using GMAC_PHYIF_CTRLSTATUS_LNKMOD_MASK (value 1)
rather than GMAC_PHYIF_CTRLSTATUS_LNKMOD (bit 16). Fix this.

Fixes: 70523e639bf8c ("drivers: net: stmmac: reworking the PCS code.")
Reviewed-by: Andrew Halaney <ahalaney@redhat.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Reviewed-by: Serge Semin <fancer.lancer@gmail.com>
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Link: https://patch.msgid.link/E1sbJvd-001rGD-E3@rmk-PC.armlinux.org.uk
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/stmicro/stmmac/dwmac4.h
drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c

index d3c5306f1c41f7aca6f6a9170f7946a3abfe6cd0..93a78fd0737b6c93c2bef9ed7ad87de50dcac52d 100644 (file)
@@ -573,8 +573,6 @@ static inline u32 mtl_low_credx_base_addr(const struct dwmac4_addrs *addrs,
 #define GMAC_PHYIF_CTRLSTATUS_LNKSTS           BIT(19)
 #define GMAC_PHYIF_CTRLSTATUS_JABTO            BIT(20)
 #define GMAC_PHYIF_CTRLSTATUS_FALSECARDET      BIT(21)
-/* LNKMOD */
-#define GMAC_PHYIF_CTRLSTATUS_LNKMOD_MASK      0x1
 /* LNKSPEED */
 #define GMAC_PHYIF_CTRLSTATUS_SPEED_125                0x2
 #define GMAC_PHYIF_CTRLSTATUS_SPEED_25         0x1
index f98741d2607ec45b6558d3da817c3e10792386c8..31c387cc5f269dd604d1d810137c80ac53b0d63e 100644 (file)
@@ -786,7 +786,7 @@ static void dwmac4_phystatus(void __iomem *ioaddr, struct stmmac_extra_stats *x)
                else
                        x->pcs_speed = SPEED_10;
 
-               x->pcs_duplex = (status & GMAC_PHYIF_CTRLSTATUS_LNKMOD_MASK);
+               x->pcs_duplex = (status & GMAC_PHYIF_CTRLSTATUS_LNKMOD);
 
                pr_info("Link is Up - %d/%s\n", (int)x->pcs_speed,
                        x->pcs_duplex ? "Full" : "Half");