mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-18 15:09:53 +00:00
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:
parent
85bbe21583
commit
b1aefe58c2
@ -338,22 +338,21 @@ 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
|
||||
* to take effect.
|
||||
*/
|
||||
udelay(5);
|
||||
|
||||
spin_lock(&data->txlock);
|
||||
if (is_valid_ether_addr(dev->dev_addr) && data->txfree)
|
||||
netif_wake_queue(dev);
|
||||
|
||||
data->link_up = 1;
|
||||
spin_unlock(&data->txlock);
|
||||
}
|
||||
}
|
||||
|
||||
if (data->link_up == 0) {
|
||||
/* The manual says it can take 3-4 usecs for the speed change
|
||||
* to take effect.
|
||||
*/
|
||||
udelay(5);
|
||||
|
||||
spin_lock(&data->txlock);
|
||||
if (is_valid_ether_addr(dev->dev_addr) && data->txfree)
|
||||
netif_wake_queue(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);
|
||||
|
Loading…
Reference in New Issue
Block a user