netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-next 0/9] net: lantiq_etop: some cleanups
@ 2024-09-30 20:24 Rosen Penev
  2024-09-30 20:24 ` [PATCH net-next 1/9] net: lantiq_etop: use netif_receive_skb_list Rosen Penev
                   ` (9 more replies)
  0 siblings, 10 replies; 12+ messages in thread
From: Rosen Penev @ 2024-09-30 20:24 UTC (permalink / raw)
  To: netdev
  Cc: andrew, davem, edumazet, kuba, pabeni, linux-kernel, olek2,
	shannon.nelson

Some basic cleanups to increase devm usage.

Rosen Penev (9):
  net: lantiq_etop: use netif_receive_skb_list
  net: lantiq_etop: use devm_alloc_etherdev_mqs
  net: lantiq_etop: use devm for register_netdev
  net: lantiq_etop: use devm for mdiobus
  net: lantiq_etop: move phy_disconnect to stop
  net: lantiq_etop: use devm_err_probe
  net: lantiq_etop: remove struct resource
  net: lantiq_etop: use module_platform_driver_probe
  net: lantiq_etop: no queue stop in remove

 drivers/net/ethernet/lantiq_etop.c | 141 +++++++----------------------
 1 file changed, 35 insertions(+), 106 deletions(-)

-- 
2.46.2


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

* [PATCH net-next 1/9] net: lantiq_etop: use netif_receive_skb_list
  2024-09-30 20:24 [PATCH net-next 0/9] net: lantiq_etop: some cleanups Rosen Penev
@ 2024-09-30 20:24 ` Rosen Penev
  2024-09-30 20:24 ` [PATCH net-next 2/9] net: lantiq_etop: use devm_alloc_etherdev_mqs Rosen Penev
                   ` (8 subsequent siblings)
  9 siblings, 0 replies; 12+ messages in thread
From: Rosen Penev @ 2024-09-30 20:24 UTC (permalink / raw)
  To: netdev
  Cc: andrew, davem, edumazet, kuba, pabeni, linux-kernel, olek2,
	shannon.nelson

Improves cache efficiency by batching rx skb processing. Small
performance improvement on RX.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
 drivers/net/ethernet/lantiq_etop.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/lantiq_etop.c b/drivers/net/ethernet/lantiq_etop.c
index 3c289bfe0a09..94b37c12f3f7 100644
--- a/drivers/net/ethernet/lantiq_etop.c
+++ b/drivers/net/ethernet/lantiq_etop.c
@@ -122,8 +122,7 @@ ltq_etop_alloc_skb(struct ltq_etop_chan *ch)
 	return 0;
 }
 
-static void
-ltq_etop_hw_receive(struct ltq_etop_chan *ch)
+static void ltq_etop_hw_receive(struct ltq_etop_chan *ch, struct list_head *lh)
 {
 	struct ltq_etop_priv *priv = netdev_priv(ch->netdev);
 	struct ltq_dma_desc *desc = &ch->dma.desc_base[ch->dma.desc];
@@ -143,7 +142,7 @@ ltq_etop_hw_receive(struct ltq_etop_chan *ch)
 
 	skb_put(skb, len);
 	skb->protocol = eth_type_trans(skb, ch->netdev);
-	netif_receive_skb(skb);
+	list_add_tail(&skb->list, lh);
 }
 
 static int
@@ -151,6 +150,7 @@ ltq_etop_poll_rx(struct napi_struct *napi, int budget)
 {
 	struct ltq_etop_chan *ch = container_of(napi,
 				struct ltq_etop_chan, napi);
+	LIST_HEAD(rx_list);
 	int work_done = 0;
 
 	while (work_done < budget) {
@@ -158,9 +158,12 @@ ltq_etop_poll_rx(struct napi_struct *napi, int budget)
 
 		if ((desc->ctl & (LTQ_DMA_OWN | LTQ_DMA_C)) != LTQ_DMA_C)
 			break;
-		ltq_etop_hw_receive(ch);
+		ltq_etop_hw_receive(ch, &rx_list);
 		work_done++;
 	}
+
+	netif_receive_skb_list(&rx_list);
+
 	if (work_done < budget) {
 		napi_complete_done(&ch->napi, work_done);
 		ltq_dma_ack_irq(&ch->dma);
-- 
2.46.2


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

* [PATCH net-next 2/9] net: lantiq_etop: use devm_alloc_etherdev_mqs
  2024-09-30 20:24 [PATCH net-next 0/9] net: lantiq_etop: some cleanups Rosen Penev
  2024-09-30 20:24 ` [PATCH net-next 1/9] net: lantiq_etop: use netif_receive_skb_list Rosen Penev
