Commit 1fd12812 authored by Justin Chen's avatar Justin Chen Committed by Jakub Kicinski
Browse files

net: bcmasp: streamline early exit in probe



Streamline the bcmasp_probe early exit. As support for other
functionality is added(i.e. ptp), it is easier to keep track of early
exit cleanup when it is all in one place.

Signed-off-by: default avatarJustin Chen <justin.chen@broadcom.com>
Reviewed-by: default avatarFlorian Fainelli <florian.fainelli@broadcom.com>
Link: https://patch.msgid.link/20260122194949.1145107-3-justin.chen@broadcom.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 9271fc31
Loading
Loading
Loading
Loading
+14 −13
Original line number Diff line number Diff line
@@ -1317,6 +1317,8 @@ static int bcmasp_probe(struct platform_device *pdev)

	bcmasp_core_init_filters(priv);

	bcmasp_init_wol(priv);

	ports_node = of_find_node_by_name(dev->of_node, "ethernet-ports");
	if (!ports_node) {
		dev_warn(dev, "No ports found\n");
@@ -1328,16 +1330,14 @@ static int bcmasp_probe(struct platform_device *pdev)
		intf = bcmasp_interface_create(priv, intf_node, i);
		if (!intf) {
			dev_err(dev, "Cannot create eth interface %d\n", i);
			bcmasp_remove_intfs(priv);
			ret = -ENOMEM;
			goto of_put_exit;
			of_node_put(ports_node);
			ret = -EINVAL;
			goto err_cleanup;
		}
		list_add_tail(&intf->list, &priv->intfs);
		i++;
	}

	/* Check and enable WoL */
	bcmasp_init_wol(priv);
	of_node_put(ports_node);

	/* Drop the clock reference count now and let ndo_open()/ndo_close()
	 * manage it for us from now on.
@@ -1352,19 +1352,20 @@ static int bcmasp_probe(struct platform_device *pdev)
	list_for_each_entry(intf, &priv->intfs, list) {
		ret = register_netdev(intf->ndev);
		if (ret) {
			netdev_err(intf->ndev,
				   "failed to register net_device: %d\n", ret);
			bcmasp_wol_irq_destroy(priv);
			bcmasp_remove_intfs(priv);
			goto of_put_exit;
			dev_err(dev, "failed to register net_device: %d\n", ret);
			goto err_cleanup;
		}
		count++;
	}

	dev_info(dev, "Initialized %d port(s)\n", count);

of_put_exit:
	of_node_put(ports_node);
	return ret;

err_cleanup:
	bcmasp_wol_irq_destroy(priv);
	bcmasp_remove_intfs(priv);

	return ret;
}