gianfar: Don't reset TBI<->SerDes link if it's already up
The link may be up already via the chip's reset strapping, or though action of U-Boot, or from the last time the interface was brought up. Resetting the link causes it to go down for several seconds. This can significantly increase the time from power-on to DHCP completion and a device being accessible to the network. Signed-off-by: Trent Piepho <tpiepho@freescale.com> Acked-by: Andy Fleming <afleming@freescale.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
This commit is contained in:
Родитель
c132419e56
Коммит
bdb59f949d
|
@ -591,6 +591,14 @@ static void gfar_configure_serdes(struct net_device *dev)
|
|||
if (bus)
|
||||
mutex_lock(&bus->mdio_lock);
|
||||
|
||||
/* If the link is already up, we must already be ok, and don't need to
|
||||
* configure and reset the TBI<->SerDes link. Maybe U-Boot configured
|
||||
* everything for us? Resetting it takes the link down and requires
|
||||
* several seconds for it to come back.
|
||||
*/
|
||||
if (gfar_local_mdio_read(regs, tbipa, MII_BMSR) & BMSR_LSTATUS)
|
||||
goto done;
|
||||
|
||||
/* Single clk mode, mii mode off(for serdes communication) */
|
||||
gfar_local_mdio_write(regs, tbipa, MII_TBICON, TBICON_CLK_SELECT);
|
||||
|
||||
|
@ -601,6 +609,7 @@ static void gfar_configure_serdes(struct net_device *dev)
|
|||
gfar_local_mdio_write(regs, tbipa, MII_BMCR, BMCR_ANENABLE |
|
||||
BMCR_ANRESTART | BMCR_FULLDPLX | BMCR_SPEED1000);
|
||||
|
||||
done:
|
||||
if (bus)
|
||||
mutex_unlock(&bus->mdio_lock);
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче