net: altera-tse: Init PCS and phylink before registering netdev
register_netdev() must be done only once all resources are ready, as they may be used in .ndo_open() immediately upon registration. Move the lynx PCS and phylink initialisation before registerng the netdevice. We also remove the call to netif_carrier_off(), as phylink takes care of that. Reviewed-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com> Link: https://patch.msgid.link/20251103104928.58461-5-maxime.chevallier@bootlin.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
9350ea63fe
commit
055e554b8f
|
|
@ -1386,24 +1386,6 @@ static int altera_tse_probe(struct platform_device *pdev)
|
|||
spin_lock_init(&priv->tx_lock);
|
||||
spin_lock_init(&priv->rxdma_irq_lock);
|
||||
|
||||
netif_carrier_off(ndev);
|
||||
ret = register_netdev(ndev);
|
||||
if (ret) {
|
||||
dev_err(&pdev->dev, "failed to register TSE net device\n");
|
||||
goto err_register_netdev;
|
||||
}
|
||||
|
||||
revision = ioread32(&priv->mac_dev->megacore_revision);
|
||||
|
||||
if (revision < 0xd00 || revision > 0xe00)
|
||||
netdev_warn(ndev, "TSE revision %x\n", revision);
|
||||
|
||||
if (netif_msg_probe(priv))
|
||||
dev_info(&pdev->dev, "Altera TSE MAC version %d.%d at 0x%08lx irq %d/%d\n",
|
||||
(revision >> 8) & 0xff, revision & 0xff,
|
||||
(unsigned long) control_port->start, priv->rx_irq,
|
||||
priv->tx_irq);
|
||||
|
||||
snprintf(mrc.name, MII_BUS_ID_SIZE, "%s-pcs-mii", dev_name(&pdev->dev));
|
||||
pcs_bus = devm_mdio_regmap_register(&pdev->dev, &mrc);
|
||||
if (IS_ERR(pcs_bus)) {
|
||||
|
|
@ -1441,12 +1423,30 @@ static int altera_tse_probe(struct platform_device *pdev)
|
|||
goto err_init_phylink;
|
||||
}
|
||||
|
||||
ret = register_netdev(ndev);
|
||||
if (ret) {
|
||||
dev_err(&pdev->dev, "failed to register TSE net device\n");
|
||||
goto err_register_netdev;
|
||||
}
|
||||
|
||||
revision = ioread32(&priv->mac_dev->megacore_revision);
|
||||
|
||||
if (revision < 0xd00 || revision > 0xe00)
|
||||
netdev_warn(ndev, "TSE revision %x\n", revision);
|
||||
|
||||
if (netif_msg_probe(priv))
|
||||
dev_info(&pdev->dev, "Altera TSE MAC version %d.%d at 0x%08lx irq %d/%d\n",
|
||||
(revision >> 8) & 0xff, revision & 0xff,
|
||||
(unsigned long)control_port->start, priv->rx_irq,
|
||||
priv->tx_irq);
|
||||
|
||||
return 0;
|
||||
|
||||
err_register_netdev:
|
||||
phylink_destroy(priv->phylink);
|
||||
err_init_phylink:
|
||||
lynx_pcs_destroy(priv->pcs);
|
||||
err_init_pcs:
|
||||
unregister_netdev(ndev);
|
||||
err_register_netdev:
|
||||
netif_napi_del(&priv->napi);
|
||||
altera_tse_mdio_destroy(ndev);
|
||||
err_free_netdev:
|
||||
|
|
|
|||
Loading…
Reference in New Issue