[TG3]: Fix 2nd ifup failure on 5752M.

This fixes a bug reported in:

http://bugzilla.kernel.org/show_bug.cgi?id=7438

tg3_close() turns off the PHY if WoL and ASF are both disabled. On
the next tg3_open(), some devices such as the 5752M will not be
brought up correctly without a PHY reset early in the reset sequence.
The PHY clock is needed for some internal MAC blocks to function
correctly.

This problem is fixed by always resetting the PHY early in
tg3_reset_hw() when it is called from tg3_open() or tg3_resume().
tg3_setup_phy() can then be called later in the sequence without the
reset_phy parameter set to 1, since the PHY reset is already done.

Update version to 3.68.

Signed-off-by: Michael Chan <mchan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by Michael Chan and committed by David S. Miller 36da4d86 febf0a43

+4 -4
+4 -4
drivers/net/tg3.c
··· 68 68 69 69 #define DRV_MODULE_NAME "tg3" 70 70 #define PFX DRV_MODULE_NAME ": " 71 - #define DRV_MODULE_VERSION "3.67" 72 - #define DRV_MODULE_RELDATE "October 18, 2006" 71 + #define DRV_MODULE_VERSION "3.68" 72 + #define DRV_MODULE_RELDATE "November 02, 2006" 73 73 74 74 #define TG3_DEF_MAC_MODE 0 75 75 #define TG3_DEF_RX_MODE 0 ··· 6014 6014 tg3_abort_hw(tp, 1); 6015 6015 } 6016 6016 6017 - if ((tp->tg3_flags2 & TG3_FLG2_MII_SERDES) && reset_phy) 6017 + if (reset_phy) 6018 6018 tg3_phy_reset(tp); 6019 6019 6020 6020 err = tg3_chip_reset(tp); ··· 6574 6574 tw32(GRC_LOCAL_CTRL, tp->grc_local_ctrl); 6575 6575 } 6576 6576 6577 - err = tg3_setup_phy(tp, reset_phy); 6577 + err = tg3_setup_phy(tp, 0); 6578 6578 if (err) 6579 6579 return err; 6580 6580