Tsi108_eth: fix link recovery after disconnect

Bug fix for tsi108_eth network driver.
This patch fixes a problem with link recovery after connection was lost.

Signed-off-by: Alexandre Bounine <alexandreb@tundra.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
This commit is contained in:
Alex Bounine 2008-02-11 14:36:12 -05:00 committed by Jeff Garzik
parent 85bbe21583
commit b1aefe58c2

View File

@ -338,6 +338,7 @@ static void tsi108_check_phy(struct net_device *dev)
TSI_WRITE(TSI108_MAC_CFG2, mac_cfg2_reg);
TSI_WRITE(TSI108_EC_PORTCTRL, portctrl_reg);
}
if (data->link_up == 0) {
/* The manual says it can take 3-4 usecs for the speed change
@ -352,8 +353,6 @@ static void tsi108_check_phy(struct net_device *dev)
data->link_up = 1;
spin_unlock(&data->txlock);
}
}
} else {
if (data->link_up == 1) {
netif_stop_queue(dev);
@ -1267,12 +1266,11 @@ static void tsi108_init_phy(struct net_device *dev)
* PHY_STAT register before the link up status bit is set.
*/
data->link_up = 1;
data->link_up = 0;
while (!((phyval = tsi108_read_mii(data, MII_BMSR)) &
BMSR_LSTATUS)) {
if (i++ > (MII_READ_DELAY / 10)) {
data->link_up = 0;
break;
}
spin_unlock_irqrestore(&phy_lock, flags);