All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net-next 0/2] net: mvneta: use .mac_select_pcs()
@ 2022-01-25 16:59 Russell King (Oracle)
  2022-01-25 16:59 ` [PATCH net-next 1/2] net: mvneta: reorder initialisation Russell King (Oracle)
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Russell King (Oracle) @ 2022-01-25 16:59 UTC (permalink / raw)
  To: Thomas Petazzoni; +Cc: David S. Miller, Jakub Kicinski, netdev

Hi,

This series converts mvneta to use the .mac_select_pcs() like eventually
everything else will be. mvneta is slightly more involved because we
need to rearrange the initialisation first to ensure everything required
is initialised prior to phylink_create() being called.

Tested locally on SolidRun Clearfog.

 drivers/net/ethernet/marvell/mvneta.c | 115 ++++++++++++++++++----------------
 1 file changed, 61 insertions(+), 54 deletions(-)


-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH net-next 1/2] net: mvneta: reorder initialisation
  2022-01-25 16:59 [PATCH net-next 0/2] net: mvneta: use .mac_select_pcs() Russell King (Oracle)
@ 2022-01-25 16:59 ` Russell King (Oracle)
  2022-01-25 16:59 ` [PATCH net-next 2/2] net: mvneta: use .mac_select_pcs() interface Russell King (Oracle)
  2022-01-27 13:40 ` [PATCH net-next 0/2] net: mvneta: use .mac_select_pcs() patchwork-bot+netdevbpf
  2 siblings, 0 replies; 4+ messages in thread
From: Russell King (Oracle) @ 2022-01-25 16:59 UTC (permalink / raw)
  To: Thomas Petazzoni; +Cc: David S. Miller, Jakub Kicinski, netdev

Re-order the mvneta initialisation to move devm based resources and
easy setup earlier in the probe function. The primary reason for this
is to allow us to switch the driver to use phylink's mac_select_pcs()
callback.

Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
---
 drivers/net/ethernet/marvell/mvneta.c | 103 +++++++++++++-------------
 1 file changed, 51 insertions(+), 52 deletions(-)

diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c
index 57c708b55685..c4aadb6a5640 100644
--- a/drivers/net/ethernet/marvell/mvneta.c
+++ b/drivers/net/ethernet/marvell/mvneta.c
@@ -5365,26 +5365,62 @@ static int mvneta_probe(struct platform_device *pdev)
 	if (!dev)
 		return -ENOMEM;
 
-	dev->irq = irq_of_parse_and_map(dn, 0);
-	if (dev->irq == 0)
-		return -EINVAL;
+	dev->tx_queue_len = MVNETA_MAX_TXD;
+	dev->watchdog_timeo = 5 * HZ;
+	dev->netdev_ops = &mvneta_netdev_ops;
+	dev->ethtool_ops = &mvneta_eth_tool_ops;
+
+	pp = netdev_priv(dev);
+	spin_lock_init(&pp->lock);
+	pp->dn = dn;
+
+	pp->rxq_def = rxq_def;
+	pp->indir[0] = rxq_def;
 
 	err = of_get_phy_mode(dn, &phy_mode);
 	if (err) {
 		dev_err(&pdev->dev, "incorrect phy-mode\n");
-		goto err_free_irq;
+		return err;
 	}
 
+	pp->phy_interface = phy_mode;
+
 	comphy = devm_of_phy_get(&pdev->dev, dn, NULL);
