fep->delay_work.timeout = false;
rtnl_lock();
if (netif_device_present(ndev) || netif_running(ndev)) {
- netif_device_detach(ndev);
napi_disable(&fep->napi);
- netif_tx_disable(ndev);
netif_tx_lock_bh(ndev);
fec_restart(ndev, fep->full_duplex);
- netif_tx_unlock_bh(ndev);
netif_wake_queue(ndev);
+ netif_tx_unlock_bh(ndev);
napi_enable(&fep->napi);
- netif_device_attach(ndev);
}
rtnl_unlock();
}
/* if any of the above changed restart the FEC */
if (status_change) {
- netif_device_detach(ndev);
napi_disable(&fep->napi);
- netif_tx_disable(ndev);
netif_tx_lock_bh(ndev);
fec_restart(ndev, phy_dev->duplex);
- netif_tx_unlock_bh(ndev);
netif_wake_queue(ndev);
+ netif_tx_unlock_bh(ndev);
napi_enable(&fep->napi);
- netif_device_attach(ndev);
}
} else {
if (fep->link) {
phy_start_aneg(fep->phy_dev);
}
if (netif_running(ndev)) {
- netif_device_detach(ndev);
napi_disable(&fep->napi);
- netif_tx_disable(ndev);
netif_tx_lock_bh(ndev);
fec_restart(ndev, fep->full_duplex);
- netif_tx_unlock_bh(ndev);
netif_wake_queue(ndev);
+ netif_tx_unlock_bh(ndev);
napi_enable(&fep->napi);
- netif_device_attach(ndev);
}
return 0;
if (netif_running(netdev)) {
fec_stop(netdev);
- netif_device_detach(netdev);
napi_disable(&fep->napi);
- netif_tx_disable(netdev);
netif_tx_lock_bh(netdev);
fec_restart(netdev, fep->phy_dev->duplex);
- netif_tx_unlock_bh(netdev);
netif_wake_queue(netdev);
+ netif_tx_unlock_bh(netdev);
napi_enable(&fep->napi);
- netif_device_attach(netdev);
}
}
rtnl_lock();
if (netif_running(ndev)) {
- netif_device_detach(ndev);
napi_disable(&fep->napi);
- netif_tx_disable(ndev);
netif_tx_lock_bh(ndev);
fec_restart(ndev, fep->full_duplex);
+ netif_device_attach(ndev);
netif_tx_unlock_bh(ndev);
- netif_wake_queue(ndev);
- napi_enable(&fep->napi);
netif_device_attach(ndev);
+ napi_enable(&fep->napi);
phy_start(fep->phy_dev);
}
rtnl_unlock();