@ 2024-09-30 20:24 ` Rosen Penev
  2024-09-30 20:24 ` [PATCH net-next 3/9] net: lantiq_etop: use devm for register_netdev Rosen Penev
                   ` (7 subsequent siblings)
  9 siblings, 0 replies; 12+ messages in thread
From: Rosen Penev @ 2024-09-30 20:24 UTC (permalink / raw)
  To: netdev
  Cc: andrew, davem, edumazet, kuba, pabeni, linux-kernel, olek2,
	shannon.nelson

It seems there's a missing free_netdev in the remove function. Just
avoid manual frees and use devm.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
 drivers/net/ethernet/lantiq_etop.c | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

diff --git a/drivers/net/ethernet/lantiq_etop.c b/drivers/net/ethernet/lantiq_etop.c
index 94b37c12f3f7..de4f75ce8d9d 100644
--- a/drivers/net/ethernet/lantiq_etop.c
+++ b/drivers/net/ethernet/lantiq_etop.c
@@ -601,7 +601,6 @@ ltq_etop_init(struct net_device *dev)
 
 err_netdev:
 	unregister_netdev(dev);
-	free_netdev(dev);
 err_hw:
 	ltq_etop_hw_exit(dev);
 	return err;
@@ -672,7 +671,8 @@ ltq_etop_probe(struct platform_device *pdev)
 		goto err_out;
 	}
 
-	dev = alloc_etherdev_mq(sizeof(struct ltq_etop_priv), 4);
+	dev = devm_alloc_etherdev_mqs(&pdev->dev, sizeof(struct ltq_etop_priv),
+				      4, 4);
 	if (!dev) {
 		err = -ENOMEM;
 		goto err_out;
@@ -690,13 +690,13 @@ ltq_etop_probe(struct platform_device *pdev)
 	err = device_property_read_u32(&pdev->dev, "lantiq,tx-burst-length", &priv->tx_burst_len);
 	if (err < 0) {
 		dev_err(&pdev->dev, "unable to read tx-burst-length property\n");
-		goto err_free;
+		goto err_out;
 	}
 
 	err = device_property_read_u32(&pdev->dev, "lantiq,rx-burst-length", &priv->rx_burst_len);
 	if (err < 0) {
 		dev_err(&pdev->dev, "unable to read rx-burst-length property\n");
-		goto err_free;
+		goto err_out;
 	}
 
 	for (i = 0; i < MAX_DMA_CHAN; i++) {
@@ -711,13 +711,11 @@ ltq_etop_probe(struct platform_device *pdev)
 
 	err = register_netdev(dev);
 	if (err)
-		goto err_free;
+		goto err_out;
 
 	platform_set_drvdata(pdev, dev);
 	return 0;
 
-err_free:
-	free_netdev(dev);
 err_out:
 	return err;
 }
-- 
2.46.2


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

* [PATCH net-next 3/9] net: lantiq_etop: use devm for register_netdev
  2024-09-30 20:24 [PATCH net-next 0/9] net: lantiq_etop: some cleanups Rosen Penev
  2024-09-30 20:24 ` [PATCH net-next 1/9] net: lantiq_etop: use netif_receive_skb_list Rosen Penev
  2024-09-30 20:24 ` [PATCH net-next 2/9] net: lantiq_etop: use devm_alloc_etherdev_mqs Rosen Penev
@ 2024-09-30 20:24 ` Rosen Penev
  2024-09-30 20:24 ` [PATCH net-next 4/9] net: lantiq_etop: use devm for mdiobus Rosen Penev
                   ` (6 subsequent siblings)
  9 siblings, 0 replies; 12+ messages in thread
From: Rosen Penev @ 2024-09-30 20:24 UTC (permalink / raw)
  To: netdev
  Cc: andrew, davem, edumazet, kuba, pabeni, linux-kernel, olek2,
	shannon.nelson

This is the last to be created and so must be the first to be freed.
Simpler to avoid by using devm.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
 drivers/net/ethernet/lantiq_etop.c | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/drivers/net/ethernet/lantiq_etop.c b/drivers/net/ethernet/lantiq_etop.c
index de4f75ce8d9d..988f204fd89c 100644
--- a/drivers/net/ethernet/lantiq_etop.c
+++ b/drivers/net/ethernet/lantiq_etop.c
@@ -587,7 +587,7 @@ ltq_etop_init(struct net_device *dev)
 
 	err = ltq_etop_set_mac_address(dev, &mac);
 	if (err)
