net: dsa: mv88e6xxx: call phy_init_eee
authorVivien Didelot <vivien.didelot@savoirfairelinux.com>
Tue, 1 Aug 2017 20:32:37 +0000 (16:32 -0400)
committerDavid S. Miller <davem@davemloft.net>
Wed, 2 Aug 2017 03:09:10 +0000 (20:09 -0700)
It is safer to init the EEE before the DSA layer call
phy_ethtool_set_eee, as sf2 and qca8k are doing.

Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/dsa/mv88e6xxx/chip.c

index 647d5d45c1d6cdf4603248b7b560eb9434de561c..b531d4a3bab5b1b75d353005459ec4732994e47f 100644 (file)
@@ -855,6 +855,12 @@ static int mv88e6xxx_set_eee(struct dsa_switch *ds, int port,
        struct mv88e6xxx_chip *chip = ds->priv;
        int err;
 
+       if (e->eee_enabled) {
+               err = phy_init_eee(phydev, 0);
+               if (err)
+                       return err;
+       }
+
        mutex_lock(&chip->reg_lock);
        err = mv88e6xxx_energy_detect_write(chip, port, e);
        mutex_unlock(&chip->reg_lock);