Hi

The eth-down/stop may concurrent with pre-scheduled stats_work.
So it seems better to cancel stats_work first and then make resetS.

Yan Markman

-----Original Message-----
From: Antoine Tenart <[email protected]> 
Sent: Thursday, February 28, 2019 3:21 PM
To: [email protected]; [email protected]
Cc: Antoine Tenart <[email protected]>; [email protected]; 
[email protected]; [email protected]; 
[email protected]; [email protected]; 
[email protected]; Nadav Haklai <[email protected]>; Stefan Chulski 
<[email protected]>; Yan Markman <[email protected]>; [email protected]
Subject: [EXT] [PATCH net-next 15/15] net: mvpp2: set the GMAC, XLG MAC, XPCS 
and MPCS in reset when a port is down

External Email

----------------------------------------------------------------------
This patch adds calls in the stop() helper to ensure both MACs and
both PCS blocks are set in reset when the user manually sets a port
down. This is done so that we have the exact same block reset states at
boot time and when a port is set down.

Signed-off-by: Antoine Tenart <[email protected]>
---
 drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c 
b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
index 29d32cb3d52b..c10fd894c86f 100644
--- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
+++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
@@ -3257,6 +3257,7 @@ static void mvpp2_stop_dev(struct mvpp2_port *port)
 
        if (port->phylink)
                phylink_stop(port->phylink);
+
        phy_power_off(port->comphy);
 }
 
@@ -3520,6 +3521,9 @@ static int mvpp2_stop(struct net_device *dev)
        mvpp2_cleanup_rxqs(port);
        mvpp2_cleanup_txqs(port);
 
+       mvpp2_mac_reset(port);
+       mvpp22_pcs_reset(port);
+
        cancel_delayed_work_sync(&port->stats_work);
 
        return 0;
-- 
2.20.1

Reply via email to