bnx2x: Fix register access timeout in 10M
authorYaniv Rosner <yanivr@broadcom.com>
Thu, 5 Nov 2009 17:18:32 +0000 (19:18 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 6 Nov 2009 04:00:52 +0000 (20:00 -0800)
In BCM8481 when link speed goes from 1G to 10M, driver received timeout
since the MAC clock hasn't synced yet with the new speed, so it is required
first to program the MAC with the new speed, and only then configure other
parameters

Signed-off-by: Yaniv Rosner <yanivr@broadcom.com>
Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/bnx2x_link.c

index d2c9e19bcd5aefa20d9391757506a9efd342d701..41b9b7bd3d8e065b765ea97461b1da5bd95edb88 100644 (file)
@@ -6322,10 +6322,11 @@ static u8 bnx2x_update_link_up(struct link_params *params,
                bnx2x_bmac_enable(params, vars, 0);
                bnx2x_set_led(params, LED_MODE_OPER, SPEED_10000);
        } else {
-               bnx2x_emac_enable(params, vars, 0);
                rc = bnx2x_emac_program(params, vars->line_speed,
                                      vars->duplex);
 
+               bnx2x_emac_enable(params, vars, 0);
+
                /* AN complete? */
                if (gp_status & MDIO_AN_CL73_OR_37_COMPLETE) {
                        if (!(vars->phy_flags &