|
@@ -1058,15 +1058,12 @@ static void fec_enet_work(struct work_struct *work)
|
|
|
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();
|
|
|
}
|
|
@@ -1524,15 +1521,12 @@ static void fec_enet_adjust_link(struct net_device *ndev)
|
|
|
|
|
|
/* 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) {
|
|
@@ -1919,15 +1913,12 @@ static int fec_enet_set_pauseparam(struct net_device *ndev,
|
|
|
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;
|
|
@@ -2371,15 +2362,12 @@ static int fec_set_features(struct net_device *netdev,
|
|
|
|
|
|
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);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -2747,15 +2735,13 @@ fec_resume(struct device *dev)
|
|
|
|
|
|
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();
|