Commit 8bc1c543 authored by Luo Jie's avatar Luo Jie Committed by David S. Miller
Browse files

net: phy: adjust qca8081 master/slave seed value if link down



1. The master/slave seed needs to be updated when the link can't
be created.

2. The case where two qca8081 PHYs are connected each other and
master/slave seed is generated as the same value also needs
to be considered, so adding this code change into read_status
instead of link_change_notify.

Signed-off-by: default avatarLuo Jie <luoj@codeaurora.org>
Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 9d4dae29
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -1655,6 +1655,22 @@ static int qca808x_read_status(struct phy_device *phydev)
	else
		phydev->interface = PHY_INTERFACE_MODE_SMII;

	/* generate seed as a lower random value to make PHY linked as SLAVE easily,
	 * except for master/slave configuration fault detected.
	 * the reason for not putting this code into the function link_change_notify is
	 * the corner case where the link partner is also the qca8081 PHY and the seed
	 * value is configured as the same value, the link can't be up and no link change
	 * occurs.
	 */
	if (!phydev->link) {
		if (phydev->master_slave_state == MASTER_SLAVE_STATE_ERR) {
			qca808x_phy_ms_seed_enable(phydev, false);
		} else {
			qca808x_phy_ms_random_seed_set(phydev);
			qca808x_phy_ms_seed_enable(phydev, true);
		}
	}

	return 0;
}