Patch "net: mdio: mdio-bitbang: Fix C45 read/write protocol" has been added to the 6.4-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    net: mdio: mdio-bitbang: Fix C45 read/write protocol

to the 6.4-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     net-mdio-mdio-bitbang-fix-c45-read-write-protocol.patch
and it can be found in the queue-6.4 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit b08528505c9e0c8b60ca9989445d7e065b2a628f
Author: Serge Semin <fancer.lancer@xxxxxxxxx>
Date:   Wed Aug 16 21:06:52 2023 +0300

    net: mdio: mdio-bitbang: Fix C45 read/write protocol
    
    [ Upstream commit 2572ce62415cf3b632391091447252e2661ed520 ]
    
    Based on the original code semantic in case of Clause 45 MDIO, the address
    command is supposed to be followed by the command sending the MMD address,
    not the CSR address. The commit 002dd3de097c ("net: mdio: mdio-bitbang:
    Separate C22 and C45 transactions") has erroneously broken that. So most
    likely due to an unfortunate variable name it switched the code to sending
    the CSR address. In our case it caused the protocol malfunction so the
    read operation always failed with the turnaround bit always been driven to
    one by PHY instead of zero. Fix that by getting back the correct
    behaviour: sending MMD address command right after the regular address
    command.
    
    Fixes: 002dd3de097c ("net: mdio: mdio-bitbang: Separate C22 and C45 transactions")
    Signed-off-by: Serge Semin <fancer.lancer@xxxxxxxxx>
    Reviewed-by: Andrew Lunn <andrew@xxxxxxx>
    Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/mdio/mdio-bitbang.c b/drivers/net/mdio/mdio-bitbang.c
index b83932562be21..81b7748c10ce0 100644
--- a/drivers/net/mdio/mdio-bitbang.c
+++ b/drivers/net/mdio/mdio-bitbang.c
@@ -186,7 +186,7 @@ int mdiobb_read_c45(struct mii_bus *bus, int phy, int devad, int reg)
 	struct mdiobb_ctrl *ctrl = bus->priv;
 
 	mdiobb_cmd_addr(ctrl, phy, devad, reg);
-	mdiobb_cmd(ctrl, MDIO_C45_READ, phy, reg);
+	mdiobb_cmd(ctrl, MDIO_C45_READ, phy, devad);
 
 	return mdiobb_read_common(bus, phy);
 }
@@ -222,7 +222,7 @@ int mdiobb_write_c45(struct mii_bus *bus, int phy, int devad, int reg, u16 val)
 	struct mdiobb_ctrl *ctrl = bus->priv;
 
 	mdiobb_cmd_addr(ctrl, phy, devad, reg);
-	mdiobb_cmd(ctrl, MDIO_C45_WRITE, phy, reg);
+	mdiobb_cmd(ctrl, MDIO_C45_WRITE, phy, devad);
 
 	return mdiobb_write_common(bus, val);
 }



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux