diff mbox series

net: phylink: disable BMCR_ISOLATE in phylink_mii_c22_pcs_config

Message ID 20201020191249.756832-1-robert.hancock@calian.com
State Superseded
Headers show
Series net: phylink: disable BMCR_ISOLATE in phylink_mii_c22_pcs_config | expand

Commit Message

Robert Hancock Oct. 20, 2020, 7:12 p.m. UTC
The Xilinx PCS/PMA PHY requires that BMCR_ISOLATE be disabled for proper
operation in 1000BaseX mode. It should be safe to ensure this bit is
disabled in phylink_mii_c22_pcs_config in all cases.

Signed-off-by: Robert Hancock <robert.hancock@calian.com>
---
 drivers/net/phy/phylink.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Russell King (Oracle) Oct. 21, 2020, 9:27 a.m. UTC | #1
On Tue, Oct 20, 2020 at 01:12:49PM -0600, Robert Hancock wrote:
> The Xilinx PCS/PMA PHY requires that BMCR_ISOLATE be disabled for proper
> operation in 1000BaseX mode. It should be safe to ensure this bit is
> disabled in phylink_mii_c22_pcs_config in all cases.
> 
> Signed-off-by: Robert Hancock <robert.hancock@calian.com>

Reviewed-by: Russell King <rmk+kernel@armlinux.org.uk>

Please re-send when netdev is open, thanks.
Jakub Kicinski Oct. 21, 2020, 5:37 p.m. UTC | #2
On Wed, 21 Oct 2020 10:27:36 +0100 Russell King - ARM Linux admin wrote:
> On Tue, Oct 20, 2020 at 01:12:49PM -0600, Robert Hancock wrote:

> > The Xilinx PCS/PMA PHY requires that BMCR_ISOLATE be disabled for proper

> > operation in 1000BaseX mode. It should be safe to ensure this bit is

> > disabled in phylink_mii_c22_pcs_config in all cases.

> > 

> > Signed-off-by: Robert Hancock <robert.hancock@calian.com>  

> 

> Reviewed-by: Russell King <rmk+kernel@armlinux.org.uk>

> 

> Please re-send when netdev is open, thanks.


And please mark it as [PATCH net-next] when you resend next week -
just to be sure I don't get confused and apply this as a fix.
diff mbox series

Patch

diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c
index fe2296fdda19..5d8c015bc9f2 100644
--- a/drivers/net/phy/phylink.c
+++ b/drivers/net/phy/phylink.c
@@ -2515,9 +2515,10 @@  int phylink_mii_c22_pcs_config(struct mdio_device *pcs, unsigned int mode,
 
 	changed = ret > 0;
 
+	/* Ensure ISOLATE bit is disabled */
 	bmcr = mode == MLO_AN_INBAND ? BMCR_ANENABLE : 0;
 	ret = mdiobus_modify(pcs->bus, pcs->addr, MII_BMCR,
-			     BMCR_ANENABLE, bmcr);
+			     BMCR_ANENABLE | BMCR_ISOLATE, bmcr);
 	if (ret < 0)
 		return ret;