diff options
author | Heiner Kallweit <hkallweit1@gmail.com> | 2019-01-09 02:20:28 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-01-10 16:57:24 -0500 |
commit | b19bce0335e25b9069ddb10d234e673bbd46d2f4 (patch) | |
tree | bca424927c3c5e89627450b4bd219af6df6f2fe9 | |
parent | c5715b8fabfca0ef85903f8bad2189940ed41cc8 (diff) |
net: ethernet: mediatek: fix warning in phy_start_aneg
linux 5.0-rc1 shows following warning on bpi-r2/mt7623 bootup:
[ 5.170597] WARNING: CPU: 3 PID: 1 at drivers/net/phy/phy.c:548 phy_start_aneg+0x110/0x144
[ 5.178826] called from state READY
....
[ 5.264111] [<c0629fd4>] (phy_start_aneg) from [<c0e3e720>] (mtk_init+0x414/0x47c)
[ 5.271630] r7:df5f5eec r6:c0f08c48 r5:00000000 r4:dea67800
[ 5.277256] [<c0e3e30c>] (mtk_init) from [<c07dabbc>] (register_netdevice+0x98/0x51c)
[ 5.285035] r8:00000000 r7:00000000 r6:c0f97080 r5:c0f08c48 r4:dea67800
[ 5.291693] [<c07dab24>] (register_netdevice) from [<c07db06c>] (register_netdev+0x2c/0x44)
[ 5.299989] r8:00000000 r7:dea2e608 r6:deacea00 r5:dea2e604 r4:dea67800
[ 5.306646] [<c07db040>] (register_netdev) from [<c06326d8>] (mtk_probe+0x668/0x7ac)
[ 5.314336] r5:dea2e604 r4:dea2e040
[ 5.317890] [<c0632070>] (mtk_probe) from [<c05a78fc>] (platform_drv_probe+0x58/0xa8)
[ 5.325670] r10:c0f86bac r9:00000000 r8:c0fbe578 r7:00000000 r6:c0f86bac r5:00000000
[ 5.333445] r4:deacea10
[ 5.335963] [<c05a78a4>] (platform_drv_probe) from [<c05a5248>] (really_probe+0x2d8/0x424)
maybe other boards using this generic driver are affected
v2:
optimization:
- phy_set_max_speed() is only needed if you want to reduce the
max speed, typically if the PHY supports 1Gbps but the MAC
supports 100Mbps only.
- The pause parameters are autonegotiated. Except you have a specific
need you normally don't need to manually fiddle with this.
- phy_start_aneg() is called implicitly by the phylib state machine,
you shouldn't call it manually except you have a good excuse.
- netif_carrier_on/netif_carrier_off in mtk_phy_link_adjust() isn't
needed. It's done by phy_link_change() in phylib.
Signed-off-by: Frank Wunderlich <frank-w@public-files.de>
Reviewed-by: Heiner Kallweit <hkallweit1@gmail.com>
Acked-by: Sean Wang <sean.wang@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/ethernet/mediatek/mtk_eth_soc.c | 16 |
1 files changed, 0 insertions, 16 deletions
diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c index 399f565dd85a..2968d29a992f 100644 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c | |||
@@ -258,11 +258,6 @@ static void mtk_phy_link_adjust(struct net_device *dev) | |||
258 | 258 | ||
259 | mtk_w32(mac->hw, mcr, MTK_MAC_MCR(mac->id)); | 259 | mtk_w32(mac->hw, mcr, MTK_MAC_MCR(mac->id)); |
260 | 260 | ||
261 | if (dev->phydev->link) | ||
262 | netif_carrier_on(dev); | ||
263 | else | ||
264 | netif_carrier_off(dev); | ||
265 | |||
266 | if (!of_phy_is_fixed_link(mac->of_node)) | 261 | if (!of_phy_is_fixed_link(mac->of_node)) |
267 | phy_print_status(dev->phydev); | 262 | phy_print_status(dev->phydev); |
268 | } | 263 | } |
@@ -347,17 +342,6 @@ static int mtk_phy_connect(struct net_device *dev) | |||
347 | if (mtk_phy_connect_node(eth, mac, np)) | 342 | if (mtk_phy_connect_node(eth, mac, np)) |
348 | goto err_phy; | 343 | goto err_phy; |
349 | 344 | ||
350 | dev->phydev->autoneg = AUTONEG_ENABLE; | ||
351 | dev->phydev->speed = 0; | ||
352 | dev->phydev->duplex = 0; | ||
353 | |||
354 | phy_set_max_speed(dev->phydev, SPEED_1000); | ||
355 | phy_support_asym_pause(dev->phydev); | ||
356 | linkmode_copy(dev->phydev->advertising, dev->phydev->supported); | ||
357 | linkmode_set_bit(ETHTOOL_LINK_MODE_Autoneg_BIT, | ||
358 | dev->phydev->advertising); | ||
359 | phy_start_aneg(dev->phydev); | ||
360 | |||
361 | of_node_put(np); | 345 | of_node_put(np); |
362 | 346 | ||
363 | return 0; | 347 | return 0; |