-		goto err_netdev;
+		goto err_hw;
 
 	/* Set addr_assign_type here, ltq_etop_set_mac_address would reset it. */
 	if (random_mac)
@@ -596,11 +596,9 @@ ltq_etop_init(struct net_device *dev)
 	ltq_etop_set_multicast_list(dev);
 	err = ltq_etop_mdio_init(dev);
 	if (err)
-		goto err_netdev;
+		goto err_hw;
 	return 0;
 
-err_netdev:
-	unregister_netdev(dev);
 err_hw:
 	ltq_etop_hw_exit(dev);
 	return err;
@@ -709,7 +707,7 @@ ltq_etop_probe(struct platform_device *pdev)
 		priv->ch[i].netdev = dev;
 	}
 
-	err = register_netdev(dev);
+	err = devm_register_netdev(&pdev->dev, dev);
 	if (err)
 		goto err_out;
 
@@ -728,7 +726,6 @@ static void ltq_etop_remove(struct platform_device *pdev)
 		netif_tx_stop_all_queues(dev);
 		ltq_etop_hw_exit(dev);
 		ltq_etop_mdio_cleanup(dev);
-		unregister_netdev(dev);
 	}
 }
 
-- 
2.46.2


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

* [PATCH net-next 4/9] net: lantiq_etop: use devm for mdiobus
  2024-09-30 20:24 [PATCH net-next 0/9] net: lantiq_etop: some cleanups Rosen Penev
                   ` (2 preceding siblings ...)
  2024-09-30 20:24 ` [PATCH net-next 3/9] net: lantiq_etop: use devm for register_netdev Rosen Penev
@ 2024-09-30 20:24 ` Rosen Penev
  2024-09-30 20:24 ` [PATCH net-next 5/9] net: lantiq_etop: move phy_disconnect to stop Rosen Penev
                   ` (5 subsequent siblings)
  9 siblings, 0 replies; 12+ messages in thread
From: Rosen Penev @ 2024-09-30 20:24 UTC (permalink / raw)
  To: netdev
  Cc: andrew, davem, edumazet, kuba, pabeni, linux-kernel, olek2,
	shannon.nelson

Allows removing ltq_etop_mdio_cleanup. Kept the phy_disconnect in the
remove function just in case.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
 drivers/net/ethernet/lantiq_etop.c | 24 +++++-------------------
 1 file changed, 5 insertions(+), 19 deletions(-)

diff --git a/drivers/net/ethernet/lantiq_etop.c b/drivers/net/ethernet/lantiq_etop.c
index 988f204fd89c..d1fcbfd3e255 100644
--- a/drivers/net/ethernet/lantiq_etop.c
+++ b/drivers/net/ethernet/lantiq_etop.c
@@ -391,7 +391,7 @@ ltq_etop_mdio_init(struct net_device *dev)
 	struct ltq_etop_priv *priv = netdev_priv(dev);
 	int err;
 
-	priv->mii_bus = mdiobus_alloc();
+	priv->mii_bus = devm_mdiobus_alloc(&dev->dev);
 	if (!priv->mii_bus) {
 		netdev_err(dev, "failed to allocate mii bus\n");
 		err = -ENOMEM;
@@ -404,35 +404,21 @@ ltq_etop_mdio_init(struct net_device *dev)
 	priv->mii_bus->name = "ltq_mii";
 	snprintf(priv->mii_bus->id, MII_BUS_ID_SIZE, "%s-%x",
 		 priv->pdev->name, priv->pdev->id);
-	if (mdiobus_register(priv->mii_bus)) {
+	if (devm_mdiobus_register(&dev->dev, priv->mii_bus)) {
 		err = -ENXIO;
-		goto err_out_free_mdiobus;
+		goto err_out;
 	}
 
 	if (ltq_etop_mdio_probe(dev)) {
 		err = -ENXIO;
-		goto err_out_unregister_bus;
+		goto err_out;
 	}
 	return 0;
 
-err_out_unregister_bus:
-	mdiobus_unregister(priv->mii_bus);
-err_out_free_mdiobus:
-	mdiobus_free(priv->mii_bus);
 err_out:
 	return err;
 }
 
-static void
-ltq_etop_mdio_cleanup(struct net_device *dev)
-{
-	struct ltq_etop_priv *priv = netdev_priv(dev);
-
-	phy_disconnect(dev->phydev);
-	mdiobus_unregister(priv->mii_bus);
-	mdiobus_free(priv->mii_bus);
-}
-
 static int
 ltq_etop_open(struct net_device *dev)
 {
@@ -725,7 +711,7 @@ static void ltq_etop_remove(struct platform_device *pdev)
 	if (dev) {
 		netif_tx_stop_all_queues(dev);
 		ltq_etop_hw_exit(dev);
-		ltq_etop_mdio_cleanup(dev);
+		phy_disconnect(dev->phydev);
 	}
 }
 
-- 
2.46.2


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

* [PATCH net-next 5/9] net: lantiq_etop: move phy_disconnect to stop
  2024-09-30 20:24 [PATCH net-next 0/9] net: lantiq_etop: some cleanups Rosen Penev
                   ` (3 preceding siblings ...)
  2024-09-30 20:24 ` [PATCH net-next 4/9] net: lantiq_etop: use devm for mdiobus Rosen Penev
@ 2024-09-30 20:24 ` Rosen Penev
  2024-09-30 20:24 ` [PATCH net-next 6/9] net: lantiq_etop: use devm_err_probe Rosen Penev
                   ` (4 subsequent siblings)
  9 siblings, 0 replies; 12+ messages in thread
