diff options
Diffstat (limited to 'net/dsa/port.c')
| -rw-r--r-- | net/dsa/port.c | 7 | 
1 files changed, 6 insertions, 1 deletions
| diff --git a/net/dsa/port.c b/net/dsa/port.c index 231b2d494f1c..a58fdd362574 100644 --- a/net/dsa/port.c +++ b/net/dsa/port.c @@ -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;  	} |