|
@@ -688,10 +688,10 @@ static int xgene_enet_open(struct net_device *ndev)
|
|
|
mac_ops->tx_enable(pdata);
|
|
mac_ops->tx_enable(pdata);
|
|
|
mac_ops->rx_enable(pdata);
|
|
mac_ops->rx_enable(pdata);
|
|
|
|
|
|
|
|
|
|
+ xgene_enet_napi_enable(pdata);
|
|
|
ret = xgene_enet_register_irq(ndev);
|
|
ret = xgene_enet_register_irq(ndev);
|
|
|
if (ret)
|
|
if (ret)
|
|
|
return ret;
|
|
return ret;
|
|
|
- xgene_enet_napi_enable(pdata);
|
|
|
|
|
|
|
|
|
|
if (pdata->phy_mode == PHY_INTERFACE_MODE_RGMII)
|
|
if (pdata->phy_mode == PHY_INTERFACE_MODE_RGMII)
|
|
|
phy_start(pdata->phy_dev);
|
|
phy_start(pdata->phy_dev);
|
|
@@ -715,13 +715,13 @@ static int xgene_enet_close(struct net_device *ndev)
|
|
|
else
|
|
else
|
|
|
cancel_delayed_work_sync(&pdata->link_work);
|
|
cancel_delayed_work_sync(&pdata->link_work);
|
|
|
|
|
|
|
|
- xgene_enet_napi_disable(pdata);
|
|
|
|
|
- xgene_enet_free_irq(ndev);
|
|
|
|
|
- xgene_enet_process_ring(pdata->rx_ring, -1);
|
|
|
|
|
-
|
|
|
|
|
mac_ops->tx_disable(pdata);
|
|
mac_ops->tx_disable(pdata);
|
|
|
mac_ops->rx_disable(pdata);
|
|
mac_ops->rx_disable(pdata);
|
|
|
|
|
|
|
|
|
|
+ xgene_enet_free_irq(ndev);
|
|
|
|
|
+ xgene_enet_napi_disable(pdata);
|
|
|
|
|
+ xgene_enet_process_ring(pdata->rx_ring, -1);
|
|
|
|
|
+
|
|
|
return 0;
|
|
return 0;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -1474,15 +1474,15 @@ static int xgene_enet_probe(struct platform_device *pdev)
|
|
|
}
|
|
}
|
|
|
ndev->hw_features = ndev->features;
|
|
ndev->hw_features = ndev->features;
|
|
|
|
|
|
|
|
- ret = register_netdev(ndev);
|
|
|
|
|
|
|
+ ret = dma_coerce_mask_and_coherent(dev, DMA_BIT_MASK(64));
|
|
|
if (ret) {
|
|
if (ret) {
|
|
|
- netdev_err(ndev, "Failed to register netdev\n");
|
|
|
|
|
|
|
+ netdev_err(ndev, "No usable DMA configuration\n");
|
|
|
goto err;
|
|
goto err;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- ret = dma_coerce_mask_and_coherent(dev, DMA_BIT_MASK(64));
|
|
|
|
|
|
|
+ ret = register_netdev(ndev);
|
|
|
if (ret) {
|
|
if (ret) {
|
|
|
- netdev_err(ndev, "No usable DMA configuration\n");
|
|
|
|
|
|
|
+ netdev_err(ndev, "Failed to register netdev\n");
|
|
|
goto err;
|
|
goto err;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -1490,14 +1490,17 @@ static int xgene_enet_probe(struct platform_device *pdev)
|
|
|
if (ret)
|
|
if (ret)
|
|
|
goto err;
|
|
goto err;
|
|
|
|
|
|
|
|
- xgene_enet_napi_add(pdata);
|
|
|
|
|
mac_ops = pdata->mac_ops;
|
|
mac_ops = pdata->mac_ops;
|
|
|
- if (pdata->phy_mode == PHY_INTERFACE_MODE_RGMII)
|
|
|
|
|
|
|
+ if (pdata->phy_mode == PHY_INTERFACE_MODE_RGMII) {
|
|
|
ret = xgene_enet_mdio_config(pdata);
|
|
ret = xgene_enet_mdio_config(pdata);
|
|
|
- else
|
|
|
|
|
|
|
+ if (ret)
|
|
|
|
|
+ goto err;
|
|
|
|
|
+ } else {
|
|
|
INIT_DELAYED_WORK(&pdata->link_work, mac_ops->link_state);
|
|
INIT_DELAYED_WORK(&pdata->link_work, mac_ops->link_state);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- return ret;
|
|
|
|
|
|
|
+ xgene_enet_napi_add(pdata);
|
|
|
|
|
+ return 0;
|
|
|
err:
|
|
err:
|
|
|
unregister_netdev(ndev);
|
|
unregister_netdev(ndev);
|
|
|
free_netdev(ndev);
|
|
free_netdev(ndev);
|