From: Rosen Penev @ 2024-09-30 20:24 UTC (permalink / raw)
  To: netdev
  Cc: andrew, davem, edumazet, kuba, pabeni, linux-kernel, olek2,
	shannon.nelson

phy is initialized in start, not in probe. Move to stop instead of
remove to disconnect it earlier.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
 drivers/net/ethernet/lantiq_etop.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/lantiq_etop.c b/drivers/net/ethernet/lantiq_etop.c
index d1fcbfd3e255..9ca8f01585f6 100644
--- a/drivers/net/ethernet/lantiq_etop.c
+++ b/drivers/net/ethernet/lantiq_etop.c
@@ -447,6 +447,7 @@ ltq_etop_stop(struct net_device *dev)
 
 	netif_tx_stop_all_queues(dev);
 	phy_stop(dev->phydev);
+	phy_disconnect(dev->phydev);
 	for (i = 0; i < MAX_DMA_CHAN; i++) {
 		struct ltq_etop_chan *ch = &priv->ch[i];
 
@@ -711,7 +712,6 @@ static void ltq_etop_remove(struct platform_device *pdev)
 	if (dev) {
 		netif_tx_stop_all_queues(dev);
 		ltq_etop_hw_exit(dev);
-		phy_disconnect(dev->phydev);
 	}
 }
 
-- 
2.46.2


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

* [PATCH net-next 6/9] net: lantiq_etop: use devm_err_probe
  2024-09-30 20:24 [PATCH net-next 0/9] net: lantiq_etop: some cleanups Rosen Penev
                   ` (4 preceding siblings ...)
  2024-09-30 20:24 ` [PATCH net-next 5/9] net: lantiq_etop: move phy_disconnect to stop Rosen Penev
