Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

net: phy: marvell: Add mdix status reporting

Report MDI-X resolved state after link up.

Tested on Linkstreet 88E6193X internal PHYs.

Signed-off-by: Paul Davey <paul.davey@alliedtelesis.co.nz>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Link: https://patch.msgid.link/20241017015026.255224-1-paul.davey@alliedtelesis.co.nz
Signed-off-by: Paolo Abeni <pabeni@redhat.com>

authored by

Paul Davey and committed by
Paolo Abeni
c797cb9c d10f1a4e

+14
+14
drivers/net/phy/marvell.c
··· 176 176 #define MII_M1011_PHY_STATUS_FULLDUPLEX 0x2000 177 177 #define MII_M1011_PHY_STATUS_RESOLVED 0x0800 178 178 #define MII_M1011_PHY_STATUS_LINK 0x0400 179 + #define MII_M1011_PHY_STATUS_MDIX BIT(6) 179 180 180 181 #define MII_88E3016_PHY_SPEC_CTRL 0x10 181 182 #define MII_88E3016_DISABLE_SCRAMBLER 0x0200 ··· 1722 1721 phydev->speed = SPEED_UNKNOWN; 1723 1722 phydev->duplex = DUPLEX_UNKNOWN; 1724 1723 phydev->port = fiber ? PORT_FIBRE : PORT_TP; 1724 + 1725 + if (fiber) { 1726 + phydev->mdix = ETH_TP_MDI_INVALID; 1727 + } else { 1728 + /* The MDI-X state is set regardless of Autoneg being enabled 1729 + * and reflects forced MDI-X state as well as auto resolution 1730 + */ 1731 + if (status & MII_M1011_PHY_STATUS_RESOLVED) 1732 + phydev->mdix = status & MII_M1011_PHY_STATUS_MDIX ? 1733 + ETH_TP_MDI_X : ETH_TP_MDI; 1734 + else 1735 + phydev->mdix = ETH_TP_MDI_INVALID; 1736 + } 1725 1737 1726 1738 if (phydev->autoneg == AUTONEG_ENABLE) 1727 1739 err = marvell_read_status_page_an(phydev, fiber, status);