net: bcmgenet: only update UMAC_CMD if something changed
authorFlorian Fainelli <f.fainelli@gmail.com>
Tue, 22 Jul 2014 00:42:39 +0000 (17:42 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 22 Jul 2014 02:49:11 +0000 (19:49 -0700)
The link adjustment callback can be called as frequently as desired
by the PHY library, as such, let's avoid doing a Read/Modify/Write
sequence if nothing changed, since these register accesses can be
expensive.

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

index add8d8596084054ca1e059a360be4a1d24501122..b1338c9e8abb8afb96748ea18fe3d2ba49f9e12c 100644 (file)
@@ -136,17 +136,18 @@ static void bcmgenet_mii_setup(struct net_device *dev)
                /* pause capability */
                if (!phydev->pause)
                        cmd_bits |= CMD_RX_PAUSE_IGNORE | CMD_TX_PAUSE_IGNORE;
+       }
 
+       if (status_changed) {
                reg = bcmgenet_umac_readl(priv, UMAC_CMD);
                reg &= ~((CMD_SPEED_MASK << CMD_SPEED_SHIFT) |
                               CMD_HD_EN |
                               CMD_RX_PAUSE_IGNORE | CMD_TX_PAUSE_IGNORE);
                reg |= cmd_bits;
                bcmgenet_umac_writel(priv, reg, UMAC_CMD);
-       }
 
-       if (status_changed)
                phy_print_status(phydev);
+       }
 }
 
 void bcmgenet_mii_reset(struct net_device *dev)