]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
net: ethernet: cavium: octeon_mgmt: use phy_start and phy_stop
authorIvan Khoronzhuk <ivan.khoronzhuk@gmail.com>
Fri, 25 Sep 2020 12:44:39 +0000 (15:44 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 14 Oct 2020 09:55:54 +0000 (11:55 +0200)
[ Upstream commit 4663ff60257aec4ee1e2e969a7c046f0aff35ab8 ]

To start also "phy state machine", with UP state as it should be,
the phy_start() has to be used, in another case machine even is not
triggered. After this change negotiation is supposed to be triggered
by SM workqueue.

It's not correct usage, but it appears after the following patch,
so add it as a fix.

Fixes: 74a992b3598a ("net: phy: add phy_check_link_status")
Signed-off-by: Ivan Khoronzhuk <ikhoronz@cisco.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/ethernet/cavium/octeon/octeon_mgmt.c

index cbaa1924afbe1486a5bcc401bb55b682d1126dd7..706e959bf02ac60859220b96d23056c20322538b 100644 (file)
@@ -1219,7 +1219,7 @@ static int octeon_mgmt_open(struct net_device *netdev)
         */
        if (netdev->phydev) {
                netif_carrier_off(netdev);
-               phy_start_aneg(netdev->phydev);
+               phy_start(netdev->phydev);
        }
 
        netif_wake_queue(netdev);
@@ -1247,8 +1247,10 @@ static int octeon_mgmt_stop(struct net_device *netdev)
        napi_disable(&p->napi);
        netif_stop_queue(netdev);
 
-       if (netdev->phydev)
+       if (netdev->phydev) {
+               phy_stop(netdev->phydev);
                phy_disconnect(netdev->phydev);
+       }
 
        netif_carrier_off(netdev);