diff options
author | Russell King <rmk+kernel@armlinux.org.uk> | 2019-10-04 17:05:58 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-10-04 18:11:08 -0700 |
commit | 4cf6c57e61fee954f7b7685de31b80ec26843d27 (patch) | |
tree | 9e09dd1b4a1045a649f9b12fd1775d794700abab /drivers | |
parent | 2d819d250a1393a3e725715425ab70a0e0772a71 (diff) | |
download | linux-4cf6c57e61fee954f7b7685de31b80ec26843d27.tar.bz2 |
net: phy: fix write to mii-ctrl1000 register
When userspace writes to the MII_ADVERTISE register, we update phylib's
advertising mask and trigger a renegotiation. However, writing to the
MII_CTRL1000 register, which contains the gigabit advertisement, does
neither. This can lead to phylib's copy of the advertisement becoming
de-synced with the values in the PHY register set, which can result in
incorrect negotiation resolution.
Fixes: 5502b218e001 ("net: phy: use phy_resolve_aneg_linkmode in genphy_read_status")
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/phy/phy.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index 7c92afd36bbe..119e6f466056 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c @@ -457,6 +457,11 @@ int phy_mii_ioctl(struct phy_device *phydev, struct ifreq *ifr, int cmd) val); change_autoneg = true; break; + case MII_CTRL1000: + mii_ctrl1000_mod_linkmode_adv_t(phydev->advertising, + val); + change_autoneg = true; + break; default: /* do nothing */ break; |