mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-16 12:46:55 +07:00
net: phylink: pcs: add 802.3 clause 45 helpers
Implement helpers for PCS accessed via the MII bus using 802.3 clause 45 cycles for 10GBASE-R. Only link up/down is supported, 10G full duplex is assumed. Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
74db1c18d8
commit
b8679ef8be
@ -2274,4 +2274,34 @@ void phylink_mii_c22_pcs_an_restart(struct mdio_device *pcs)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(phylink_mii_c22_pcs_an_restart);
|
||||
|
||||
#define C45_ADDR(d,a) (MII_ADDR_C45 | (d) << 16 | (a))
|
||||
void phylink_mii_c45_pcs_get_state(struct mdio_device *pcs,
|
||||
struct phylink_link_state *state)
|
||||
{
|
||||
struct mii_bus *bus = pcs->bus;
|
||||
int addr = pcs->addr;
|
||||
int stat;
|
||||
|
||||
stat = mdiobus_read(bus, addr, C45_ADDR(MDIO_MMD_PCS, MDIO_STAT1));
|
||||
if (stat < 0) {
|
||||
state->link = false;
|
||||
return;
|
||||
}
|
||||
|
||||
state->link = !!(stat & MDIO_STAT1_LSTATUS);
|
||||
if (!state->link)
|
||||
return;
|
||||
|
||||
switch (state->interface) {
|
||||
case PHY_INTERFACE_MODE_10GBASER:
|
||||
state->speed = SPEED_10000;
|
||||
state->duplex = DUPLEX_FULL;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(phylink_mii_c45_pcs_get_state);
|
||||
|
||||
MODULE_LICENSE("GPL v2");
|
||||
|
@ -323,4 +323,6 @@ int phylink_mii_c22_pcs_set_advertisement(struct mdio_device *pcs,
|
||||
const struct phylink_link_state *state);
|
||||
void phylink_mii_c22_pcs_an_restart(struct mdio_device *pcs);
|
||||
|
||||
void phylink_mii_c45_pcs_get_state(struct mdio_device *pcs,
|
||||
struct phylink_link_state *state);
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user