-	if (comphy == ERR_PTR(-EPROBE_DEFER)) {
-		err = -EPROBE_DEFER;
-		goto err_free_irq;
-	} else if (IS_ERR(comphy)) {
+	if (comphy == ERR_PTR(-EPROBE_DEFER))
+		return -EPROBE_DEFER;
+
+	if (IS_ERR(comphy))
 		comphy = NULL;
+
+	pp->comphy = comphy;
+
+	pp->base = devm_platform_ioremap_resource(pdev, 0);
+	if (IS_ERR(pp->base))
+		return PTR_ERR(pp->base);
+
+	/* Get special SoC configurations */
+	if (of_device_is_compatible(dn, "marvell,armada-3700-neta"))
+		pp->neta_armada3700 = true;
+
+	dev->irq = irq_of_parse_and_map(dn, 0);
+	if (dev->irq == 0)
+		return -EINVAL;
+
+	pp->clk = devm_clk_get(&pdev->dev, "core");
+	if (IS_ERR(pp->clk))
+		pp->clk = devm_clk_get(&pdev->dev, NULL);
+	if (IS_ERR(pp->clk)) {
+		err = PTR_ERR(pp->clk);
+		goto err_free_irq;
 	}
 
-	pp = netdev_priv(dev);
-	spin_lock_init(&pp->lock);
+	clk_prepare_enable(pp->clk);
+
+	pp->clk_bus = devm_clk_get(&pdev->dev, "bus");
+	if (!IS_ERR(pp->clk_bus))
+		clk_prepare_enable(pp->clk_bus);
+
+	pp->phylink_pcs.ops = &mvneta_phylink_pcs_ops;
 
 	pp->phylink_config.dev = &dev->dev;
 	pp->phylink_config.type = PHYLINK_NETDEV;
@@ -5421,55 +5457,18 @@ static int mvneta_probe(struct platform_device *pdev)
 				 phy_mode, &mvneta_phylink_ops);
 	if (IS_ERR(phylink)) {
 		err = PTR_ERR(phylink);
-		goto err_free_irq;
+		goto err_clk;
 	}
 
-	dev->tx_queue_len = MVNETA_MAX_TXD;
-	dev->watchdog_timeo = 5 * HZ;
-	dev->netdev_ops = &mvneta_netdev_ops;
-
-	dev->ethtool_ops = &mvneta_eth_tool_ops;
-
 	pp->phylink = phylink;
-	pp->comphy = comphy;
-	pp->phy_interface = phy_mode;
-	pp->dn = dn;
-
-	pp->rxq_def = rxq_def;
-	pp->indir[0] = rxq_def;
-
-	/* Get special SoC configurations */
-	if (of_device_is_compatible(dn, "marvell,armada-3700-neta"))
-		pp->neta_armada3700 = true;
-
-	pp->clk = devm_clk_get(&pdev->dev, "core");
-	if (IS_ERR(pp->clk))
-		pp->clk = devm_clk_get(&pdev->dev, NULL);
-	if (IS_ERR(pp->clk)) {
-		err = PTR_ERR(pp->clk);
-		goto err_free_phylink;
-	}
-
-	clk_prepare_enable(pp->clk);
 
-	pp->clk_bus = devm_clk_get(&pdev->dev, "bus");
-	if (!IS_ERR(pp->clk_bus))
-		clk_prepare_enable(pp->clk_bus);
-
-	pp->base = devm_platform_ioremap_resource(pdev, 0);
-	if (IS_ERR(pp->base)) {
-		err = PTR_ERR(pp->base);
-		goto err_clk;
-	}
-
-	pp->phylink_pcs.ops = &mvneta_phylink_pcs_ops;
 	phylink_set_pcs(phylink, &pp->phylink_pcs);
 
 	/* Alloc per-cpu port structure */
 	pp->ports = alloc_percpu(struct mvneta_pcpu_port);
 	if (!pp->ports) {
 		err = -ENOMEM;
-		goto err_clk;
+		goto err_free_phylink;
 	}
 
 	/* Alloc per-cpu stats */
@@ -5613,12 +5612,12 @@ static int mvneta_probe(struct platform_device *pdev)
 	free_percpu(pp->stats);
 err_free_ports:
 	free_percpu(pp->ports);
-err_clk:
-	clk_disable_unprepare(pp->clk_bus);
-	clk_disable_unprepare(pp->clk);
 err_free_phylink:
 	if (pp->phylink)
 		phylink_destroy(pp->phylink);
