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