netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-next 0/4] net: phy: fixed_phy: improvements
@ 2025-09-06 21:59 Heiner Kallweit
  2025-09-06 22:00 ` [PATCH net-next 1/4] net: phy: fixed_phy: remove unused interrupt support Heiner Kallweit
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: Heiner Kallweit @ 2025-09-06 21:59 UTC (permalink / raw)
  To: Andrew Lunn, Andrew Lunn, Russell King - ARM Linux,
	Jakub Kicinski, Paolo Abeni, Eric Dumazet, David Miller
  Cc: netdev@vger.kernel.org

This series contains a number of improvements.
No functional change intended.

Heiner Kallweit (4):
  net: phy: fixed_phy: remove unused interrupt support
  net: phy: fixed_phy: remove member no_carrier from struct fixed_phy
  net: phy: fixed_phy: add helper fixed_phy_find
  net: phy: fixed_phy: remove struct fixed_mdio_bus

 drivers/net/phy/fixed_phy.c | 137 ++++++++++++++++--------------------
 1 file changed, 61 insertions(+), 76 deletions(-)

-- 
2.51.0


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

* [PATCH net-next 1/4] net: phy: fixed_phy: remove unused interrupt support
  2025-09-06 21:59 [PATCH net-next 0/4] net: phy: fixed_phy: improvements Heiner Kallweit
@ 2025-09-06 22:00 ` Heiner Kallweit
  2025-09-06 22:01 ` [PATCH net-next 2/4] net: phy: fixed_phy: remove member no_carrier from struct fixed_phy Heiner Kallweit
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Heiner Kallweit @ 2025-09-06 22:00 UTC (permalink / raw)
  To: Andrew Lunn, Andrew Lunn, Russell King - ARM Linux,
	Jakub Kicinski, Paolo Abeni, Eric Dumazet, David Miller
  Cc: netdev@vger.kernel.org

The two callers of __fixed_phy_add() both pass PHY_POLL, so we can
remove the irq argument to simplify the function.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
 drivers/net/phy/fixed_phy.c | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/drivers/net/phy/fixed_phy.c b/drivers/net/phy/fixed_phy.c
index aae7bd4ce..1ac17ef33 100644
--- a/drivers/net/phy/fixed_phy.c
+++ b/drivers/net/phy/fixed_phy.c
@@ -114,7 +114,7 @@ int fixed_phy_set_link_update(struct phy_device *phydev,
 }
 EXPORT_SYMBOL_GPL(fixed_phy_set_link_update);
 
-static int __fixed_phy_add(unsigned int irq, int phy_addr,
+static int __fixed_phy_add(int phy_addr,
 			   const struct fixed_phy_status *status)
 {
 	int ret;
@@ -129,9 +129,6 @@ static int __fixed_phy_add(unsigned int irq, int phy_addr,
 	if (!fp)
 		return -ENOMEM;
 
-	if (irq != PHY_POLL)
-		fmb->mii_bus->irq[phy_addr] = irq;
-
 	fp->addr = phy_addr;
 	fp->status = *status;
 
@@ -142,7 +139,7 @@ static int __fixed_phy_add(unsigned int irq, int phy_addr,
 
 void fixed_phy_add(const struct fixed_phy_status *status)
 {
-	__fixed_phy_add(PHY_POLL, 0, status);
+	__fixed_phy_add(0, status);
 }
 EXPORT_SYMBOL_GPL(fixed_phy_add);
 
@@ -179,7 +176,7 @@ struct phy_device *fixed_phy_register(const struct fixed_phy_status *status,
 	if (phy_addr < 0)
 		return ERR_PTR(phy_addr);
 
-	ret = __fixed_phy_add(PHY_POLL, phy_addr, status);
+	ret = __fixed_phy_add(phy_addr, status);
 	if (ret < 0) {
 		ida_free(&phy_fixed_ida, phy_addr);
 		return ERR_PTR(ret);
-- 
2.51.0



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

* [PATCH net-next 2/4] net: phy: fixed_phy: remove member no_carrier from struct fixed_phy
  2025-09-06 21:59 [PATCH net-next 0/4] net: phy: fixed_phy: improvements Heiner Kallweit
  2025-09-06 22:00 ` [PATCH net-next 1/4] net: phy: fixed_phy: remove unused interrupt support Heiner Kallweit
@ 2025-09-06 22:01 ` Heiner Kallweit
  2025-09-06 22:01 ` [PATCH net-next 3/4] net: phy: fixed_phy: add helper fixed_phy_find Heiner Kallweit
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Heiner Kallweit @ 2025-09-06 22:01 UTC (permalink / raw)
  To: Andrew Lunn, Andrew Lunn, Russell King - ARM Linux,
	Jakub Kicinski, Paolo Abeni, Eric Dumazet, David Miller
  Cc: netdev@vger.kernel.org

After the recent removal of gpio support member no_carrier isn't
needed any longer.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
 drivers/net/phy/fixed_phy.c | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/drivers/net/phy/fixed_phy.c b/drivers/net/phy/fixed_phy.c
index 1ac17ef33..35ac29c3e 100644
--- a/drivers/net/phy/fixed_phy.c
+++ b/drivers/net/phy/fixed_phy.c
@@ -32,7 +32,6 @@ struct fixed_phy {
 	int addr;
 	struct phy_device *phydev;
 	struct fixed_phy_status status;
-	bool no_carrier;
 	int (*link_update)(struct net_device *, struct fixed_phy_status *);
 	struct list_head node;
 };
@@ -52,7 +51,7 @@ int fixed_phy_change_carrier(struct net_device *dev, bool new_carrier)
 
 	list_for_each_entry(fp, &fmb->phys, node) {
 		if (fp->addr == phydev->mdio.addr) {
-			fp->no_carrier = !new_carrier;
+			fp->status.link = new_carrier;
 			return 0;
 		}
 	}
