ops = chip->info->ops;
 
        mv88e6xxx_reg_lock(chip);
-       if ((!mv88e6xxx_port_ppu_updates(chip, port) ||
+       /* Internal PHYs propagate their configuration directly to the MAC.
+        * External PHYs depend on whether the PPU is enabled for this port.
+        */
+       if (((!mv88e6xxx_phy_is_internal(ds, port) &&
+             !mv88e6xxx_port_ppu_updates(chip, port)) ||
             mode == MLO_AN_FIXED) && ops->port_sync_link)
                err = ops->port_sync_link(chip, port, mode, false);
        mv88e6xxx_reg_unlock(chip);
        ops = chip->info->ops;
 
        mv88e6xxx_reg_lock(chip);
-       if (!mv88e6xxx_port_ppu_updates(chip, port) || mode == MLO_AN_FIXED) {
+       /* Internal PHYs propagate their configuration directly to the MAC.
+        * External PHYs depend on whether the PPU is enabled for this port.
+        */
+       if ((!mv88e6xxx_phy_is_internal(ds, port) &&
+            !mv88e6xxx_port_ppu_updates(chip, port)) ||
+           mode == MLO_AN_FIXED) {
                /* FIXME: for an automedia port, should we force the link
                 * down here - what if the link comes up due to "other" media
                 * while we're bringing the port up, how is the exclusivity