diff --git a/[refs] b/[refs] index 0fffd0de5aaf..5256a187f86d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c922d1241ff37ab2db0f1a29e4b043fe1d8a8e8c +refs/heads/master: c8b7de7fce9cffe97e9d10dbda7b5476e2339d6f diff --git a/trunk/drivers/staging/et131x/et1310_phy.c b/trunk/drivers/staging/et131x/et1310_phy.c index 2c6898f707be..c845c27f23db 100644 --- a/trunk/drivers/staging/et131x/et1310_phy.c +++ b/trunk/drivers/staging/et131x/et1310_phy.c @@ -732,7 +732,6 @@ void et131x_mii_check(struct et131x_adapter *adapter, u32 mdi_mdix; u32 masterslave; u32 polarity; - unsigned long flags; if (bmsr_ints & MI_BMSR_LINK_STATUS) { if (bmsr & MI_BMSR_LINK_STATUS) { diff --git a/trunk/drivers/staging/et131x/et131x_netdev.c b/trunk/drivers/staging/et131x/et131x_netdev.c index 37e10696afb8..70a0da3fb52d 100644 --- a/trunk/drivers/staging/et131x/et131x_netdev.c +++ b/trunk/drivers/staging/et131x/et131x_netdev.c @@ -478,9 +478,28 @@ void et131x_tx_timeout(struct net_device *netdev) tcb->index, tcb->flags); - et131x_close(netdev); - et131x_open(netdev); + adapter->net_stats.tx_errors++; + /* perform reset */ + /* First thing is to stop the queue */ + netif_stop_queue(netdev); + + /* Stop the Tx and Rx DMA engines */ + et131x_rx_dma_disable(adapter); + et131x_tx_dma_disable(adapter); + + /* Disable device interrupts */ + et131x_disable_interrupts(adapter); + + /* Enable the Tx and Rx DMA engines (if not already enabled) */ + et131x_rx_dma_enable(adapter); + et131x_tx_dma_enable(adapter); + + /* Enable device interrupts */ + et131x_enable_interrupts(adapter); + + /* We're ready to move some data, so start the queue */ + netif_start_queue(netdev); return; } }