mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-01-21 11:12:08 +07:00
Merge branch 'mv88e6xxx-fixed-link-fixes'
Andrew Lunn says: ==================== mv88e6xxx fixed link fixes Recent changes for how the MAC is configured broke fixed links, as used by CPU/DSA ports, and for SFPs when phylink cannot be used. The first fix is unchanged from v1. The second fix takes a different solution than v1. If a CPU or DSA port is known to have a PHYLINK instance, configure the port down before instantiating the PHYLINK, so it is in the down state as expected by PHYLINK. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
047c7308ea
@ -709,7 +709,8 @@ static void mv88e6xxx_mac_link_down(struct dsa_switch *ds, int port,
|
||||
ops = chip->info->ops;
|
||||
|
||||
mv88e6xxx_reg_lock(chip);
|
||||
if (!mv88e6xxx_port_ppu_updates(chip, port) && ops->port_set_link)
|
||||
if ((!mv88e6xxx_port_ppu_updates(chip, port) ||
|
||||
mode == MLO_AN_FIXED) && ops->port_set_link)
|
||||
err = ops->port_set_link(chip, port, LINK_FORCED_DOWN);
|
||||
mv88e6xxx_reg_unlock(chip);
|
||||
|
||||
@ -731,7 +732,7 @@ static void mv88e6xxx_mac_link_up(struct dsa_switch *ds, int port,
|
||||
ops = chip->info->ops;
|
||||
|
||||
mv88e6xxx_reg_lock(chip);
|
||||
if (!mv88e6xxx_port_ppu_updates(chip, port)) {
|
||||
if (!mv88e6xxx_port_ppu_updates(chip, port) || mode == MLO_AN_FIXED) {
|
||||
/* FIXME: for an automedia port, should we force the link
|
||||
* down here - what if the link comes up due to "other" media
|
||||
* while we're bringing the port up, how is the exclusivity
|
||||
|
@ -670,11 +670,16 @@ int dsa_port_link_register_of(struct dsa_port *dp)
|
||||
{
|
||||
struct dsa_switch *ds = dp->ds;
|
||||
struct device_node *phy_np;
|
||||
int port = dp->index;
|
||||
|
||||
if (!ds->ops->adjust_link) {
|
||||
phy_np = of_parse_phandle(dp->dn, "phy-handle", 0);
|
||||
if (of_phy_is_fixed_link(dp->dn) || phy_np)
|
||||
if (of_phy_is_fixed_link(dp->dn) || phy_np) {
|
||||
if (ds->ops->phylink_mac_link_down)
|
||||
ds->ops->phylink_mac_link_down(ds, port,
|
||||
MLO_AN_FIXED, PHY_INTERFACE_MODE_NA);
|
||||
return dsa_port_phylink_register(dp);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user