@ 2024-09-30 20:24 ` Rosen Penev
  2024-09-30 20:24 ` [PATCH net-next 7/9] net: lantiq_etop: remove struct resource Rosen Penev
                   ` (3 subsequent siblings)
  9 siblings, 0 replies; 12+ messages in thread
From: Rosen Penev @ 2024-09-30 20:24 UTC (permalink / raw)
  To: netdev
  Cc: andrew, davem, edumazet, kuba, pabeni, linux-kernel, olek2,
	shannon.nelson

Also remove pointless gotos that just return as a result of devm
conversions.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
 drivers/net/ethernet/lantiq_etop.c | 61 ++++++++++--------------------
 1 file changed, 21 insertions(+), 40 deletions(-)

diff --git a/drivers/net/ethernet/lantiq_etop.c b/drivers/net/ethernet/lantiq_etop.c
index 9ca8f01585f6..bc97b189785e 100644
--- a/drivers/net/ethernet/lantiq_etop.c
+++ b/drivers/net/ethernet/lantiq_etop.c
@@ -389,13 +389,11 @@ static int
 ltq_etop_mdio_init(struct net_device *dev)
 {
 	struct ltq_etop_priv *priv = netdev_priv(dev);
-	int err;
 
 	priv->mii_bus = devm_mdiobus_alloc(&dev->dev);
 	if (!priv->mii_bus) {
 		netdev_err(dev, "failed to allocate mii bus\n");
-		err = -ENOMEM;
-		goto err_out;
+		return -ENOMEM;
 	}
 
 	priv->mii_bus->priv = dev;
@@ -404,19 +402,13 @@ ltq_etop_mdio_init(struct net_device *dev)
 	priv->mii_bus->name = "ltq_mii";
 	snprintf(priv->mii_bus->id, MII_BUS_ID_SIZE, "%s-%x",
 		 priv->pdev->name, priv->pdev->id);
-	if (devm_mdiobus_register(&dev->dev, priv->mii_bus)) {
-		err = -ENXIO;
-		goto err_out;
-	}
+	if (devm_mdiobus_register(&dev->dev, priv->mii_bus))
+		return -ENXIO;
 
-	if (ltq_etop_mdio_probe(dev)) {
-		err = -ENXIO;
-		goto err_out;
-	}
-	return 0;
+	if (ltq_etop_mdio_probe(dev))
+		return -ENXIO;
 
-err_out:
-	return err;
+	return 0;
 }
 
 static int
@@ -634,34 +626,28 @@ ltq_etop_probe(struct platform_device *pdev)
 
 	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	if (!res) {
-		dev_err(&pdev->dev, "failed to get etop resource\n");
-		err = -ENOENT;
-		goto err_out;
+		dev_err(&pdev->dev, "failed to get etop resource");
+		return -ENOENT;
 	}
 
 	res = devm_request_mem_region(&pdev->dev, res->start,
 				      resource_size(res), dev_name(&pdev->dev));
 	if (!res) {
-		dev_err(&pdev->dev, "failed to request etop resource\n");
-		err = -EBUSY;
-		goto err_out;
+		dev_err(&pdev->dev, "failed to request etop resource");
+		return -EBUSY;
 	}
 
 	ltq_etop_membase = devm_ioremap(&pdev->dev, res->start,
 					resource_size(res));
 	if (!ltq_etop_membase) {
-		dev_err(&pdev->dev, "failed to remap etop engine %d\n",
-			pdev->id);
-		err = -ENOMEM;
-		goto err_out;
+		dev_err(&pdev->dev, "failed to remap etop engine %d", pdev->id);
+		return -ENOMEM;
 	}
 
 	dev = devm_alloc_etherdev_mqs(&pdev->dev, sizeof(struct ltq_etop_priv),
 				      4, 4);
-	if (!dev) {
-		err = -ENOMEM;
-		goto err_out;
-	}
+	if (!dev)
+		return -ENOMEM;
 	dev->netdev_ops = &ltq_eth_netdev_ops;
 	dev->ethtool_ops = &ltq_etop_ethtool_ops;
 	priv = netdev_priv(dev);
@@ -673,16 +659,14 @@ ltq_etop_probe(struct platform_device *pdev)
 	SET_NETDEV_DEV(dev, &pdev->dev);
 
 	err = device_property_read_u32(&pdev->dev, "lantiq,tx-burst-length", &priv->tx_burst_len);
-	if (err < 0) {
-		dev_err(&pdev->dev, "unable to read tx-burst-length property\n");
-		goto err_out;
-	}
+	if (err < 0)
+		return dev_err_probe(&pdev->dev, err,
+				     "unable to read tx-burst-length property");
 
 	err = device_property_read_u32(&pdev->dev, "lantiq,rx-burst-length", &priv->rx_burst_len);
-	if (err < 0) {
-		dev_err(&pdev->dev, "unable to read rx-burst-length property\n");
-		goto err_out;
-	}
+	if (err < 0)
+		return dev_err_probe(&pdev->dev, err,
+				     "unable to read rx-burst-length property");
 
 	for (i = 0; i < MAX_DMA_CHAN; i++) {
 		if (IS_TX(i))
@@ -696,13 +680,10 @@ ltq_etop_probe(struct platform_device *pdev)
 
 	err = devm_register_netdev(&pdev->dev, dev);
 	if (err)
-		goto err_out;
+		return err;
 
 	platform_set_drvdata(pdev, dev);
 	return 0;
-
-err_out:
-	return err;
 }
 
 static void ltq_etop_remove(struct platform_device *pdev)
-- 
2.46.2


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

* [PATCH net-next 7/9] net: lantiq_etop: remove struct resource
  2024-09-30 20:24 [PATCH net-next 0/9] net: lantiq_etop: some cleanups Rosen Penev
                   ` (5 preceding siblings ...)
  2024-09-30 20:24 ` [PATCH net-next 6/9] net: lantiq_etop: use devm_err_probe Rosen Penev
@ 2024-09-30 20:24 ` Rosen Penev
  2024-10-01 15:33   ` Simon Horman
  2024-09-30 20:24 ` [PATCH net-next 8/9] net: lantiq_etop: use module_platform_driver_probe Rosen Penev
                   ` (2 subsequent siblings)
  9 siblings, 1 reply; 12+ messages in thread
From: Rosen Penev @ 2024-09-30 20:24 UTC (permalink / raw)
  To: netdev
  Cc: andrew, davem, edumazet, kuba, pabeni, linux-kernel, olek2,
	shannon.nelson

All of this can be simplified with devm_platformn_ioremap_resource. No
need for extra code.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
 drivers/net/ethernet/lantiq_etop.c | 23 +++--------------------
 1 file changed, 3 insertions(+), 20 deletions(-)

diff --git a/drivers/net/ethernet/lantiq_etop.c b/drivers/net/ethernet/lantiq_etop.c
index bc97b189785e..0cb5d536f351 100644
--- a/drivers/net/ethernet/lantiq_etop.c
+++ b/drivers/net/ethernet/lantiq_etop.c
@@ -90,7 +90,6 @@ struct ltq_etop_priv {
 	struct net_device *netdev;
 	struct platform_device *pdev;
 	struct ltq_eth_data *pldata;
-	struct resource *res;
 
 	struct mii_bus *mii_bus;
 
@@ -620,28 +619,13 @@ ltq_etop_probe(struct platform_device *pdev)
 {
 	struct net_device *dev;
 	struct ltq_etop_priv *priv;
-	struct resource *res;
 	int err;
 	int i;
 
-	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-	if (!res) {
-		dev_err(&pdev->dev, "failed to get etop resource");
-		return -ENOENT;
-	}
-
-	res = devm_request_mem_region(&pdev->dev, res->start,
-				      resource_size(res), dev_name(&pdev->dev));
-	if (!res) {
-		dev_err(&pdev->dev, "failed to request etop resource");
-		return -EBUSY;
-	}
-
-	ltq_etop_membase = devm_ioremap(&pdev->dev, res->start,
-					resource_size(res));
-	if (!ltq_etop_membase) {
+	ltq_etop_membase = devm_platformn_ioremap_resource(pdev, 0);
+	if (IS_ERR(ltq_etop_membase)) {
 		dev_err(&pdev->dev, "failed to remap etop engine %d", pdev->id);
-		return -ENOMEM;
+		return PTR_ERR(ltq_etop_membase);
 	}
 
 	dev = devm_alloc_etherdev_mqs(&pdev->dev, sizeof(struct ltq_etop_priv),
@@ -651,7 +635,6 @@ ltq_etop_probe(struct platform_device *pdev)
 	dev->netdev_ops = &ltq_eth_netdev_ops;
 	dev->ethtool_ops = &ltq_etop_ethtool_ops;
 	priv = netdev_priv(dev);
-	priv->res = res;
 	priv->pdev = pdev;
 	priv->pldata = dev_get_platdata(&pdev->dev);
 	priv->netdev = dev;
-- 
2.46.2


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

* [PATCH net-next 8/9] net: lantiq_etop: use module_platform_driver_probe
  2024-09-30 20:24 [PATCH net-next 0/9] net: lantiq_etop: some cleanups Rosen Penev
                   ` (6 preceding siblings ...)
  2024-09-30 20:24 ` [PATCH net-next 7/9] net: lantiq_etop: remove struct resource Rosen Penev
@ 2024-09-30 20:24 ` Rosen Penev
  2024-09-30 20:24 ` [PATCH net-next 9/9] net: lantiq_etop: no queue stop in remove Rosen Penev
  2024-09-30 22:02 ` [PATCH net-next 0/9] net: lantiq_etop: some cleanups Nelson, Shannon
  9 siblings, 0 replies; 12+ messages in thread
