Commit 055e554b authored by Maxime Chevallier's avatar Maxime Chevallier Committed by Jakub Kicinski
Browse files

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: default avatarAndrew Lunn <andrew@lunn.ch>
Signed-off-by: default avatarMaxime Chevallier <maxime.chevallier@bootlin.com>
Link: https://patch.msgid.link/20251103104928.58461-5-maxime.chevallier@bootlin.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 9350ea63
Loading
Loading
Loading
Loading
+20 −20
Original line number Diff line number Diff line
@@ -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: