Message ID | 20231221180047.1924733-3-maxime.chevallier@bootlin.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Introduce PHY listing and link_topology tracking | expand |
On Thu, Dec 21, 2023 at 07:00:35PM +0100, Maxime Chevallier wrote: > Pass the phy_device as a parameter to the sfp upstream .disconnect_phy > operation. This is preparatory work to help track phy devices across > a net_device's link. > > Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com> > --- > V5: No changes > V4: No changes > V3: No changes > > drivers/net/phy/phy_device.c | 8 ++++++++ > drivers/net/phy/phylink.c | 3 ++- > drivers/net/phy/sfp-bus.c | 4 ++-- > include/linux/sfp.h | 2 +- > 4 files changed, 13 insertions(+), 4 deletions(-) > > diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c > index d7c0812bd107..aad78e3f7894 100644 > --- a/drivers/net/phy/phy_device.c > +++ b/drivers/net/phy/phy_device.c > @@ -266,6 +266,14 @@ static void phy_mdio_device_remove(struct mdio_device *mdiodev) > > static struct phy_driver genphy_driver; > > +static struct phy_link_topology *phy_get_link_topology(struct phy_device *phydev) > +{ > + if (phydev->attached_dev) > + return &phydev->attached_dev->link_topo; > + > + return NULL; > +} > + > static LIST_HEAD(phy_fixup_list); > static DEFINE_MUTEX(phy_fixup_lock); > This should be in a different patch, it seems unrelated to the remainder of this patch, and as it's static and no other changes to this file, this would cause a build warning.
Hi Russell, On Wed, 3 Jan 2024 15:20:25 +0000 "Russell King (Oracle)" <linux@armlinux.org.uk> wrote: > On Thu, Dec 21, 2023 at 07:00:35PM +0100, Maxime Chevallier wrote: > > Pass the phy_device as a parameter to the sfp upstream .disconnect_phy > > operation. This is preparatory work to help track phy devices across > > a net_device's link. > > > > Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com> > > --- > > V5: No changes > > V4: No changes > > V3: No changes > > > > drivers/net/phy/phy_device.c | 8 ++++++++ > > drivers/net/phy/phylink.c | 3 ++- > > drivers/net/phy/sfp-bus.c | 4 ++-- > > include/linux/sfp.h | 2 +- > > 4 files changed, 13 insertions(+), 4 deletions(-) > > > > diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c > > index d7c0812bd107..aad78e3f7894 100644 > > --- a/drivers/net/phy/phy_device.c > > +++ b/drivers/net/phy/phy_device.c > > @@ -266,6 +266,14 @@ static void phy_mdio_device_remove(struct mdio_device *mdiodev) > > > > static struct phy_driver genphy_driver; > > > > +static struct phy_link_topology *phy_get_link_topology(struct phy_device *phydev) > > +{ > > + if (phydev->attached_dev) > > + return &phydev->attached_dev->link_topo; > > + > > + return NULL; > > +} > > + > > static LIST_HEAD(phy_fixup_list); > > static DEFINE_MUTEX(phy_fixup_lock); > > > > This should be in a different patch, it seems unrelated to the remainder > of this patch, and as it's static and no other changes to this file, > this would cause a build warning. Arg looks like I squashed that bit here to the wrong commit while rebasing, it should have been part of commit 03/13 indeed... Sorry for the hiccup. Maxime
diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c index d7c0812bd107..aad78e3f7894 100644 --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c @@ -266,6 +266,14 @@ static void phy_mdio_device_remove(struct mdio_device *mdiodev) static struct phy_driver genphy_driver; +static struct phy_link_topology *phy_get_link_topology(struct phy_device *phydev) +{ + if (phydev->attached_dev) + return &phydev->attached_dev->link_topo; + + return NULL; +} + static LIST_HEAD(phy_fixup_list); static DEFINE_MUTEX(phy_fixup_lock); diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c index 298dfd6982a5..3d25a4a6212b 100644 --- a/drivers/net/phy/phylink.c +++ b/drivers/net/phy/phylink.c @@ -3319,7 +3319,8 @@ static int phylink_sfp_connect_phy(void *upstream, struct phy_device *phy) return ret; } -static void phylink_sfp_disconnect_phy(void *upstream) +static void phylink_sfp_disconnect_phy(void *upstream, + struct phy_device *phydev) { phylink_disconnect_phy(upstream); } diff --git a/drivers/net/phy/sfp-bus.c b/drivers/net/phy/sfp-bus.c index 6fa679b36290..3a86c41e1235 100644 --- a/drivers/net/phy/sfp-bus.c +++ b/drivers/net/phy/sfp-bus.c @@ -486,7 +486,7 @@ static void sfp_unregister_bus(struct sfp_bus *bus) bus->socket_ops->stop(bus->sfp); bus->socket_ops->detach(bus->sfp); if (bus->phydev && ops && ops->disconnect_phy) - ops->disconnect_phy(bus->upstream); + ops->disconnect_phy(bus->upstream, bus->phydev); } bus->registered = false; } @@ -742,7 +742,7 @@ void sfp_remove_phy(struct sfp_bus *bus) const struct sfp_upstream_ops *ops = sfp_get_upstream_ops(bus); if (ops && ops->disconnect_phy) - ops->disconnect_phy(bus->upstream); + ops->disconnect_phy(bus->upstream, bus->phydev); bus->phydev = NULL; } EXPORT_SYMBOL_GPL(sfp_remove_phy); diff --git a/include/linux/sfp.h b/include/linux/sfp.h index 9346cd44814d..0573e53b0c11 100644 --- a/include/linux/sfp.h +++ b/include/linux/sfp.h @@ -544,7 +544,7 @@ struct sfp_upstream_ops { void (*link_down)(void *priv); void (*link_up)(void *priv); int (*connect_phy)(void *priv, struct phy_device *); - void (*disconnect_phy)(void *priv); + void (*disconnect_phy)(void *priv, struct phy_device *); }; #if IS_ENABLED(CONFIG_SFP)
Pass the phy_device as a parameter to the sfp upstream .disconnect_phy operation. This is preparatory work to help track phy devices across a net_device's link. Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com> --- V5: No changes V4: No changes V3: No changes drivers/net/phy/phy_device.c | 8 ++++++++ drivers/net/phy/phylink.c | 3 ++- drivers/net/phy/sfp-bus.c | 4 ++-- include/linux/sfp.h | 2 +- 4 files changed, 13 insertions(+), 4 deletions(-)