From: Rosen Penev @ 2024-09-30 20:24 UTC (permalink / raw)
  To: netdev
  Cc: andrew, davem, edumazet, kuba, pabeni, linux-kernel, olek2,
	shannon.nelson

The explicit init and exit functions don't do anything special. Just use
the macro.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
 drivers/net/ethernet/lantiq_etop.c | 19 +------------------
 1 file changed, 1 insertion(+), 18 deletions(-)

diff --git a/drivers/net/ethernet/lantiq_etop.c b/drivers/net/ethernet/lantiq_etop.c
index 0cb5d536f351..4d8534092667 100644
--- a/drivers/net/ethernet/lantiq_etop.c
+++ b/drivers/net/ethernet/lantiq_etop.c
@@ -686,24 +686,7 @@ static struct platform_driver ltq_mii_driver = {
 	},
 };
 
-static int __init
-init_ltq_etop(void)
-{
-	int ret = platform_driver_probe(&ltq_mii_driver, ltq_etop_probe);
-
-	if (ret)
-		pr_err("ltq_etop: Error registering platform driver!");
-	return ret;
-}
-
-static void __exit
-exit_ltq_etop(void)
-{
-	platform_driver_unregister(&ltq_mii_driver);
-}
-
-module_init(init_ltq_etop);
-module_exit(exit_ltq_etop);
+module_platform_driver_probe(&ltq_mii_driver, ltq_etop_probe);
 
 MODULE_AUTHOR("John Crispin <blogic@openwrt.org>");
 MODULE_DESCRIPTION("Lantiq SoC ETOP");