@@ -67,8 +66,6 @@ static int fixed_mdio_read(struct mii_bus *bus, int phy_addr, int reg_num)
 
 	list_for_each_entry(fp, &fmb->phys, node) {
 		if (fp->addr == phy_addr) {
-			fp->status.link = !fp->no_carrier;
-
 			/* Issue callback if user registered it. */
 			if (fp->link_update)
 				fp->link_update(fp->phydev->attached_dev,
-- 
2.51.0



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

* [PATCH net-next 3/4] net: phy: fixed_phy: add helper fixed_phy_find
  2025-09-06 21:59 [PATCH net-next 0/4] net: phy: fixed_phy: improvements Heiner Kallweit
  2025-09-06 22:00 ` [PATCH net-next 1/4] net: phy: fixed_phy: remove unused interrupt support Heiner Kallweit
  2025-09-06 22:01 ` [PATCH net-next 2/4] net: phy: fixed_phy: remove member no_carrier from struct fixed_phy Heiner Kallweit
@ 2025-09-06 22:01 ` Heiner Kallweit
  2025-09-06 22:02 ` [PATCH net-next 4/4] net: phy: fixed_phy: remove struct fixed_mdio_bus Heiner Kallweit
  2025-09-10  1:30 ` [PATCH net-next 0/4] net: phy: fixed_phy: improvements patchwork-bot+netdevbpf
  4 siblings, 0 replies; 6+ messages in thread
From: Heiner Kallweit @ 2025-09-06 22:01 UTC (permalink / raw)
  To: Andrew Lunn, Andrew Lunn, Russell King - ARM Linux,
	Jakub Kicinski, Paolo Abeni, Eric Dumazet, David Miller
  Cc: netdev@vger.kernel.org

Factor out the functionality to search for a fixed_phy matching an
address. This improves readability of the code.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
 drivers/net/phy/fixed_phy.c | 81 +++++++++++++++++++------------------
 1 file changed, 42 insertions(+), 39 deletions(-)

diff --git a/drivers/net/phy/fixed_phy.c b/drivers/net/phy/fixed_phy.c
index 35ac29c3e..eae513b70 100644
--- a/drivers/net/phy/fixed_phy.c
+++ b/drivers/net/phy/fixed_phy.c
@@ -40,42 +40,49 @@ static struct fixed_mdio_bus platform_fmb = {
 	.phys = LIST_HEAD_INIT(platform_fmb.phys),
 };
 
-int fixed_phy_change_carrier(struct net_device *dev, bool new_carrier)
+static struct fixed_phy *fixed_phy_find(int addr)
 {
 	struct fixed_mdio_bus *fmb = &platform_fmb;
+	struct fixed_phy *fp;
+
+	list_for_each_entry(fp, &fmb->phys, node) {
+		if (fp->addr == addr)
+			return fp;
+	}
+
+	return NULL;
+}
+
+int fixed_phy_change_carrier(struct net_device *dev, bool new_carrier)
+{
 	struct phy_device *phydev = dev->phydev;
 	struct fixed_phy *fp;
 
 	if (!phydev || !phydev->mdio.bus)
 		return -EINVAL;
 
-	list_for_each_entry(fp, &fmb->phys, node) {
-		if (fp->addr == phydev->mdio.addr) {
-			fp->status.link = new_carrier;
-			return 0;
-		}
-	}
-	return -EINVAL;
+	fp = fixed_phy_find(phydev->mdio.addr);
+	if (!fp)
+		return -EINVAL;
+
+	fp->status.link = new_carrier;
+
+	return 0;
 }
 EXPORT_SYMBOL_GPL(fixed_phy_change_carrier);
 
 static int fixed_mdio_read(struct mii_bus *bus, int phy_addr, int reg_num)
 {
-	struct fixed_mdio_bus *fmb = bus->priv;
 	struct fixed_phy *fp;
 
-	list_for_each_entry(fp, &fmb->phys, node) {
-		if (fp->addr == phy_addr) {
-			/* Issue callback if user registered it. */
-			if (fp->link_update)
-				fp->link_update(fp->phydev->attached_dev,
-						&fp->status);
-
-			return swphy_read_reg(reg_num, &fp->status);
-		}
-	}
+	fp = fixed_phy_find(phy_addr);
+	if (!fp)
+		return 0xffff;
 
-	return 0xFFFF;
+	if (fp->link_update)
+		fp->link_update(fp->phydev->attached_dev, &fp->status);
+
+	return swphy_read_reg(reg_num, &fp->status);
 }
 
 static int fixed_mdio_write(struct mii_bus *bus, int phy_addr, int reg_num,
@@ -93,21 +100,19 @@ int fixed_phy_set_link_update(struct phy_device *phydev,
 			      int (*link_update)(struct net_device *,
 						 struct fixed_phy_status *))
 {
-	struct fixed_mdio_bus *fmb = &platform_fmb;
 	struct fixed_phy *fp;
 
 	if (!phydev || !phydev->mdio.bus)
 		return -EINVAL;
 
-	list_for_each_entry(fp, &fmb->phys, node) {
-		if (fp->addr == phydev->mdio.addr) {
-			fp->link_update = link_update;
-			fp->phydev = phydev;
-			return 0;
-		}
-	}
+	fp = fixed_phy_find(phydev->mdio.addr);
+	if (!fp)
+		return -ENOENT;
+
+	fp->link_update = link_update;
+	fp->phydev = phydev;
 
-	return -ENOENT;
+	return 0;
 }
 EXPORT_SYMBOL_GPL(fixed_phy_set_link_update);
 
@@ -144,17 +149,15 @@ static DEFINE_IDA(phy_fixed_ida);
 
 static void fixed_phy_del(int phy_addr)
 {
-	struct fixed_mdio_bus *fmb = &platform_fmb;
-	struct fixed_phy *fp, *tmp;
+	struct fixed_phy *fp;
 
-	list_for_each_entry_safe(fp, tmp, &fmb->phys, node) {
-		if (fp->addr == phy_addr) {
-			list_del(&fp->node);
-			kfree(fp);
-			ida_free(&phy_fixed_ida, phy_addr);
-			return;
-		}
-	}
+	fp = fixed_phy_find(phy_addr);
+	if (!fp)
+		return;
+
+	list_del(&fp->node);
+	kfree(fp);
+	ida_free(&phy_fixed_ida, phy_addr);
 }
 
 struct phy_device *fixed_phy_register(const struct fixed_phy_status *status,
-- 
2.51.0



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

* [PATCH net-next 4/4] net: phy: fixed_phy: remove struct fixed_mdio_bus
  2025-09-06 21:59 [PATCH net-next 0/4] net: phy: fixed_phy: improvements Heiner Kallweit
                   ` (2 preceding siblings ...)
  2025-09-06 22:01 ` [PATCH net-next 3/4] net: phy: fixed_phy: add helper fixed_phy_find Heiner Kallweit
@ 2025-09-06 22:02 ` Heiner Kallweit
  2025-09-10  1:30 ` [PATCH net-next 0/4] net: phy: fixed_phy: improvements patchwork-bot+netdevbpf
  4 siblings, 0 replies; 6+ messages in thread
From: Heiner Kallweit @ 2025-09-06 22:02 UTC (permalink / raw)
  To: Andrew Lunn, Andrew Lunn, Russell King - ARM Linux,
	Jakub Kicinski, Paolo Abeni, Eric Dumazet, David Miller
  Cc: netdev@vger.kernel.org

Use two separate static variables instead of the struct, this allows
to simplify the code.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
 drivers/net/phy/fixed_phy.c | 50 ++++++++++++++-----------------------
 1 file changed, 19 insertions(+), 31 deletions(-)

diff --git a/drivers/net/phy/fixed_phy.c b/drivers/net/phy/fixed_phy.c
index eae513b70..0e1b28f06 100644
--- a/drivers/net/phy/fixed_phy.c
+++ b/drivers/net/phy/fixed_phy.c
@@ -23,11 +23,6 @@
 
 #include "swphy.h"
 
-struct fixed_mdio_bus {
-	struct mii_bus *mii_bus;
-	struct list_head phys;
-};
-
 struct fixed_phy {
 	int addr;
 	struct phy_device *phydev;
@@ -36,16 +31,14 @@ struct fixed_phy {
 	struct list_head node;
 };
 
-static struct fixed_mdio_bus platform_fmb = {
-	.phys = LIST_HEAD_INIT(platform_fmb.phys),
-};
+static struct mii_bus *fmb_mii_bus;
+static LIST_HEAD(fmb_phys);
 
 static struct fixed_phy *fixed_phy_find(int addr)
 {
-	struct fixed_mdio_bus *fmb = &platform_fmb;
 	struct fixed_phy *fp;
 
-	list_for_each_entry(fp, &fmb->phys, node) {
+	list_for_each_entry(fp, &fmb_phys, node) {
 		if (fp->addr == addr)
 			return fp;
 	}
@@ -119,9 +112,8 @@ EXPORT_SYMBOL_GPL(fixed_phy_set_link_update);
 static int __fixed_phy_add(int phy_addr,
 			   const struct fixed_phy_status *status)
 {
-	int ret;
-	struct fixed_mdio_bus *fmb = &platform_fmb;
 	struct fixed_phy *fp;
+	int ret;
 
 	ret = swphy_validate_state(status);
 	if (ret < 0)
@@ -134,7 +126,7 @@ static int __fixed_phy_add(int phy_addr,
 	fp->addr = phy_addr;
 	fp->status = *status;
 
-	list_add_tail(&fp->node, &fmb->phys);
+	list_add_tail(&fp->node, &fmb_phys);
 
 	return 0;
 }
@@ -163,12 +155,11 @@ static void fixed_phy_del(int phy_addr)
 struct phy_device *fixed_phy_register(const struct fixed_phy_status *status,
 				      struct device_node *np)
 {
-	struct fixed_mdio_bus *fmb = &platform_fmb;
 	struct phy_device *phy;
 	int phy_addr;
 	int ret;
 
-	if (!fmb->mii_bus || fmb->mii_bus->state != MDIOBUS_REGISTERED)
+	if (!fmb_mii_bus || fmb_mii_bus->state != MDIOBUS_REGISTERED)
 		return ERR_PTR(-EPROBE_DEFER);
 
 	/* Get the next available PHY address, up to PHY_MAX_ADDR */
@@ -182,7 +173,7 @@ struct phy_device *fixed_phy_register(const struct fixed_phy_status *status,
 		return ERR_PTR(ret);
 	}
 
-	phy = get_phy_device(fmb->mii_bus, phy_addr, false);
+	phy = get_phy_device(fmb_mii_bus, phy_addr, false);
 	if (IS_ERR(phy)) {
 		fixed_phy_del(phy_addr);
 		return ERR_PTR(-EINVAL);
@@ -247,41 +238,38 @@ EXPORT_SYMBOL_GPL(fixed_phy_unregister);
 
 static int __init fixed_mdio_bus_init(void)
 {
-	struct fixed_mdio_bus *fmb = &platform_fmb;
 	int ret;
 
-	fmb->mii_bus = mdiobus_alloc();
-	if (!fmb->mii_bus)
+	fmb_mii_bus = mdiobus_alloc();
+	if (!fmb_mii_bus)
 		return -ENOMEM;
 
-	snprintf(fmb->mii_bus->id, MII_BUS_ID_SIZE, "fixed-0");
-	fmb->mii_bus->name = "Fixed MDIO Bus";
-	fmb->mii_bus->priv = fmb;
-	fmb->mii_bus->read = &fixed_mdio_read;
-	fmb->mii_bus->write = &fixed_mdio_write;
-	fmb->mii_bus->phy_mask = ~0;
+	snprintf(fmb_mii_bus->id, MII_BUS_ID_SIZE, "fixed-0");
+	fmb_mii_bus->name = "Fixed MDIO Bus";
+	fmb_mii_bus->read = &fixed_mdio_read;
+	fmb_mii_bus->write = &fixed_mdio_write;
+	fmb_mii_bus->phy_mask = ~0;
 
-	ret = mdiobus_register(fmb->mii_bus);
+	ret = mdiobus_register(fmb_mii_bus);
 	if (ret)
 		goto err_mdiobus_alloc;
 
 	return 0;
 
 err_mdiobus_alloc:
-	mdiobus_free(fmb->mii_bus);
+	mdiobus_free(fmb_mii_bus);
 	return ret;
 }
 module_init(fixed_mdio_bus_init);
 
 static void __exit fixed_mdio_bus_exit(void)
 {
-	struct fixed_mdio_bus *fmb = &platform_fmb;
 	struct fixed_phy *fp, *tmp;
 
-	mdiobus_unregister(fmb->mii_bus);
-	mdiobus_free(fmb->mii_bus);
+	mdiobus_unregister(fmb_mii_bus);
+	mdiobus_free(fmb_mii_bus);
 
-	list_for_each_entry_safe(fp, tmp, &fmb->phys, node) {
+	list_for_each_entry_safe(fp, tmp, &fmb_phys, node) {
 		list_del(&fp->node);
 		kfree(fp);
 	}
-- 
2.51.0



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

* Re: [PATCH net-next 0/4] net: phy: fixed_phy: improvements
  2025-09-06 21:59 [PATCH net-next 0/4] net: phy: fixed_phy: improvements Heiner Kallweit
                   ` (3 preceding siblings ...)
  2025-09-06 22:02 ` [PATCH net-next 4/4] net: phy: fixed_phy: remove struct fixed_mdio_bus Heiner Kallweit
@ 2025-09-10  1:30 ` patchwork-bot+netdevbpf
  4 siblings, 0 replies; 6+ messages in thread
From: patchwork-bot+netdevbpf @ 2025-09-10  1:30 UTC (permalink / raw)
  To: Heiner Kallweit
  Cc: andrew, andrew+netdev, linux, kuba, pabeni, edumazet, davem,
	netdev

Hello:

This series was applied to netdev/net-next.git (main)
by Jakub Kicinski <kuba@kernel.org>:

On Sat, 6 Sep 2025 23:59:18 +0200 you wrote:
> This series contains a number of improvements.
> No functional change intended.
> 
> Heiner Kallweit (4):
>   net: phy: fixed_phy: remove unused interrupt support
>   net: phy: fixed_phy: remove member no_carrier from struct fixed_phy
>   net: phy: fixed_phy: add helper fixed_phy_find
>   net: phy: fixed_phy: remove struct fixed_mdio_bus
> 
> [...]

Here is the summary with links:
  - [net-next,1/4] net: phy: fixed_phy: remove unused interrupt support
    https://git.kernel.org/netdev/net-next/c/fecf7087f0a3
  - [net-next,2/4] net: phy: fixed_phy: remove member no_carrier from struct fixed_phy
    https://git.kernel.org/netdev/net-next/c/0625b3bfbb7f
  - [net-next,3/4] net: phy: fixed_phy: add helper fixed_phy_find
    https://git.kernel.org/netdev/net-next/c/f8db55c8eb8e
  - [net-next,4/4] net: phy: fixed_phy: remove struct fixed_mdio_bus
    https://git.kernel.org/netdev/net-next/c/298382557935

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] 6+ messages in thread

end of thread, other threads:[~2025-09-10  1:30 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-09-06 21:59 [PATCH net-next 0/4] net: phy: fixed_phy: improvements Heiner Kallweit
2025-09-06 22:00 ` [PATCH net-next 1/4] net: phy: fixed_phy: remove unused interrupt support Heiner Kallweit
2025-09-06 22:01 ` [PATCH net-next 2/4] net: phy: fixed_phy: remove member no_carrier from struct fixed_phy Heiner Kallweit
2025-09-06 22:01 ` [PATCH net-next 3/4] net: phy: fixed_phy: add helper fixed_phy_find Heiner Kallweit
2025-09-06 22:02 ` [PATCH net-next 4/4] net: phy: fixed_phy: remove struct fixed_mdio_bus Heiner Kallweit
2025-09-10  1:30 ` [PATCH net-next 0/4] net: phy: fixed_phy: improvements patchwork-bot+netdevbpf

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).