+err_clk:
+	clk_disable_unprepare(pp->clk_bus);
+	clk_disable_unprepare(pp->clk);
 err_free_irq:
 	irq_dispose_mapping(dev->irq);
 	return err;
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH net-next 2/2] net: mvneta: use .mac_select_pcs() interface
  2022-01-25 16:59 [PATCH net-next 0/2] net: mvneta: use .mac_select_pcs() Russell King (Oracle)
  2022-01-25 16:59 ` [PATCH net-next 1/2] net: mvneta: reorder initialisation Russell King (Oracle)
@ 2022-01-25 16:59 ` Russell King (Oracle)
  2022-01-27 13:40 ` [PATCH net-next 0/2] net: mvneta: use .mac_select_pcs() patchwork-bot+netdevbpf
  2 siblings, 0 replies; 4+ messages in thread
From: Russell King (Oracle) @ 2022-01-25 16:59 UTC (permalink / raw)
  To: Thomas Petazzoni; +Cc: David S. Miller, Jakub Kicinski, netdev

Convert mvneta to use the mac_select_interface rather than using
phylink_set_pcs(). The intention here is to unify the approach for
PCS and eventually remove phylink_set_pcs().

Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
---
 drivers/net/ethernet/marvell/mvneta.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c
index c4aadb6a5640..315a43e4c63d 100644
--- a/drivers/net/ethernet/marvell/mvneta.c
+++ b/drivers/net/ethernet/marvell/mvneta.c
@@ -4012,6 +4012,15 @@ static const struct phylink_pcs_ops mvneta_phylink_pcs_ops = {
 	.pcs_an_restart = mvneta_pcs_an_restart,
 };
 
+static struct phylink_pcs *mvneta_mac_select_pcs(struct phylink_config *config,
+						 phy_interface_t interface)
+{
+	struct net_device *ndev = to_net_dev(config->dev);
+	struct mvneta_port *pp = netdev_priv(ndev);
+
+	return &pp->phylink_pcs;
+}
+
 static int mvneta_mac_prepare(struct phylink_config *config, unsigned int mode,
 			      phy_interface_t interface)
 {
@@ -4219,6 +4228,7 @@ static void mvneta_mac_link_up(struct phylink_config *config,
 
 static const struct phylink_mac_ops mvneta_phylink_ops = {
 	.validate = phylink_generic_validate,
+	.mac_select_pcs = mvneta_mac_select_pcs,
 	.mac_prepare = mvneta_mac_prepare,
 	.mac_config = mvneta_mac_config,
 	.mac_finish = mvneta_mac_finish,
@@ -5462,8 +5472,6 @@ static int mvneta_probe(struct platform_device *pdev)
 
 	pp->phylink = phylink;
 
-	phylink_set_pcs(phylink, &pp->phylink_pcs);
-
 	/* Alloc per-cpu port structure */
 	pp->ports = alloc_percpu(struct mvneta_pcpu_port);
 	if (!pp->ports) {
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH net-next 0/2] net: mvneta: use .mac_select_pcs()
  2022-01-25 16:59 [PATCH net-next 0/2] net: mvneta: use .mac_select_pcs() Russell King (Oracle)
  2022-01-25 16:59 ` [PATCH net-next 1/2] net: mvneta: reorder initialisation Russell King (Oracle)
  2022-01-25 16:59 ` [PATCH net-next 2/2] net: mvneta: use .mac_select_pcs() interface Russell King (Oracle)
@ 2022-01-27 13:40 ` patchwork-bot+netdevbpf
  2 siblings, 0 replies; 4+ messages in thread
From: patchwork-bot+netdevbpf @ 2022-01-27 13:40 UTC (permalink / raw)
  To: Russell King; +Cc: thomas.petazzoni, davem, kuba, netdev

Hello:

This series was applied to netdev/net-next.git (master)
by David S. Miller <davem@davemloft.net>:

On Tue, 25 Jan 2022 16:59:09 +0000 you wrote:
> Hi,
> 
> This series converts mvneta to use the .mac_select_pcs() like eventually
> everything else will be. mvneta is slightly more involved because we
> need to rearrange the initialisation first to ensure everything required
> is initialised prior to phylink_create() being called.
> 
> [...]

Here is the summary with links:
  - [net-next,1/2] net: mvneta: reorder initialisation
    https://git.kernel.org/netdev/net-next/c/72bb9531162a
  - [net-next,2/2] net: mvneta: use .mac_select_pcs() interface
    https://git.kernel.org/netdev/net-next/c/0ac4a71fc09c

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2022-01-27 13:40 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-25 16:59 [PATCH net-next 0/2] net: mvneta: use .mac_select_pcs() Russell King (Oracle)
2022-01-25 16:59 ` [PATCH net-next 1/2] net: mvneta: reorder initialisation Russell King (Oracle)
2022-01-25 16:59 ` [PATCH net-next 2/2] net: mvneta: use .mac_select_pcs() interface Russell King (Oracle)
2022-01-27 13:40 ` [PATCH net-next 0/2] net: mvneta: use .mac_select_pcs() patchwork-bot+netdevbpf

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.