net: bcmgenet: Utilize bcmgenet_set_features() during resume/open
authorDoug Berger <opendmb@gmail.com>
Wed, 18 Dec 2019 00:51:12 +0000 (16:51 -0800)
committerDavid S. Miller <davem@davemloft.net>
Fri, 20 Dec 2019 02:11:10 +0000 (18:11 -0800)
During driver resume and open, the HW may have lost its context/state,
utilize bcmgenet_set_features() to make sure we do restore the correct
set of features that were previously configured.

Signed-off-by: Doug Berger <opendmb@gmail.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/broadcom/genet/bcmgenet.c

index 811713e3d2304c2dff559a2483628800f7316850..0e57effd5b191175c96f35d4e049b66d5e57166e 100644 (file)
@@ -2884,6 +2884,11 @@ static int bcmgenet_open(struct net_device *dev)
 
        init_umac(priv);
 
+       /* Apply features again in case we changed them while interface was
+        * down
+        */
+       bcmgenet_set_features(dev, dev->features);
+
        bcmgenet_set_hw_addr(priv, dev->dev_addr);
 
        if (priv->internal_phy) {
@@ -3687,6 +3692,9 @@ static int bcmgenet_resume(struct device *d)
        genphy_config_aneg(dev->phydev);
        bcmgenet_mii_config(priv->dev, false);
 
+       /* Restore enabled features */
+       bcmgenet_set_features(dev, dev->features);
+
        bcmgenet_set_hw_addr(priv, dev->dev_addr);
 
        if (priv->internal_phy) {