UEC PHY: Speed up initial PHY neg.
authorJoakim Tjernlund <Joakim.Tjernlund@transmode.se>
Tue, 10 Aug 2010 14:36:49 +0000 (16:36 +0200)
committerBen Warren <biggerbadderben@gmail.com>
Tue, 12 Oct 2010 05:47:48 +0000 (22:47 -0700)
Instead of always performing an autoneg, check if the PHY
already has a link and if it matches one of the requested
modes. Initially only 100MbFD is optimized this way.

Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund@transmode.se>
Signed-off-by: Ben Warren <biggerbadderben@gmail.com>
drivers/qe/uec_phy.c

index 7ea2ae1af777d1f49c22faad09e9c592c1ed566c..9be784e6add8063ebf7fe72efa92e808fa4fadaa 100644 (file)
@@ -351,6 +351,15 @@ static int marvell_config_aneg (struct uec_mii_info *mii_info)
 static int genmii_config_aneg (struct uec_mii_info *mii_info)
 {
        if (mii_info->autoneg) {
+               /* Speed up the common case, if link is already up, speed and
+                  duplex match, skip auto neg as it already matches */
+               if (!genmii_read_status(mii_info) && mii_info->link)
+                       if (mii_info->duplex == DUPLEX_FULL &&
+                           mii_info->speed == SPEED_100)
+                               if (mii_info->advertising &
+                                   ADVERTISED_100baseT_Full)
+                                       return 0;
+
                config_genmii_advert (mii_info);
                genmii_restart_aneg (mii_info);
        } else