-- 
2.46.2


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

* [PATCH net-next 9/9] net: lantiq_etop: no queue stop in remove
  2024-09-30 20:24 [PATCH net-next 0/9] net: lantiq_etop: some cleanups Rosen Penev
                   ` (7 preceding siblings ...)
  2024-09-30 20:24 ` [PATCH net-next 8/9] net: lantiq_etop: use module_platform_driver_probe Rosen Penev
@ 2024-09-30 20:24 ` Rosen Penev
  2024-09-30 22:02 ` [PATCH net-next 0/9] net: lantiq_etop: some cleanups Nelson, Shannon
  9 siblings, 0 replies; 12+ messages in thread
From: Rosen Penev @ 2024-09-30 20:24 UTC (permalink / raw)
  To: netdev
  Cc: andrew, davem, edumazet, kuba, pabeni, linux-kernel, olek2,
	shannon.nelson

This is already called in stop. No need to call a second time.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
 drivers/net/ethernet/lantiq_etop.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/lantiq_etop.c b/drivers/net/ethernet/lantiq_etop.c
index 4d8534092667..0b5642744f8a 100644
--- a/drivers/net/ethernet/lantiq_etop.c
+++ b/drivers/net/ethernet/lantiq_etop.c
@@ -673,10 +673,8 @@ static void ltq_etop_remove(struct platform_device *pdev)
 {
 	struct net_device *dev = platform_get_drvdata(pdev);
 
-	if (dev) {
-		netif_tx_stop_all_queues(dev);
+	if (dev)
 		ltq_etop_hw_exit(dev);
-	}
 }
 
 static struct platform_driver ltq_mii_driver = {
-- 
2.46.2


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

* Re: [PATCH net-next 0/9] net: lantiq_etop: some cleanups
  2024-09-30 20:24 [PATCH net-next 0/9] net: lantiq_etop: some cleanups Rosen Penev
                   ` (8 preceding siblings ...)
  2024-09-30 20:24 ` [PATCH net-next 9/9] net: lantiq_etop: no queue stop in remove Rosen Penev
@ 2024-09-30 22:02 ` Nelson, Shannon
  9 siblings, 0 replies; 12+ messages in thread
From: Nelson, Shannon @ 2024-09-30 22:02 UTC (permalink / raw)
  To: Rosen Penev, netdev
  Cc: andrew, davem, edumazet, kuba, pabeni, linux-kernel, olek2

On 9/30/2024 1:24 PM, Rosen Penev wrote:
> 
> Some basic cleanups to increase devm usage.
> 
> Rosen Penev (9):
>    net: lantiq_etop: use netif_receive_skb_list
>    net: lantiq_etop: use devm_alloc_etherdev_mqs
>    net: lantiq_etop: use devm for register_netdev
>    net: lantiq_etop: use devm for mdiobus
>    net: lantiq_etop: move phy_disconnect to stop
>    net: lantiq_etop: use devm_err_probe
>    net: lantiq_etop: remove struct resource
>    net: lantiq_etop: use module_platform_driver_probe
>    net: lantiq_etop: no queue stop in remove
> 
>   drivers/net/ethernet/lantiq_etop.c | 141 +++++++----------------------
>   1 file changed, 35 insertions(+), 106 deletions(-)
> 
> --
> 2.46.2
> 

These all seem to be reasonable cleanups - thanks.

Reviewed-by: Shannon Nelson <shannon.nelson@amd.com>


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

* Re: [PATCH net-next 7/9] net: lantiq_etop: remove struct resource
  2024-09-30 20:24 ` [PATCH net-next 7/9] net: lantiq_etop: remove struct resource Rosen Penev
@ 2024-10-01 15:33   ` Simon Horman
  0 siblings, 0 replies; 12+ messages in thread
From: Simon Horman @ 2024-10-01 15:33 UTC (permalink / raw)
  To: Rosen Penev
  Cc: netdev, andrew, davem, edumazet, kuba, pabeni, linux-kernel,
	olek2, shannon.nelson

On Mon, Sep 30, 2024 at 01:24:32PM -0700, Rosen Penev wrote:
> All of this can be simplified with devm_platformn_ioremap_resource. No
> need for extra code.
> 
> Signed-off-by: Rosen Penev <rosenp@gmail.com>
> ---
>  drivers/net/ethernet/lantiq_etop.c | 23 +++--------------------
>  1 file changed, 3 insertions(+), 20 deletions(-)
> 
> diff --git a/drivers/net/ethernet/lantiq_etop.c b/drivers/net/ethernet/lantiq_etop.c
> index bc97b189785e..0cb5d536f351 100644
> --- a/drivers/net/ethernet/lantiq_etop.c
> +++ b/drivers/net/ethernet/lantiq_etop.c
> @@ -90,7 +90,6 @@ struct ltq_etop_priv {
>  	struct net_device *netdev;
>  	struct platform_device *pdev;
>  	struct ltq_eth_data *pldata;
> -	struct resource *res;
>  
>  	struct mii_bus *mii_bus;
>  
> @@ -620,28 +619,13 @@ ltq_etop_probe(struct platform_device *pdev)
>  {
>  	struct net_device *dev;
>  	struct ltq_etop_priv *priv;
> -	struct resource *res;
>  	int err;
>  	int i;
>  
> -	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> -	if (!res) {
> -		dev_err(&pdev->dev, "failed to get etop resource");
> -		return -ENOENT;
> -	}
> -
> -	res = devm_request_mem_region(&pdev->dev, res->start,
> -				      resource_size(res), dev_name(&pdev->dev));
> -	if (!res) {
> -		dev_err(&pdev->dev, "failed to request etop resource");
> -		return -EBUSY;
> -	}
> -
> -	ltq_etop_membase = devm_ioremap(&pdev->dev, res->start,
> -					resource_size(res));
> -	if (!ltq_etop_membase) {
> +	ltq_etop_membase = devm_platformn_ioremap_resource(pdev, 0);

Hi Rosen,

I believe this should be devm_platform_ioremap_resource()

> +	if (IS_ERR(ltq_etop_membase)) {
>  		dev_err(&pdev->dev, "failed to remap etop engine %d", pdev->id);
> -		return -ENOMEM;
> +		return PTR_ERR(ltq_etop_membase);
>  	}
>  
>  	dev = devm_alloc_etherdev_mqs(&pdev->dev, sizeof(struct ltq_etop_priv),
> @@ -651,7 +635,6 @@ ltq_etop_probe(struct platform_device *pdev)
>  	dev->netdev_ops = &ltq_eth_netdev_ops;
>  	dev->ethtool_ops = &ltq_etop_ethtool_ops;
>  	priv = netdev_priv(dev);
> -	priv->res = res;
>  	priv->pdev = pdev;
>  	priv->pldata = dev_get_platdata(&pdev->dev);
>  	priv->netdev = dev;

-- 
pw-bot: changes-requested

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

end of thread, other threads:[~2024-10-01 15:33 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-30 20:24 [PATCH net-next 0/9] net: lantiq_etop: some cleanups Rosen Penev
2024-09-30 20:24 ` [PATCH net-next 1/9] net: lantiq_etop: use netif_receive_skb_list Rosen Penev
2024-09-30 20:24 ` [PATCH net-next 2/9] net: lantiq_etop: use devm_alloc_etherdev_mqs Rosen Penev
2024-09-30 20:24 ` [PATCH net-next 3/9] net: lantiq_etop: use devm for register_netdev Rosen Penev
2024-09-30 20:24 ` [PATCH net-next 4/9] net: lantiq_etop: use devm for mdiobus Rosen Penev
2024-09-30 20:24 ` [PATCH net-next 5/9] net: lantiq_etop: move phy_disconnect to stop Rosen Penev
2024-09-30 20:24 ` [PATCH net-next 6/9] net: lantiq_etop: use devm_err_probe Rosen Penev
2024-09-30 20:24 ` [PATCH net-next 7/9] net: lantiq_etop: remove struct resource Rosen Penev
2024-10-01 15:33   ` Simon Horman
2024-09-30 20:24 ` [PATCH net-next 8/9] net: lantiq_etop: use module_platform_driver_probe Rosen Penev
2024-09-30 20:24 ` [PATCH net-next 9/9] net: lantiq_etop: no queue stop in remove Rosen Penev
2024-09-30 22:02 ` [PATCH net-next 0/9] net: lantiq_etop: some cleanups Nelson, Shannon

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).