Make sure that we completely quiesce the network device, including its
DMA to avoid having it continue to receive packets while there is no
software alive to service those.

Signed-off-by: Florian Fainelli <f.faine...@gmail.com>
---
 drivers/net/ethernet/broadcom/genet/bcmgenet.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c 
b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
index 12cb77ef1081..ecbb1e7353ba 100644
--- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
+++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
@@ -3597,6 +3597,11 @@ static int bcmgenet_remove(struct platform_device *pdev)
        return 0;
 }
 
+static void bcmgenet_shutdown(struct platform_device *pdev)
+{
+       bcmgenet_remove(pdev);
+}
+
 #ifdef CONFIG_PM_SLEEP
 static int bcmgenet_resume(struct device *d)
 {
@@ -3715,6 +3720,7 @@ static SIMPLE_DEV_PM_OPS(bcmgenet_pm_ops, 
bcmgenet_suspend, bcmgenet_resume);
 static struct platform_driver bcmgenet_driver = {
        .probe  = bcmgenet_probe,
        .remove = bcmgenet_remove,
+       .shutdown = bcmgenet_shutdown,
        .driver = {
                .name   = "bcmgenet",
                .of_match_table = bcmgenet_match,
-- 
2.17.1

Reply via email to